Text4Shell (CVE-2022-42889) dans les applications mobiles... faut-il s'inquiéter ?
CVE-2022-42889 est une vulnérabilité de la bibliothèque Apache Commons Text, causée par une interpolation de chaînes qui abuse de gestionnaires puissants, et présente dans des applications populaires comme Amazon Shopping, Udemy et Grammarly. Cet article examine l'applicabilité et le risque de cette vulnérabilité pour les applications mobiles.
CVE-2022-42889 est une vulnérabilité de la bibliothèque Apache Commons Text, causée par une interpolation de chaînes qui abuse de gestionnaires
puissants et qui permet l'exécution de code à distance.
La vulnérabilité a été surnommée Text4Shell et est restée sans correctif pendant sept mois, jusqu'à la publication de la version 1.10
.
Pour les applications mobiles, la bibliothèque Apache Commons Text est relativement répandue et présente dans des
applications populaires comme
Mi Music, avec plus d'un milliard de téléchargements.Amazon shopping, avec plus d'un demi-milliard de téléchargements.Flo Ovulation,LG ThinQ,Fitbit,UMANG,Mi Home,Webnovel,Grammarly Keyboard,Udemy, toutes avec des dizaines de millions de téléchargements.
Techniquement, la vulnérabilité est due à l'utilisation de gestionnaires d'interpolation capables d'exécuter un script, de résoudre des requêtes DNS, de lire un fichier, d'analyser et d'accéder à du XML, de lire des constantes Java ou d'effectuer des requêtes URL.
Voici des exemples d'exploitation du gestionnaire de scripts :
String poc1 = “${script:javascript:java.lang.Runtime.getRuntime().exec(\”touch /tmp/tarlogic\”);}”;
String rce1 = StringSubstitutor.createInterpolator().replace(poc1);
String poc2 = “script:javascript:java.lang.Runtime.getRuntime().exec(\”touch /tmp/tarlogic\”)”;
String rce2 = StringLookupFactory.INSTANCE.interpolatorStringLookup().lookup(poc2);
La vulnérabilité peut être reliée à deux classes qui prennent en charge l'interpolation, StringSubstitutor
et StringLookupFactory.
Le correctif introduit dans la version 1.10 a retiré des valeurs par défaut les gestionnaires de scripts, d'URL et de DNS.
* Correctif https://github.com/apache/commons-text/commit/b9b40b903e2d1f9935039803c9852439576780ea
Mais il en a laissé d'autres, comme le contenu de fichiers, les variables d'environnement et le chemin XML, qui peuvent encore être exploités pour accéder à des informations sensibles comme des secrets, des mots de passe ou du code source.
L'analyse des applications mobiles qui utilisent la bibliothèque vulnérable a montré une faible probabilité d'être vulnérable, car les API concernées sont rarement utilisées.
Par exemple, dans les applications où la dépendance est présente, la recherche de la classe StringLookupFactory a donné peu de résultats. Les piles d'appels des méthodes ne montraient pas d'exposition à des entrées dangereuses pour celles qui correspondaient.

Sur plus de 50 applications examinées contenant Apache Commons Text, nous en avons identifié une qui utilise StringLookupFactory
,
et toutes les autres utilisent des API non vulnérables de la bibliothèque.
Rechercher la bibliothèque par son nom est toutefois insuffisant, car dans plusieurs cas la bibliothèque est obfusquée et les noms de classe d'origine sont supprimés. Voir le cas ci-dessous, un exemple tiré de l'application Udemy.


Globalement, notre analyse indique une faible probabilité d'être vulnérable. Si vous avez une application mobile :
- Vous pouvez vérifier si la bibliothèque est présente dans votre application en consultant la section des empreintes (fingerprint) du rapport de scan.

- Vérifiez l'usage des classes vulnérables à l'aide de l'environnement d'analyse, mais n'oubliez pas de vérifier si l'obfuscation est présente.
- Le correctif actuellement implémenté ne supprime que le risque d'exécution de code à distance. Il reste possible de lire le contenu de fichiers, d'accéder aux variables d'environnement ou de lire des constantes Java. Il est donc recommandé de les retirer de la liste des gestionnaires activés.