7 questions pour comprendre la dernière vulnérabilité Drupal CVE-2019-6340

Le 20 février, les auteurs du CMS Drupal ont annoncé la publication d’une nouvelle version de Drupal 7 et 8 afin de corriger une vulnérabilité critique. La mise à jour a été publiée le lendemain afin de corriger la faille référencée CVE-2019-6340. Celle-ci permet à un attaquant distant de prendre le contrôle du serveur sous-jacent sans authentification préalable.

Qu’en est-il vraiment ? Nous vous proposons de répondre à cela en 7 questions pour mieux comprendre cette faille, et son exploitation.

 

Mise à jour du 25/02/2019 :

L’article a été mis à jour suite à la publication d’une preuve de concept par des chercheurs d’Ambionics. La publication dévoile également que la vulnérabilité peut être exploitée via les requêtes HTTP de type GET en plus de PUT, PATCH, et POST.

Mise à jour du 26/02/2019 :

De premières attaques ont été observées par Imperva.

 

 

1. Qu’est-ce que Drupal ?

Drupal est un système de gestion de contenu (CMS) sous licence libre créé en 1999 et développé en PHP. Celui-ci permet de créer facilement un site web grâce à un gestionnaire de thème, un panneau d’administration ainsi que de nombreuses fonctionnalités. Drupal est principalement utilisé pour générer des sites vitrine d’entreprises et des blogs.

Drupal est le 3ème CMS le plus populaire (4,5% de parts de marché en 2017), et l’un des plus utilisés par les entreprises pour la réalisation de leurs sites institutionnels.

classement-cms-2-612x329-2

source : Blog Du Modérateur

2. Quelle est la vulnérabilité et quels sont ses impacts ?

Découverte par l’équipe Sécurité de Drupal, la vulnérabilité référencée CVE-2019-6340 (SA-CORE-2019-003) provient d’un défaut de traitement des paramètres soumis par l’utilisateur à destination :

  • Du module RESTful Web Services de Drupal 8 (via l’envoi de requêtes HTTP PUT, PATCH, POST et GET;
  • D’un module tiers additionnel tel que JSON:API sous Drupal 8 ;
  • Ou du module RESTful Web Services sous Drupal 7.

 

CVE-2019-6340 drupal rce

Aperçu du bulletin de sécurité Drupal

D’après l’équipe sécurité de Drupal, l’exploitation de la faille permet à un attaquant de forcer le serveur à exécuter du code PHP arbitraire afin de prendre le contrôle de l’application et du système sous-jacent.

L’analyse de risque établie par Drupal est la suivante :

  • Complexité d’accès : est-il difficile pour l’attaquant de tirer parti de la vulnérabilité ?
    • Aucune (visite de la page par l’utilisateur)
  • Authentification : quel niveau de privilège est requis pour qu’un exploit réussisse ?
    • Aucune (tous/utilisateurs anonymes)
  • Impact sur la confidentialité: cette vulnérabilité rend-elle les données non publiques accessibles ?
    • Toutes les données non publiques sont accessibles
  • Impact sur l’intégrité : cet exploit peut-il compromettre les données du système (ou celles traitées par le système) ?
    • Toutes les données peuvent être modifiées ou supprimées
  • Impact Zero-Day: un exploit connu existe-t-il ?
    • Théorique ou white-hat (aucun code d’exploitation public ou documentation sur le développement n’existe)
  • Répartition des systèmes affectés : quel pourcentage d’utilisateurs sont affectés ?
    • Seules les configurations inhabituelles sont exploitables

 

calcul-risque-drupal-rce

Aperçu du calcul du score de risque de la vulnérabilité par Drupal

 

À la vue du correctif particulièrement long, la cause de la vulnérabilité est relativement complexe et technique (patch 24b3fae89eab2b3951f17f80a02e19d9a24750f5 modifiant 51 fichiers, pour 625 ajouts et 156 suppression de lignes). La création du correctif à d’ailleurs mobilisé 24 personnes, il est ainsi probable que ces derniers aient pris le temps de s’assurer que la correction apportée n’aurait pas d’effet de bord non escompté avant la publication de la faille.

D’après une analyse succincte du correctif, la vulnérabilité semble liée à un problème désérialisation au sein de la classe FieldItemNormalizer de l’API REST. Celle-ci fait désormais appel à la méthode checkForSerializedStrings() permettant une meilleure gestion des chaînes sérialisées. Le correctif indique assez clairement le vecteur d’exploitation : il suffit à un attaquant d’envoyer une propriété sérialisée via une requête REST.

 

 

3. La faille est-elle facilement exploitable ? Des codes d’exploitation sont-ils disponibles ?

D’après  l’analyse de la vulnérabilité faite par Drupal, les prérequis techniques à l’exploitation de la faille semblent relativement simples (envoi d’une requête HTTP spécialement conçue). Il suffirait d’envoyer une requête PUT/PATCH/POST/GET à destination de l’API REST d’un site affecté et en utilisant l’un des modules vulnérables.

Une preuve de concept a été publiée le 22/02/2019 par des chercheurs d’Ambionics. Celle-ci permet à un attaquant d’exécuter la commande ID sur le système via l’exploitation de l’API /node/{id} activée par défaut au sein du module REST. Un code d’exploitation pourrait aisément être développé à partir de celle-ci.

 

 

4. Suis-je affecté par la vulnérabilité ?

Vous êtes affectés par la vulnérabilité si votre application Drupal est sous l’une des versions suivantes :

  • Drupal 8.5.x < 8.5.11
  • Drupal 8.6.x < 8.6.10
  • Drupal 7.x : Core non affecté, mais des modules sont vulnérables (voir liste ci-dessous)

Par ailleurs, pour Drupal 7 et 8, les modules suivants sont vulnérables et on fait l’objet de correctifs :

  • RESTful Web Services < 2.8 (Drupal 7.x)
  • Link < 1.6 (Drupal 7.x)
  • JSON:API 1.x < 1.25 et 2.x < 2.3  (Drupal 8.x)
  • Metatag < 1.8 (Drupal 8.x)
  • Video < 1.4 (Drupal 8.x)
  • Paragraphs < 1.6 (Drupal 8.x)
  • Translation Management Tool < 1.7 (Drupal 8.x)
  • Font Awesome Icons < 2.12 (Drupal 8.x)

 

5. Des attaques ont-elles été perpétrées ?

Mise à jour du 26/02/2019 :

De premières attaques ayant notamment pour effet l’installation de mineurs de crypto-monnaies (CoinIMP) ont été observées par des chercheurs d’Imperva.

 

 

6. Comment se protéger contre l’exploitation de cette faille ?

Afin de se protéger de la vulnérabilité, il faut mettre à jour Drupal vers les versions suivantes (ou ultérieures) :

  • Drupal 8.5.11
  • Drupal 8.6.10

Nous vous conseillons de mettre à jour votre site Drupal via l’utilitaire de mise à jour inclus au sein de la console d’administration de votre site, ou en téléchargeant le correctif disponible à l’adresse suivante : https://www.drupal.org/project/drupal/releases/

Concernant spécifiquement l’utilisation de modules additionnels, nous vous conseillons également de les mettre à jour :

  • Drupal 7
    • RESTful Web Services 2.8
    • Link 1.6
  • Drupal 8
    • JSON:API 1.25 et 2.3
    • Metatag 1.8
    • Video 1.4
    • Paragraphs 1.6
    • Translation Management Tool 1.7
    • Font Awesome Icons 2.12

Par ailleurs, la seule solution de contournement consiste à désactiver tous les modules impactés;

 

7. Dois-je appliquer les correctifs en urgence ?

Si votre version est affectée, oui. Cette vulnérabilité est critique, simple à exploiter et peut impacter directement l’image de votre entreprise. De plus, son exploitation ouvre potentiellement une porte sur votre système d’information.

Si ce n’est pas possible dans des délais courts, nous vous recommandons de mettre en place les solutions de contournement énoncées ci-dessus.


Sources :

Adrien Guinault

Découvrir d'autres articles