Tentatives d'exploitation observées de la vulnérabilité de Struts 2 S2-066 (CVE-2023-50164)
Introduction
Apache Struts est un cadre puissant d'applications Web open source utilisé par les entreprises et les organisations du monde entier. Apache Struts est devenu une cible de choix pour les pirates en raison de sa popularité. Lorsqu'une vulnérabilité critique d'exécution de code à distance (RCE) est annoncée, les équipes informatiques et chargées de la sécurité doivent prendre des mesures immédiates pour protéger leurs systèmes.
Le 7 décembre 2023 a été publiée la CVE-2023-50164. Cette vulnérabilité permet à un attaquant de manipuler les paramètres de téléchargement de fichiers pour permettre le Path Traversal et le téléchargement d'un fichier malveillant. Il est ensuite possible que l'attaquant prenne le contrôle complet du système.
Le 11 décembre, les premières exploitations de version de démonstration (PoC) ont été publiées et largement diffusées. Des tentatives d'exploitation ont suivi peu de temps après, le 12 décembre (Figure 1).
À propos de la CVE
La CVE-2023-50164 représente une vulnérabilité critique découverte dans Apache Struts 2, un cadre open source largement utilisé pour le développement et la construction d'applications Web Java EE. Apache Struts, réputé pour sa robustesse et sa flexibilité, joue un rôle important dans l'architecture de nombreux projets Web commerciaux et open source. La vulnérabilité devient un sujet de préoccupation majeur dans divers secteurs, y compris des secteurs essentiels tels que la finance, la santé et les services gouvernementaux.
Le problème central de la CVE-2023-50164 réside dans son potentiel pour la chaîne RCE à travers une faille de Path Traversal. Plus précisément, il exploite la façon dont le cadre Apache Struts gère les téléchargements de fichiers. En manipulant les paramètres de téléchargement de fichiers, un attaquant peut traverser efficacement la structure de répertoires du serveur Web sans autorisation.
Ce Path Traversal permet de placer des fichiers malveillants, généralement des shells Web basés sur les JavaServer Pages (JSP), dans des répertoires ou des emplacements qui ne sont pas prévus à l'origine pour le contenu des fichiers téléchargés par l'utilisateur, ni accessibles à celui-ci. L'exploitation dépend de la capacité à contourner les mécanismes de sécurité côté serveur d'une manière qui n'était pas prévue par les développeurs d'applications.
Le processus d'attaque
Le processus d'attaque est le suivant :
1. L'attaquant effectue d'abord une reconnaissance et identifie un site Web ou une application Web qui utilise une version vulnérable d'Apache Struts et le chemin d'accès à l'URL de téléchargement du fichier.
2. L'attaquant prépare un fichier malveillant, généralement un fichier JSP ou un shell Web.
3. L'attaquant crée ensuite une requête spéciale pour télécharger le fichier. Cette requête inclut des données manipulées, telles que le nom et le chemin du fichier, manipulant ainsi les paramètres de téléchargement du fichier.
4. Dans la requête de téléchargement mentionnée à l'étape 3, l'attaquant inclut des commandes système qui exploitent la vulnérabilité de traversée de chemin. Ces commandes indiquent au serveur de placer le fichier en dehors du répertoire de téléchargement normal. Il s'agit de l'étape Path Traversal.
5. L'attaquant envoie la requête de téléchargement au serveur exécutant les versions vulnérables d'Apache Struts. Si cela réussit, le serveur enregistre le fichier malveillant ou le code encoquillé (Web shells) dans un emplacement ou un répertoire où il peut être exécuté.
6. L'attaquant accède ensuite au fichier malveillant téléchargé via un navigateur Web ou un script automatisé. L'accès à ce fichier déclenche l'exécution du code malveillant ou le Web shell sur le serveur Web.
7. Une fois le code exécuté à l'étape 6, l'attaquant peut effectuer des actions supplémentaires sur le serveur. Cela pourrait aller du vol de données sensibles, de la modification du contenu du site Web, à la prise de contrôle totale du serveur Web.
8. Selon les intentions ou les motivations de l'attaquant, il pourrait conserver un accès secret pour une exploitation future ou utiliser le serveur compromis pour lancer d'autres attaques.
Les implications
Les implications de la CVE-2023-50164 sont de grande portée. Les vulnérabilités RCE sont parmi les menaces les plus graves et les plus critiques dans les applications Web, car elles permettent aux attaquants d'exécuter des commandes arbitraires sur un serveur affecté. Cela pourrait conduire à un accès non autorisé, à un vol de données et, potentiellement, à une compromission complète du système.
L'intégration généralisée d'Apache Struts amplifie ces risques, faisant de la CVE-2023-50164 une question prioritaire pour les organisations du monde entier.
Tentatives d'exploitation observées
Le 12 décembre, un jour après que l'exploitation de PoC soit devenu largement disponible, nous avons commencé à voir des tentatives d'exploitation similaires à l'exploitation PoC publiée (Figure 2). Bien que ces tentatives d'attaque soient réelles, il est peu probable qu'elles aboutissent. Pour que l'attaque réussisse, le point final ciblé doit posséder une fonctionnalité de téléchargement de fichiers.
En plus de l'analyse de PoC attendue, nous avons commencé à voir des requêtes qui cherchent à exploiter cette vulnérabilité qui ne correspondent pas au PoC publié. Cette variante cible le chemin /s2/upload.action plutôt que /login.action d'origine (Figure 2). Fait intéressant, le nom de paramètre « fileFileName » est utilisé pour inclure le Path Traversal qui diffère de l'original « uploadFileName ».
Il n'est pas clair si ces points de terminaison disposent d'une fonctionnalité de téléchargement de fichiers. Nous voyons la même variante : deux tentatives d'exploitation à partir d'un groupe d'adresses IP ciblant de nombreux clients différents.
L’équipe Security Intelligence Group d'Akamai continuera d'analyser notre pare-feu d'applications Web (WAF) enregistre les nouvelles variantes et mettra à jour cette section du blog avec toute nouvelle information.
Atténuation avec App & API Protector
Les clients qui utilisent Akamai Adaptive Security Engine en mode automatique et possèdent le groupe « Attaque de plate-forme Web » en mode Deny sont automatiquement protégés contre ces attaques. Les clients qui utilisent Adaptive Security Engine en mode manuel doivent confirmer qu'ils ont le groupe « Attaque de plate-forme Web » ou la règle individuelle suivante en mode Deny (Figure 4) :
3000929- Attaque Path Traversal sur Apache Struts et téléchargement de fichiers Apache Struts détectée (CVE-2023-50164)
Synthèse
App & API Protector d'Akamai a réussi à atténuer ces tentatives d'attaque contre nos clients du secteur de la sécurité. En outre, nous n'avons pas été en mesure de déterminer de manière concluante si les points de terminaison ciblés possèdent réellement une fonctionnalité de téléchargement de fichiers ; par conséquent, nous n'avons pas observé d'actions post-exploitation ultérieures que les attaquants pourraient entreprendre après une attaque réussie.
Bien que la défense la plus efficace soit de mettre à jour rapidement le code source, nous reconnaissons l'immense effort que cela nécessite pour les équipes de sécurité d'identifier rapidement et de mettre à jour en toute sécurité les composants vulnérables. Ce défi est aggravé par le nombre toujours croissant d'applications et la nature dynamique de ces environnements.
La devise selon laquelle la sécurité se construit en couches peut sembler clichée, mais il est crucial d'envisager des méthodes complémentaires supplémentaires pour améliorer la sécurité globale. Les attaquants s'adaptent rapidement aux nouveaux POC publics, souvent dans les 24 heures, ce qui augmente considérablement le défi pour les défenseurs.
La mise en œuvre d'un évènement WAF, comme Akamai App & API Protector, peut servir de couche de défense supplémentaire, et offrir une protection contre les nouvelles CVE découverts et fournir un tampon de sécurité supplémentaire.