Vulnerabilidades de ejecución de código arbitrario en Apache Commons Text (CVE-2022-42889) con una puntuación CVSS de 9,8

Se reveló la ejecución de código arbitrario en Apache Commons Text (CVE-2022-42889) con una puntuación CVSS de 9,8 sobre 10.

Apache Software Foundation (ASF) ha publicado una corrección para una vulnerabilidad de gravedad crítica en la biblioteca Apache Commons Text que conduce a la ejecución remota de código. 

La vulnerabilidad CVE-2022-42889 , descubierta por Álvaro Muñoz, apareció por primera vez el 13 de octubre de 2022 en la lista de desarrolladores de Apache . Sin embargo, aún están surgiendo detalles sobre la gravedad y el alcance de la vulnerabilidad, incluida la detección de cualquier ejemplo de aplicaciones del mundo real que utilicen configuraciones vulnerables de la biblioteca afectada.

Esta vulnerabilidad se compara con la de Log4Shell , vulnerabilidad en Apache Log4j 2, una popular biblioteca de Java para registrar mensajes de error en las aplicaciones. Sin embargo, según el análisis realizado por muchos investigadores de seguridad (hasta el momento de escribir este artículo), no parece tener el mismo impacto que la vulnerabilidad de Log4Shell. 

Acerca de la vulnerabilidad CVE-2022-42889

CVE-2022-42889 surge de la implementación insegura de la funcionalidad de interpolación variable de Commons Text.

El método StringSubstitutor.createInterpolator() crea un interpolador y permitirá búsquedas de cadenas como se define en StringLookupFactory. Esto se puede usar pasando una cadena “ ${prefix:name} ” donde el prefijo es la búsqueda mencionada anteriormente. El uso de las búsquedas de “script”, “dns” o “url” permitiría que una cadena diseñada ejecute scripts arbitrarios cuando se pasa al objeto interpolador.

Esto es algo similar a la PoC para la vulnerabilidad Log4Shell . 

CVE-2022-42889 afecta las versiones 1.5 a 1.9 de Apache Commons Text. El equipo de Apache corrigió la vulnerabilidad y lanzó el parche a partir de la versión 1.10 de Commons Text.

El equipo de rapid7 probó su prueba de concepto en la siguiente versión de JDK: 

  • JDK 1.8.0_341 – PoC funciona
  • JDK 9.0.4 – PoC funciona
  • JDK 10.0.2 – PoC funciona
  • JDK 11.0.16.1 – advertencia pero funciona
  • JDK 12.0.2 – advertencia pero funciona
  • JDK 13.0.2 – advertencia pero funciona
  • JDK 14.0.2 – advertencia pero funciona
  • JDK 15.0.2 – Vulnerabilidad
  • JDK 16.0.2 – Vulnerabilidad
  • JDK 17.0.4.1 – Vulnerabilidad
  • JDK 18.0.2.1 – Vulnerabilidad
  • JDK 19 – Vulnerabilidad

Sin embargo, el equipo de seguridad de JFrog señaló que los usuarios de Java 15+ están a salvo de la ejecución de código ya que el motor Nashorn estaba deshabilitado, por lo que la interpolación ${script} no funcionará. Sin embargo, otros vectores (DNS, URL) seguirán funcionando.

El código PoC es similar al Log4Shell: ${script:javascript:java.lang.Run.Runtime.getRuntime().exec("cat /etc/shadow");}

El equipo de Rapid7 señaló que,

es poco probable que el fragmento de código específico exista en aplicaciones de producción, la preocupación es que en algunas aplicaciones, la variable `pocstring` puede estar controlada por un atacante. En este sentido, la vulnerabilidad se hace eco de Log4Shell. 

Sin embargo, el interpolador StringSubstitutor se usa considerablemente menos que la sustitución de cadena vulnerable en Log4j y la naturaleza de dicho interpolador significa que es menos probable obtener una entrada manipulada para el objeto vulnerable que simplemente interactuar con una cadena tan manipulada como en Log4Shell.

Llamándolo Text4Shell o Text2Shell

Hemos visto a muchos llamando a esta vulnerabilidad como Text4Shell o Text2Shell, ya que tiene el mismo tipo de código de explotación que Log4Shell. Apache Commons Text es una biblioteca ampliamente utilizada, pero en una escala mucho más pequeña que Log4J. 

La vulnerabilidad CVE-2022-42889 (Text4Shell / Text2Shell) consiste en inyectar una carga maliciosa en el software vulnerable, que le pedirá a Apache Commons Text que obtenga un valor de una fuente de terceros, con DNS o ejecutando un script. 

Sin embargo, en este caso, Apache Commons Text no verifica los datos a procesar por defecto, lo que significa que se puede ejecutar código malicioso si no se ha implementado ningún filtro en el código de la aplicación vulnerable.

Recomendación

Como no es probable que la vulnerabilidad se vea muy afectada como Log4Shell, también recomendamos encarecidamente actualizar la versión Apache Commons Text a la versión fija 1.10.0.