Découverte d’une nouvelle faille dans Struts 2
A l’heure du premier anniversaire du désormais célèbre hack de l’Equifax (Août 2017), des chercheurs de Semmle Security ont annoncé avoir découvert une nouvelle faille permettant l’exécution de commandes à distance dans Apache Struts 2.
Il faut savoir qu’Apache Struts 2 est l’un des frameworks open source les plus utilisés par les développeurs pour créer des applications Web (notamment les portails Web). Les vulnérabilités des projets Apache Struts peuvent donc avoir des effets considérables et un impact significatif sur les utilisateurs.
Selon les rapports, cette dernière vulnérabilité, répertoriée sous le nom de CVE-2018-11776, a été découverte en avril dernier et a été depuis transmise à l’équipe Apache pour analyse et création d’un correctif. Celui-ci est prêt et peut être appliqué dès maintenant en mettant à niveau Struts soit dans la version 2.3.35, soit dans la version 2.5.17.
Contenu
De quoi s’agit-il exactement ?
La faille concerne les versions d’Apache Struts allant de la v2.3 à la v2.3.34 et de la v2.5 à la v2.5.16.
Elle permet une exécution de commandes à distance lorsque Struts utilise des actions ne comportant aucun namespace et en même temps, que ses actions suivantes n’ont soit pas de namespace soit un namespace générique (par exemple /*).
Pour rappel, un namespace dans Struts est un groupe d’actions. 2 actions ayant le même nom peuvent exister dans 2 namespace différents et avoir un comportement différent.
Quand Struts n’arrive pas à identifier de namespace pour une action, Struts va utiliser un namespace spécifié par l’utilisateur et le considère comme une expression OGNL, ce qui permet à un potentiel attaquant d’employer du code ou des commandes d’exécution à distance sur le serveur web.
Une expression OGNL est un open source expression langage pour Java qui permet à l’aide d’expressions simples d’exécuter des méthodes ou de récupérer et changer des attributs de classes java.
Par exemple : ${3+3} // renvoie le nombre 6
On peut donc directement faire exécuter une portion de code qui sera considérée comme une expression OGNL et qui sera exécutée par le serveur.
Plus critique que la vulnérabilité de l’Equifax
Cette nouvelle faille affecte tous les utilisateurs et développeurs d’Apache Struts 2, ce qui, selon certaines estimations, équivaut à environ 65% des sociétés du Fortune 100 et à des dizaines de milliers d’autres dans le monde.
Quand on sait que la vulnérabilité de l’Equifax avait conduit au vol de données de 148 millions de clients, cette nouvelle faille, qualifiée comme plus critique que celle de l’année dernière, peut avoir des conséquences qui font froid dans le dos.
Il est d’ailleurs important de rappeler à propos du vol de données de l’Equifax que la faille avait pourtant été détectée et rendue publique plusieurs mois auparavant, cependant, celle-ci n’avait pas été corrigée par les équipes informatiques d’Equifax car les systèmes internes n’avaient pas détecté de faille.
Les produits open source, un facteur multiplicateur de force pour les pirates :
Les vulnérabilités des produits open source sont depuis longtemps une cible de choix pour les pirates informatiques, car une seule faille dans un projet populaire peut entraîner très facilement des milliers de violations. De plus, étant donné que lorsqu’une faille est découverte, les informations concernant la vulnérabilité et la façon de l’exploiter sont largement diffusées, les pirates accèdent également à ces informations et donc plus les sociétés prennent du temps pour corriger leur système, plus le risque d’être devancé par un pirate augmente.
Par ailleurs, s’ajoute à cela le manque de suivi des ressources utilisées dans un projet, ce qui peut s’avérer fatal si un composant présentant une faille majeure est inclus dans un produit. Et même lorsqu’un contrôle est mis en place au moment de la mise en production, il n’est pas rare qu’une faille dans un composant soit découverte ultérieurement et que l’on ne sache pas exactement la liste de tous les produits à corriger car détenteur de la version vulnérable du composant.
Les bonnes pratiques à mettre en œuvre pour éviter que l’histoire ne se répète…
Afin de s’assurer une relative tranquillité contre les menaces extérieures, il suffirait donc pour une société qui utilise des composants extérieurs dans ses projets de suivre les bonnes pratiques suivantes :
• S’abonner et surveiller attentivement les bulletins d’alertes de failles émis par l’éditeur du produit et les sites spécialisés comme par exemple le site CERT-FR (https://www.cert.ssi.gouv.fr/)
• Tenir un inventaire précis (et le maintenir à jour) de l’ensemble des composants utilisés dans les projets par les équipes de développement.
• Et bien entendu, faire d’une priorité maximale l’application de tout correctif
Cela parait basique mais dans les faits, pour diverses raisons (manque de temps, organisation interne complexe, turnover dans les équipes, complexité du SI) cela n’est pas souvent appliqué.
Espérons que cette nouvelle faille découverte dans Struts 2 n’aura pas des conséquences équivalentes ou pire que la précédente. Seul l’avenir nous le dira.
Sources :
https://www.cert.ssi.gouv.fr/alerte/CERTFR-2018-ALE-010/
https://www.secjuice.com/apache-struts2-cve-2018-11776/
https://jaxenter.com/new-vulnerability-discovered-apache-struts-148646.html
https://www.synopsys.com/blogs/software-security/cve-2018-11776-apache-struts-vulnerability/