Le 6 avril 2017 Ambionics Security a découvert une vulnérabilité critique de type injection SQL, sur un module du CMS TYPO3 (lire l’article technique ici). Si ces notions vous paraissent relativement obscures, je vais déchiffrer la publication technique et en faire ressortir l’essentiel, à savoir les conséquences de ce type de vulnérabilité pour une entreprise et surtout comment s’en protéger !
Les modules des sites web, sources d’attaques !
TYPO3 est un système de gestion de contenu (en anglais CMS ou Content Management System) à l’instar de WordPress, Drupal ou encore Joomla pour les plus connus. Ces applications sont principalement utilisées pour déployer et gérer rapidement des sites web institutionnels. Leur particularité est de fonctionner avec une application principale autonome (le core) à laquelle il est possible d’adjoindre un nombre incalculable de modules complémentaires développés par l’éditeur ou par toute personne souhaitant ajouter une fonctionnalité au CMS concerné. Tous ces modules ont donc l’inconvénient d’élargir de manière très significative la surface d’attaque du CMS et de l’entreprise qui l’utilise pour son site web.
La vulnérabilité décrite concerne le module News de TYPO3 dont une des fonctions filtre incorrectement les données reçues d’une requête HTTP. Ces données mal filtrées sont utilisées dans une requête SQL, il sera alors possible à l’attaquant exploitant cette vulnérabilité, de modifier la requête SQL originelle et d’accéder à des données de la base du CMS normalement non accessibles.
Qu’est-ce qui intéresse un attaquant dans la base de données de TYPO3 ?
Un CMS dispose en général d’une interface d’administration pour gérer simplement le contenu. Pour TYPO3, il est possible d’y accéder avec un navigateur via l’URL /typo3. Une fois connecté, un utilisateur pourra simplement créer, modifier ou supprimer du contenu du site web. L’administrateur ou le contributeur se connecte avec un identifiant et un mot de passe. Ces deux informations sont stockées au niveau de la base de données. Voilà donc ce qui intéressera les attaquants.
Grâce à l’exploitation de la vulnérabilité d’injection SQL l’attaquant va donc obtenir l’ensemble des identifiants et des mots de passe associés des utilisateurs du CMS. La seule contrainte porte sur la sécurisation du mot de passe qui est stocké chiffré en base de données. L’attaquant devra prendre le temps de déchiffrer ces mots de passe. Le temps passé sera bien sûr d’autant plus limité que le mot de passe est trivial.
Une fois déchiffré l’attaquant se connectera alors à l’interface d’administration et aura tout le loisir de modifier visiblement ou discrètement tout ou partie du site web. Il aura en outre la possibilité d’aller plus loin dans son attaque en installant son propre module. Il aura accès au serveur et au système sous-jasent lui donnant potentiellement accès à d’autres informations pouvant le conduire à la compromission d’autres serveurs et finalement terminer, dans le pire des cas, sur le réseau interne de l’entreprise.
Les bonnes pratiques a adopter
En reprenant le scénario de l’attaque, nous pouvons tenter de mettre en place différentes mesures de sécurité préventives et ainsi éviter ce type de compromission totale ou partielle :
- Le CMS TYPO3 et les modules doivent être à jour, par conséquent chaque fois que l’éditeur publie une alerte de sécurité, le CMS et les modules concernés doivent être mis à jour.
- L’accès à l’interface d’administration doit être limité aux seules adresses IP des administrateurs et des contributeurs.
- Les mots de passe des comptes utilisateurs ne doivent pas être triviaux.
- Un WAF (Web Application Firewall) peut être mis en place afin d’augmenter la difficulté d’exploitation pour un attaquant voire de bloquer totalement l’attaque.
- Dans les tous cas il est recommandé de faire auditer son site web par des professionnels de l’évaluation offensive afin de détecter les vulnérabilités avant les attaquants.
Le nombre de vulnérabilités sur les applications web ne cesse d’augmenter, il devient donc très compliqué de suivre cette actualité et d’avoir un niveau de sécurité adapté. Nous avons vu les conséquences d’une vulnérabilité web critique mais aussi comment il était possible d’anticiper ce type de menace et ainsi limiter sa surface d’attaque. Ce suivi sera efficace uniquement sur la durée et donc en maintenant constamment un niveau de sécurité adéquat.