17 oct 2022

CVE-2022-42889: vulnerabilidad en biblioteca Apache Commons Text

El CVE-2022-42889 (CVSS 9.8), descubierto por el equipo de Github y, que algunos han comenzado a llamar "Text4Shell", es una vulnerabilidad en la popular biblioteca Apache Commons Text que puede resultar en la ejecución de código al procesar entradas maliciosas.

La biblioteca Commons Text es un complemento de texto de Java Development Kit (JDK) y actualmente, unos 2.588 proyectos utilizan la biblioteca, incluidos algunos importantes, como Apache Hadoop Common, Spark Project Core, Apache Velocity y Apache Commons Configuration, según los datos del repositorio de Maven Central Java. 

La vulnerabilidad se anunció el 13 de octubre de 2022 en la lista de desarrolladores de Apache. CVE-2022-42889 surge de la implementación insegura de la funcionalidad de interpolación variables de Commons Text; más específicamente, 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. La interpolación de variables, básicamente es el proceso de buscar y evaluar cadenas dinámicas en el código.

CVE-2022-42889 afecta las versiones 1.5 a 1.9 de Apache Commons Text y ha sido parcheado a partir de la versión 1.10 de Commons Text.

La vulnerabilidad se ha comparado con Log4Shell, ya que es una vulnerabilidad de nivel de biblioteca de código abierto que probablemente afecte a una amplia variedad de aplicaciones de software que utilizan el objeto relevante.

Sin embargo, el análisis inicial indica que esta es una mala comparación. La naturaleza de la vulnerabilidad significa que, a diferencia de Log4Shell, será raro que una aplicación utilice el componente vulnerable de Commons Text para procesar entradas no confiables y potencialmente maliciosas. Además, la versión de JDK es importante para la explotabilidad. El equipo de Rapid7 probó su PoC en las siguientes versiones 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 - falla
  • JDK 16.0.2 - falla
  • JDK 17.0.4.1 - falla
  • JDK 18.0.2.1 - falla
  • JDK 19 - falla

Los resultados fueron idénticos para OpenJDK.

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.

Análisis técnico

La vulnerabilidad existe en el objeto StringSubstitutor. El método StringSubstitutor.createInterpolator() crea un interpolador y permite realizar 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.

Dado que Commons Text es una biblioteca, el uso específico del interpolador determinará el impacto de esta vulnerabilidad:

Si bien es poco probable que este fragmento de código específico exista en las 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 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.

Guía de mitigación

Las organizaciones que tienen dependencias directas de Apache Commons Text deben actualizar a la versión corregida 1.10.0. También veremos la cola habitual de avisos de distintos proveedores que utlizan implementaciones vulnerables de la biblioteca. La versión corregida deshabilita de forma predeterminada la interpolación de scripts.

Fuente: Rapid7 | DarkReading | Gitlab

Suscríbete a nuestro Boletín

0 Comments:

Publicar un comentario

Gracias por dejar un comentario en Segu-Info.

Gracias por comentar!