CVE-2023-50164 : Apache Struts2 File Upload Directory Traversal

TL ; DR


Remote



Authenticated


🚫


Default config


🚫


Source


🌍


 

Versions concernées


Apache Struts  

  • 2.0.0 à 2.5.32 
  • 6.0.0 à 6.3.0.1 

Informations


Détails 

En date du 7 décembre 2023 était publiée sur la mailing-list OSS-Security une notification concernant une vulnérabilité critique dans le framework Apache Struts. Les 12 et 13 décembre respectivement, un bulletin d’alerte du CISA et du CERT-FR a été publié. 

Apache Struts est un framework facilitant le développement d’application web Java utilisant l’architecture MVC (Modèle-Vue-Composant). Il compte parmi les frameworks les plus utilisés y compris dans des applications propriétaires.  

La vulnérabilité se situe dans la fonction de filtrage du paramètre filename de téléversement de fichiers de la classe ActionSupport. Cette faille permet d’exploiter une pollution de paramètres par manipulation de la casse, autorisant ainsi le transfert de fichiers vers un répertoire arbitraire. 

Ce type de vulnérabilité est critique car, dans le cas d’un framework de développement d’application web, cela permet l’envoi de webshell et donc permet l’exécution de commande à distance (RCE). 

 

Détection 

Cette vulnérabilité a d’ores et déjà été observée sur différents honeypots en se basant sur les preuves de concept publiées (ici ou ici). 

Cependant depuis le 12 décembre les règles Emerging Threats suivantes sont disponibles afin de détecter les tentatives d’exploitation génériques :  

 

2049667               ET WEB_SPECIFIC_APPS Apache Struts2 uploadFileName Directory Traversal Attempt (CVE-2023-50164) M1
2049668
ET WEB_SPECIFIC_APPS Apache Struts2 uploadFileName Directory Traversal Attempt (CVE-2023-50164) M2
2049669

ET WEB_SPECIFIC_APPS Apache Struts2 Possible uploadFileName Directory Traversal Attempt (CVE-2023-50164) – uploadFileName Parameter M1
2049670

ET WEB_SPECIFIC_APPS Apache Struts2 Possible uploadFileName Directory Traversal Attempt (CVE-2023-50164) – uploadFileName Parameter M2

 

Correction 

Les correctifs ont été mis à disposition dès le 7 décembre. Il s’agit des versions 6.3.0.2 et 2.5.33. S’agissant d’un framework de développement, il est important d’identifier les différentes applications pouvant l’utiliser (aussi bien dans les logiciels propriétaires que ceux développés en interne).  

À titre d’exemple, Cisco a publié un bulletin d’alerte concernant certains de ses produits. 

Les conditions requises permettant l’exploitation de cette vulnérabilité sont, certes, spécifiques : l’utilisation (directe ou indirecte) des classes ActionSupport, l’exposition de la fonctionnalité à des utilisateurs non authentifiés (ou pour lesquels la création de compte n’est pas restrictive) ou encore l’absence d’assainissement complémentaire. Il reste cependant important d’être vigilant et de corriger le plus rapidement possible.  

Par ailleurs, lorsqu’on évoque une vulnérabilité critique associée à Apache Struts, il est difficile de ne pas se rappeler la vulnérabilité CVE-2017-5638. Cette dernière a été à l’origine d’une importante fuite de données chez Equifax, causée par le fait qu’une vulnérabilité n’avait pas été corrigée dans les temps. 

Le temps entre la publication de preuve de concept et l’exploitation massive d’une vulnérabilité par les acteurs de la menace se duisant d’année en année, il est donc primordial d’appliquer les correctifs dès que possible. 

 

 

Auteur : Purple Team