apache http server
Búsqueda de Ciberamenazas

Apache “Commons Configuration” parchea un error del estilo de Log4Shell

¿Recuerdas el error Log4Shell que apareció en Apache Log4j a finales de 2021? Log4j es uno de los muchos proyectos de software de la Fundación del Software Apache (más de 350 en el recuento actual), y es una biblioteca de programación que los codificadores de Java pueden utilizar para gestionar los archivos de registro en sus propios productos.

Los archivos de registro son una parte vital del desarrollo, la depuración, el mantenimiento de registros, la supervisión de programas y, en muchos sectores industriales, del cumplimiento de la normativa.

Lamentablemente, no todo el texto que se registraincluso si lo envía un usuario externo, por ejemplo como nombre de usuario en un formulario de acceso, se trata literalmente.

Si decías que tu nombre era MINOMBRE, se registraba así, como la cadena de texto MINOMBRE, pero cualquier texto envuelto en caracteres ${…} era tratado como un comando para que el registrador lo ejecutara, lo que podía causar lo que se conoce como RCE, abreviatura de ejecución remota de código.

Recientemente, vimos un tipo de error similar llamado Follina, que afectaba a Microsoft Windows.

En este caso, los caracteres problemáticos eran $(…), y los paréntesis sustituían a los corchetes, pero con el mismo efecto secundario.

En el fallo de Follina, una URL que contuviera un nombre de directorio con la cadena SOMETEXT sería tratada tal y como estaba escrita, pero cualquier texto envuelto en $(…) se ejecutaría como un comando de Powershell, causando de nuevo un riesgo de ejecución remota de código.

Más problemas con los paréntesis

Pues bien, la vulnerabilidad CVE-2022-33980, que aún no tiene un nombre pegadizo, es un tipo de error muy similar en el conjunto de herramientas de configuración de Apache Commons.

El nombre es bastante llamativo: Apache Commons es otro proyecto de Apache que proporciona numerosas utilidades de Java (subproyectos, si se quiere) que proporcionan una amplia gama de prácticos conjuntos de herramientas de programación.

Una de ellas es Commons Configuration, que permite a las aplicaciones Java trabajar con archivos de configuración de una amplia gama de formatos diferentes, incluyendo XML, INI, plist, y muchos más.

Como dice el propio proyecto, “la biblioteca de software Commons Configuration proporciona una interfaz de configuración genérica que permite a una aplicación Java leer datos de configuración de una variedad de fuentes”.

Desgraciadamente, este software también trata de forma especial el texto envuelto en ${…}.

En lugar de utilizar el texto literalmente, tiene lugar el siguiente “reprocesamiento” especial, denominado de forma bastante confusa en la jerga como interpolación:

  • $(script:STRING) ejecuta STRING como un script Java y utiliza la salida de ese código.
  • $(dns:STRING) busca STRING usando DNS.
  • $(url:STRING) lee la STRING de la URL y recupera de ahí el texto a utilizar.

En otras palabras, los datos de configuración con trampa podrían, en teoría, ser utilizados para ejecutar código malicioso, filtrar datos a través de búsquedas de DNS, u obtener ajustes de configuración de un sitio web no autorizado.

¿Qué hacer?

Según el equipo de Commons Configuration, este fallo de “interpolación” se introdujo en la versión 2.4 (publicada a finales de 2018) y se parcheó en la versión 2.8.0 (publicada el 2022-07-05, que es el martes de esta semana).

Todas las actualizaciones que se remontan a la versión 2.2 de 2017 aparecen como “versiones menores”, por lo que suponemos que la actualización de cualquiera de las versiones vulnerables 2.4, 2.5, 2.6 o 2.7 a la última versión no debería generar controversia.

Así que, si tienes algún software Java que utilice la librería Apache Commons Configuration, ¡actualiza tan pronto como puedas!

Ah, y si eres programador, ya sea que lo llames “sustitución de comandos”, “reescritura en vivo”, “reprocesamiento” o “interpolación”, úsalo con moderación, y no lo actives por defecto para datos en los que no hayas verificado que puedes confiar.

¿Soy vulnerable?

Una forma rápida de buscar la presencia de una biblioteca de Commons Configuration posiblemente vulnerable en un ordenador es buscar nombres de archivo de la forma commons-configuration2-*.jar, donde * es un comodín que denota “cualquier texto permitido aquí”.

En Linux/Unix, intenta:

$ find / -type f -name 'commons-configuration2-*.jar'

En Windows, intenta:

> DIR C:\mons-configuration2-*.jar /S

Las versiones vulnerables tienen los nombres

commons-configuration2-2.4.jar
commons-configuration2-2.5.jar
commons-configuration2-2.6.jar
commons-configuration2-2.7.jar

Las versiones anteriores o posteriores no están afectadas.

La última versión, parcheada, es

Commons-configuration2-2.8.0.jar

Si encuentras archivos con nombres como este:

commons-configuration-1.9.jar

Son la versión antigua (versión 1) de la librería, que no está afectada por este error.

 

Nota. El nombre Apache se refiere a la Fundación de Software y a todos sus proyectos. No es el nombre de un servidor web, del mismo modo que Microsoft no es el nombre de un sistema operativo. Por lo tanto, aunque los sitios web basados en el servidor web Apache, también conocido como httpd, a menudo se denominan “ejecutando Apache”, este error no se aplica al servidor web, que está escrito en C, no en Java.