Se ha divulgado una vulnerabilidad en la biblioteca Apache Commons Text que ha recibido el identificador CVE-2022-42889, es una vulnerabilidad con VPR Score de 9.2 crítico, la cual al igual que Log4J afecta a productos de Java, algunos han comenzado a llamarla «Text4Shell», esta vulnerabilidad permite la ejecución de código remoto al procesar entradas maliciosas.
CVE-2022-42889, surge de la implementación insegura de la funcionalidad de interpolación variable de Commons Text, donde algunas cadenas de búsqueda predeterminadas podrían aceptar entradas no confiables de atacantes remotos, como solicitudes de DNS, URL o scripts en línea y afecta las versiones 1.5 a 1.9 de Apache Commons Text.
La Vulnerabilidad en biblioteca Apache Commons Text es comparado con Log4Shell debido a que es una vulnerabilidad de biblioteca en el cual utilizando código abierto probablemente afecte a una amplia variedad de aplicaciones de software que utilizan el componente relevante. Sin embargo, Log4Shell se diferencia ya que la interpolación de cadenas era posible desde el cuerpo del mensaje de registro, el cual comúnmente contiene entradas que no son de confianza. Mientras que en Apache Common Text, el método relevante está explícitamente diseñado para realizar la interpolación de cadenas, por lo que es mucho menos probable que las aplicaciones pasen inadvertidamente una entrada no confiable sin la validación previa.
«En resumen, al igual que con Spring4Shell, existen importantes advertencias sobre la explotabilidad práctica de CVE-2022-42889 Dicho esto, aún recomendamos parchear cualquier software afectado relevante de acuerdo con su ciclo de parches normal, sin problemas.» Según investigadores de Rapid7, la vulnerabilidad funciona en ciertas versiones de JDK (1.8.0_341, 9.0.4, 10.0.2. 11.0.16.1, 12.0.2, 13.0.2, 14.0.2), mientras que en otras versiones las explotabilidad no fue exitosa JDK (15.0.2, 16.0.2, 17.0.4.1, 18.0.2.1, 19).
Ejemplos de código vulnerable a CVE-2022-42889
Como se puede observar, se incluyen dos ejemplos de código fuente que muestran la posibilidad de ejecución de código remoto haciendo uso de una versión afectada del componente Apache Commons Text.
Ejemplo 1:
String poc1 = “${script:javascript:java.lang.Runtime.getRuntime().exec(\”touch /tmp/tarlogic\”);}”;
String rce1 = StringSubstitutor.createInterpolator().replace(poc1);
Ejemplo 2:
String poc2 = “script:javascript:java.lang.Runtime.getRuntime().exec(\”touch /tmp/tarlogic\”)”;
String rce2 = StringLookupFactory.INSTANCE.interpolatorStringLookup().lookup(poc2);
Mitigación:
Como método de solución a Text4Shell se indica actualizar de manera urgente el componente/ biblioteca de Apache Commons Text a las últimas versiones disponibles para la corrección de esta vulnerabilidad, en este contexto se debe actualizar a la versión 1.10.0 o posterior de la biblioteca mencionada.
Cabe mencionar que las versiones de Java iguales o superiores a Java 15 no serían vulnerables a ejecución de código remoto (RCE), debido a que el motor Nashorn esta desactivado y el prefijo “script” no estaría disponible.
Referencias:
- https://github.com/ClickCyber/cve-2022-42889
- https://ubuntu.com/security/CVE-2022-42889
- https://lists.apache.org/thread/n2bd4vdsgkqh2tm14l1wyc3jyol7s1om
- https://blog.segu-info.com.ar/2022/10/cve-2022-42889-vulnerabilidad-en.html
- https://www.imperva.com/blog/apache-commons-text-vulnerability-cve-2022-42889/
- https://www.rapid7.com/blog/post/2022/10/17/cve-2022-42889-keep-calm-and-stop-saying-4shell/
- https://www.spiceworks.com/it-security/vulnerability-management/news/text4shell-apache-commons-text-act4shell/