Une vulnérabilité critique découverte au sein du gestionnaire de contenu Drupal

Date de publication :

Samuel Mortenson, de l'équipe de sécurité de Drupal, a publié un bulletin de sécurité corrigeant une vulnérabilité considérée comme hautement critique. Un attaquant pourrait l’exploiter afin d’exécuter du code arbitraire à distance sur la plateforme web de gestion de contenu Drupal. Cette vulnérabilité serait facile à mettre en œuvre nécessitant d’avoir accès à une plateforme possédant les mauvaises versions ou modules. L'impact estimé sur la confidentialité et l'intégrité des données est très élevé.

Drupal est un système de gestion de contenu (CMS) libre et open-source distribué sous la licence publique générale GNU, et écrit en PHP. C’est d’ailleurs dans ce langage que l’exploitation de la vulnérabilité est faite. Sur Drupal, le contenu est en effet stocké dans un grand nombre de bases de données hiérarchisées permettant de réécrire facilement le contenu que l’on souhaite modifier.

Cependant, la vulnérabilité se base sur un assainissement incorrect des données dans les différentes bases, permettant ainsi d’y injecter du code PHP. En effet, il n’est pas rare de trouver des données inutilisables sur lesquelles on peut écrire. La vulnérabilité découverte par l’équipe de sécurité de Drupal, n’a pas recensé de cas d’exploitation réel.

Détails techniques :

  • CVE-2019-6340 [CVSS v3 8.1] Le niveau de connaissance pour exploiter cette vulnérabilité se limite à la compréhension du langage PHP que l’on souhaite injecter.

Le langage PHP est un langage script côté serveur, une injection permet à un attaquant de réaliser des opérations sur des fichiers ou des bases de données. L’exploitation de cette vulnérabilité se fait à distance et ne nécessite aucune interaction avec un utilisateur ni aucun privilège.

La version 8 de Drupal est vulnérable dans 2 scénarios :

  1. Si elle utilise le module RESTful Web Services et permet d’utiliser les requêtes PATCH PUT et POST
  2. Si l’application utilise le module web JSON:API

Pour la version 7, il n’y a pas de mise à jour globale de Drupal seulement la mise à jour de quelques modules.

Du fait de leur criticité, les utilisateurs sont invités à appliquer les mises à jour le plus rapidement possible. 

Informations

La faille est activement exploitée :

Un correctif existe :

Une mesure de contournement existe :

Risques

Risques

  • Exécution de code arbitraire

Criticité

  • Score CVSS : 8.10

Existence d’un code d’exploitation de la vulnérabilité

  • Aucun code d’exploitation n’est disponible.

Composants & versions vulnérables

  • Les versions 8.5.x avant la version 8.5.11
  • Les versions 8.6.x avant la version 8.6.10

CVE

  • CVE 2019-6340

Solutions ou recommandations

Mise en place de correctif de sécurité

  • Des correctifs ont été publiés par Drupal et sont disponibles au téléchargement depuis le 20/02/2019.

Solution de contournement

  • Pour contourner le problème, on peut désactiver tous les services web ou alors interdire seulement les requêtes PUT – PATCH – POST sur les serveurs locaux. Cela a pour conséquences de pouvoir affecter la disponibilité d’autres services utilisant Internet. Sur Drupal 8, pour accéder aux ressources il suffit d’ajouter le préfixe index.php/ aux chemins. Il est à noter que pour Drupal 7, les ressources restent disponibles par l'intermédiaire des chemins utilisant les requêtes d’arguments « q ».