Spring4Shell : faut-il comparer cette faille Java critique à Log4Shell ?
Le coeur fonctionnel du framework Spring a fait l'objet d'un correctif pour une faille critique. Faut-il la comparer à Log4Shell, qui touchait un autre composant Java ?
Spring4Shell sèmera-t-elle autant de panique que Log4Shell ? La question se pose à propos de cette vulnérabilité découverte dans le coeur fonctionnel du framework Spring. Immatriculée CVE-2022-22965, elle est critique (score de base : 9,8 sur l'échelle CVSS 3).
Il y a parfois eu confusion, ces derniers jours, avec une autre faille révélée quasiment en parallèle. Critique également, et qui affecte aussi Spring, mais au niveau de la bibliothèque Cloud Function. Son matricule : CVE-2022-22963.
L'une et l'autre vulnérabilité ont le même effet potentiel : la prise de contrôle, à distance, d'un hôte ou d'un conteneur. Chacune a fait l'objet de correctifs... diffusés plus ou moins dans l'urgence. Pour la faille Cloud Function, l'entité qui pilote le développement du framework (Spring.io, filiale de VMware) a pu orchestrer la démarche comme elle le souhaitait. Pour l'autre faille, ça n'a pas été la même histoire : c'est l'apparition d'un PoC qui a donné l'alerte. Apparu brièvement le 29 mars, il a vite été reproduit. Son principe : injecter une commande curl modifiant les propriétés de journalisation d'un serveur Tomcat afin de pouvoir écrire des données dans des emplacements sensibles. Plus précisément, à la racine, un fichier JSP (JavaServer Pages) contenant un webshell.
Un temps, on a supposé que cette vulnérabilité avait été introduite avec un patch - qui éliminait un risque d'exécution de code à distance dans une fonction de clonage d'exceptions. Spring.io a démenti tout lien dans son annonce anticipée (publiée avant l'attribution d'une CVE).
Spring4Shell : plus « spécifique » que Log4Shell ?
Que retenir de cette annonce ? En premier lieu, que la faille affecte toutes les versions de Spring Core encore prises en charge, sur les branches 5.2 et 5.3 ; ainsi que les plus anciennes. Les correctifs sont intégrés à partir des versions 5.2.20 et 5.3.18. Ainsi qu'à partir des versions 2.5.12 et 2.6.6 de Spring Boot.
Alors que Log4Shell touchait des configurations par défaut de la bibliothèque Log4j, Spring4Shell ne fonctionne que sous certaines conditions. Rapid7 les résume ainsi :
- Les applications MVC et WebFlux exploitant JDK 9 ou toute version ultérieure ont des chances d'être vulnérables
Lire aussi : 8 failles logicielles qui ont marqué l'année 2023
- Encore plus de chances pour les applications qui, en plus, utilisent l'annotation @RequestMapping avec des paramètres de type POJO (Plain Old Java Object)
- Et encore plus de chances si elles utilisent Tomcat
Les apps déployées au format par défaut (JAR) semblent résister à la faille ; au contraire de celles empaquetées en WAR.
Nombre d'indicateurs témoignent d'une exploitation active de la faille.
GreyNoise is tracking, has tags available for, and HAS observed exploitation of 2 different « Spring » vulnerabilities in the wild, including #SpringShell.
Time series / free dynamic custom block list URLs here:https://t.co/eFAeaI6wi3https://t.co/Jg76f7KEvb pic.twitter.com/X9XyJjNsH3
- GreyNoise (@GreyNoiseIO) March 31, 2022
Même chose pour la CVE-2022-22963, qui a elle aussi son lot de PoC. Pour la juguler, on installera si possible la version 3.1.7 ou 3.2.3 de la bibliothèque Cloud Function. À défaut, on pourra notamment passer à une version de JDK antérieure à la 9.
Spring Cloud Function RCE (CVE-2022-22963) mass scanning activity detected from 45.155.204.146 (????).
Spring Framework RCE (CVE-2022-22965) mass scanning activity detected from multiple Tor exit nodes.
Tags available now for both vulnerabilities.
- Bad Packets (@bad_packets) March 31, 2022
Photo d'illustration © monsitj - Adobe Stock
Sur le même thème
Voir tous les articles Cybersécurité