Aperçu

Spring est une application open source légère Java. Elle permet de développer et de tester facilement des applications de ce type. Cette application est également utilisée pour créer des applications d’entreprise Java en prenant en compte différents scénarios.

Une nouvelle vulnérabilité a été découverte dans Spring Core, se traduisant par une exécution de code à distance.

Le 31 mars, un CVE a été publié : Spring4Shell (CVE-2022-22965)

Détails techniques de l’exploit Spring4Shell sur Tomcat

Exploitabilité

Prérequis

⁄ JDK9.0 ou supérieur

⁄ Spring Framework 5.3.0 à 5.3.17 ou 5.2.0 à 5.2.19 et versions antérieures

⁄ Apache Tomcat comme conteneur de servlets

⁄ Dépendance Spring-webmvc ou spring-webflux

⁄ Packagé comme un WAR traditionnel

Risques

Une fois que toutes les conditions préalables sont remplies, l’exploit Spring4Shell permet une exécution de code à distance non authentifiée sur l’hôte vulnérable. Cet accès initial peut conduire à d’autres étapes d’infection nuisibles par les attaquants.

Une liste des applications et des fournisseurs qui ont publié une déclaration indiquant si leur produit était affecté est disponible :

https://www.kb.cert.org/vuls/id/970766

Difficultés 

De nombreux chercheurs sont encore sceptiques quant à la faisabilité de cet exploit. Il est maintenant clair qu’en raison des lourds prérequis de l’exploit, il devrait se produire dans moins de cas que l’exploit Log4Shell. Cependant, une fois les conditions préalables remplies, l’exploitation de la vulnérabilité est assez simple et présente moins de contraintes que Log4Shell (le trafic de sortie n’est pas nécessaire).

Exemples concrets 

Certains exemples du monde réel répondent aux conditions préalables. Certains chercheurs ont découvert que l’exemple de code de soumission de formulaire Handling fourni par Spring dans l’un de ses tutoriels est vulnérable à l’exploit Spring4Shell.

Mitigations

Recommendation globale : Mettez à jour les applications vers Spring Framework 5.3.18 ou 5.2.20 si possible.

Solution manuelle :

Cette section est applicable uniquement s’il n’est pas possible de mettre à jour les applications comme indiqué ci-dessus. Un correctif temporaire peut être appliqué manuellement pour atténuer la possibilité de l’exploit Spring4Shell : la classe suivante doit être créée dans le package du projet du système d’application. Après s’être assuré que la classe est chargée par Spring, le projet doit être recompilé. Cette solution de contournement ne fonctionne que contre les exploits connus à ce jour, son efficacité ne peut être garantie à long terme.

Bonnes pratiques :

Point d’attention :

L’exploit Spring4Shell permet uniquement l’exécution de commandes sur l’hôte vulnérable : il permet un accès initial sur un serveur exposé à Internet. Les commandes seront exécutées dans le contexte de l’application en cours d’exécution. Une infrastructure saine et à jour, ainsi qu’une bonne application du principe du moindre privilège, peuvent considérablement atténuer l’impact de Spring4Shell.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Back to top