Une vulnérabilité RCE critique d'Apache Struts
Apache a corrigé une vulnérabilité critique dans son projet Struts, très populaire, que l'on croyait résolue mais qui, en fait, ne l'a pas été entièrement.
Struts est un cadre de développement d'applications open-source utilisé par les développeurs Web Java pour créer des applications MVC (modèle-vue-contrôleur).
Répertoriée sous le nom de CVE-2021-31805, la vulnérabilité critique existe dans les versions de Struts 2 allant de 2.0.0 à 2.5.29 inclus, et elle résulte d'un correctif incomplet qui a été appliqué pour CVE-2020-17530, également un bug d'injection OGNL (Object-Graph Navigation Language), avec un indice de gravité de 9.8 (Critique).
Object-Graph Navigation Language (OGNL) est un langage d'expression (EL) open-source pour Java qui simplifie la gamme d'expressions utilisées dans le langage Java. L'OGNL permet également aux développeurs de travailler plus facilement avec des tableaux. Mais l'analyse des expressions OGNL basées sur des entrées utilisateur non fiables ou brutes peut être problématique, du point de vue de la sécurité.
En 2020, les chercheurs Alvaro Munoz de GitHub et Masato Anzai de Aeye Security Lab avaient signalé une faille de "double évaluation" dans les versions 2.0.0 à 2.5.25 de Struts2, dans certaines circonstances.
Bien qu'Apache ait résolu le bug 2020 dans Struts 2.5.26, le chercheur Chris McCown a découvert par la suite que la correction appliquée était incomplète.
En tant que tel, McCown a signalé de manière responsable à Apache que le problème de "double évaluation" pouvait encore être reproduit dans les versions 2.5.26 et supérieures de Struts, ce qui a entraîné l'attribution du CVE-2021-31805.
Il est conseillé aux utilisateurs de passer à la version 2.5.30 ou une version supérieure de Struts et d'éviter d'utiliser l'évaluation forcée d'OGNL dans les attributs de la balise sur la base d'une entrée utilisateur non fiable.