
Analyse pédagogique de la vulnérabilité RCE Apache Struts 2 CVE-2017-5638, y compris les détails de l'exploit, l'étude de cas Equifax et les mesures de prévention.
Apache Struts 2 est un framework d'application web open source pour développer des applications Java EE Web. Il s'agit de la deuxième génération du framework Struts, publiée pour la première fois le 10 octobre 2006. Le framework Struts est conçu de manière à aider à créer des applications web qui utilisent une architecture MVC.
Apache Struts est un framework largement utilisé ; en 2017, plus de 65 % des entreprises du Fortune 100 utilisaient le framework Apache Struts.
Explication de l'RCE Apache Struts
Explication de la vulnérabilité
Cette vulnérabilité a été publiée pour la première fois par NVD le 03/10/2017. Elle a reçu le niveau le plus élevé (score de base 10), soit Critique. Le principal facteur ayant conduit à ce score maximal est que les applications pouvaient être exploitées via le réseau avec une complexité minimale et un impact élevé sur l'intégrité et la disponibilité.
La vulnérabilité permettait à un attaquant d'exécuter une RCE (exécution de code à distance) sur l'application en introduisant des expressions Object Graph Navigation Library (OGNL) dans les en-têtes HTTP.
Les versions vulnérables du framework sont Apache Struts 2, versions 2 2.3.x antérieures à 2.3.32 et 2.5.x antérieures à 2.5.10.1.
.png)
Le code vulnérable se trouve dans l'analyseur Jakarta Multipart. Pour réaliser l'exploit, l'attaquant utilisait la vulnérabilité dans la fonction LocalizedTextUtil.findText qui interprétait le message fourni entre ${...} comme une expression Object Graph Navigation Library (OGNL). L'attaque pouvait alors utiliser ces expressions OGNL, qui à leur tour exécutaient des commandes système et pouvaient révéler le contenu de fichiers sensibles tels que /etc/password, /etc/shadow, donnant ainsi un contrôle total à l'attaquant. L'application renvoyait ensuite le résultat des commandes exécutées par l'attaquant, facilitant ainsi l'attaque.
L'image suivante montre la requête HTTP contenant l'expression OGNL, qui a permis aux attaquants d'exploiter la vulnérabilité.

En mars 2017, lorsque la vulnérabilité CVE-2017-5638 a été découverte pour la première fois dans le framework Apache Struts, la fondation Apache a publié un correctif. Cependant, Equifax n'a pas appliqué le correctif sur le système vulnérable, car les analyses effectuées pour détecter le système vulnérable n'ont pas fonctionné.
De mai à juillet 2017, les attaquants ont réussi à accéder à plusieurs bases de données d'Equifax, exposant ainsi les informations de millions de personnes. L'attaque a touché 143 millions de personnes et a également révélé les informations de carte de crédit de plus de 200 000 personnes.
Les attaquants ont pu poursuivre leurs attaques sans être remarqués pendant 76 jours.
L'entreprise a dépensé 1,4 milliard de dollars pour renforcer sa sécurité après cette importante fuite de données.