Analyse de CVE-2022-42889 : la vulnérabilité d’exécution de code arbitraire dans Apache Commons Text
18 octobre 2022
0 minutes de lectureCommençons par clarifier une chose : il ne s’agit PAS d’une nouvelle vulnérabilité Log4Shell ou Spring4Shell. Bien qu’il s’agisse d’un problème d’exécution de code à distance, son impact n’est ni aussi grave ni aussi facile à exploiter que celui de la faille Log4j de décembre 2021.
Comme pour la faille Log4j, le problème tient au fait qu’une recherche peut être effectuée, puis détournée. Cependant, la vulnérabilité Log4Shell était très facile à exploiter — ce qui n’est pas forcément le cas ici. En réalité, ce problème ressemble beaucoup à CVE-2022-33980, dont nous avons parlé dans un article publié plus tôt cette année.
Explication des problèmes de sécurité d’Apache Commons Text
La bibliothèque Apache Commons Text permet d’effectuer l’interpolation de variables. Vous pouvez ainsi charger des propriétés qui seront évaluées dynamiquement.
Le problème se situe dans StringLookup, qui effectue les recherches. Ces recherches sont des expressions capables de résoudre des enregistrements DNS, de charger des valeurs depuis des URL et d’exécuter des scripts à l’aide d’un moteur d’exécution de scripts JVM. Ces URL et scripts peuvent provenir de sources distantes et déclencher l’exécution de code à distance si des valeurs non fiables sont utilisées. Cette faille, signalée comme étant de gravité élevée sous la référence CVE-2022-42889, affecte les versions 1.5.x à 1.9.x.
Exemples de CVE-2022-42889
Voici deux exemples de ce type de script utilisant le moteur Nashorn ou JavaScript. L’utilisation directe de interpolatorStringLookup ou de StringSubstitutor (sans doute plus courant) produira le même résultat.

Notez que le moteur de script Nashorn n’est plus disponible par défaut dans Java 15 et les versions ultérieures. Ces scripts ne seront donc exécutés que si vous fournissez vous-même un moteur de script. Cependant, de nombreuses entreprises utilisent encore d’anciennes versions telles que Java 8, ce qui peut poser un grave problème. Si vous utilisez la dernière version LTS, Java 17, ni le script JavaScript ni le script Nashorn ne s’exécuteront, car aucun moteur n’est disponible par défaut.
Comment corriger CVE-2022-42889
Rappelons-le : il ne s’agit pas d’un nouveau Log4Shell. Vous n’utilisez probablement pas vous-même StringLookup, mais vous ne savez pas si l’une de vos bibliothèques transitives y a recours. Le moyen le plus simple de corriger ce problème consiste à passer à la version 1.10 (ou ultérieure) de commons-text, qui désactive par défaut les préfixes URL, DNS et script — ce qui rend impossible l’exécution de code arbitraire par ce biais.
L’analyse de votre code avec Snyk peut vous aider à déterminer si cette vulnérabilité est présente dans votre environnement. Si elle est détectée, passez à la version 1.10 et exécutez snyk monitor dans l’interface de ligne de commande afin de continuer à surveiller votre environnement de production.
Lancez-vous dans les compétitions Capture The Flag
Apprenez à résoudre des défis Capture The Flag en regardant à la demande notre atelier virtuel d’initiation.