Blog Akamai | Injection SpEL de la fonction Spring Cloud (CVE-2022-22963) exploitée sur le terrain
Présentation
Le 24 mars 2022, Pivotal a corrigé une vulnérabilité critique d'injection de code côté serveur (injection Spring Expression Language) dans la fonction Spring Cloud, qui aurait pu entraîner la compromission du système. Spring est un cadre Java open-source couramment utilisé. Cette faille de sécurité et une autre vulnérabilité d'exécution de code à distance découverte (Spring Core ou « Spring4Shell ») sont atténuées par les ensembles de règles de l'Adaptive Security Engine (ASE) de Kona Site Defender (KSD) d'Akamai. Cet article concerne les vulnérabilités Spring Cloud, mais vous pouvez en savoir plus sur la faille Spring Core ici.
La fonction Spring Cloud est une technologie permettant de dissocier la logique métier de n'importe quelle exécution spécifique. Le SpEL (Spring Expression Language) est un langage d'expression puissant utilisé dans le portefeuille Spring, qui prend en charge l'interrogation et la manipulation d'un graphe d'objet lors de l'exécution. De nombreuses vulnérabilités et expositions communes (CVE) d'exécution de code à distance relatives à l'injection SpEL ont été signalées par le passé, lorsque l'application a évalué des expressions de code non fiables saisies par l'utilisateur de manière non sécurisée (cf. figure 1).
Quelques jours plus tard, le 26 mars, l'utilisateur de GitHub « cckuailong » a publié une démonstration de faisabilité présentant l'exploitation réussie de cette vulnérabilité (cf. figure 2).
Moins de 24 h plus tard, Akamai a commencé à observer des tentatives d'exploitation sur Internet.
De la même manière que pour Log4j, un grand nombre des tentatives actuelles (mais pas toutes) visent à explorer les possibilités via la technique du « ping back », où les attaquants envoient à une balise à l'application en cas d'exploitation réussie.
Nous avons constaté que des milliers d'adresses IP du monde entier envoyaient des charges utiles d'attaque, alors que la majorité correspond à des réseaux privés virtuels (VPN) et des proxy Web hébergés sur des clouds publics.
La vulnérabilité
Après le correctif, une expression SpEL pouvait être reçue via l'en-tête HTTP « spring.cloud.function.routing-expression » afin de faciliter le routage des applications.
Aucune vérification n'était effectuée dans le code pour déterminer si l'expression à évaluer pouvait être reçue via un en-tête. Pour résoudre le problème, un headerEvalContext distinct, qui est un SimpleEvaluationContext a été ajouté.
Atténuation avec le moteur de sécurité adaptatif de KSD
L'Adaptive Security Engine (ASE) d'Akamai dispose de règles intégrées complètes pour la détection des injections de commandes, car l'objectif de la plupart de ces attaques est d'exécuter des commandes au niveau du système d'exploitation. L'ASE a pu détecter cette attaque zero day grâce aux règles d'injection de commandes existantes :
Les ensembles de règles Kona Site Defender atténuent également ces attaques :
3000041 - Injection de modèle côté serveur
3000156 - Injection de commandes détectée (fonctions PHP à haut risque)
Résumé
Bien que les fonctions Spring Cloud ne soient pas aussi répandues que la bibliothèque Log4j , la facilité d'exploitation de cette vulnérabilité va attirer de nombreux acteurs malveillants. Nous prévoyons que cela incitera bon nombre d'entre eux à lancer des campagnes de minage de cryptomonnaies, d'attaques DDoS ou par ransomware et que cette faille leur permettra de s'infiltrer facilement dans les entreprises au cours des prochaines années. Toutefois, les clients d'Akamai sont protégés par les ensembles de règles de l'Adaptive Security Engine et de Kona Site Defender d'Akamai.
L'équipe Threat Research Team d'Akamai continue de surveiller l'exploitation de cette vulnérabilité et publiera des mises à jour à mesure que de nouvelles variantes apparaîtront, ou si nous constatons que de nouveaux groupes de cybercriminels ont ajouté cette vulnérabilité à leur arsenal.