Complemento en jQuery ha permanecido vulnerable durante 8 años

Diversas formas de explotar el error han sido ampliamente divulgadas también

De los miles de complementos para el marco jQuery, uno de los más populares ha albergado al menos durante tres años un descuido en el código que permaneció oculto para la comunidad de la ciberseguridad y forense digital, a pesar de la disponibilidad de tutoriales que explicaban cómo podría explotarse.

La vulnerabilidad afecta al widget jQuery File Upload, ampliamente utilizado, y permite que un atacante cargue archivos arbitrarios en servidores web, incluidos comandos de shell para enviar comandos.

Vulnerabilidad habilitada por actualización de seguridad hace 8 años

Larry Cashdollar, un experto en forense digital, encontró la falla al analizar el código del widget y pudo cargar un shell web y ejecutar comandos en un servidor de prueba que él mismo configuró.

Junto con Sebastian Tschan, el desarrollador del complemento, el investigador descubrió que la falla fue causada por un cambio introducido en Apache 2.3.9, que desactivó de forma predeterminada los archivos .htaccess que almacenaban la configuración de seguridad relacionada con la carpeta. A menos que el administrador lo haya habilitado de forma manual, los archivos .htaccess son omitidos.

Una razón para esto era proteger la configuración del sistema del administrador al impedir que los usuarios personalizaran la configuración de seguridad en carpetas individuales. Otra razón es mejorar el rendimiento, ya que el servidor ya no tenía que revisar el archivo .htaccess al acceder a un directorio.

Después de Apache 2.3.9, los complementos que usan archivos .htaccess para imponer restricciones de acceso ya no se benefician de la configuración de seguridad de acceso a la carpeta personalizada. Este fue también el caso con jQuery File Upload, que agrega archivos a un directorio raíz.

Rastreada como CVE-2018-9206, la vulnerabilidad de codificación ya no está presente en la última versión de jQuery File Upload. Los expertos en forense digitalcambiaron el código para permitir sólo los tipos de archivos de imagen GIF, JPG, JPEG y PNG de forma predeterminada. Tschan proporcionó instrucciones sobre cómo habilitar más contenido sin correr riesgos de seguridad.

La falla se propaga a otros proyectos

La popularidad de jQuery File Upload provocó miles de proyectos derivados, muchos de ellos utilizaron el código defectuoso. Hay más de 7 mil 800 variaciones en este momento, y Cashdollar dice que hay casos en que existe una vulnerabilidad, incluso si el código original se modificó para satisfacer las necesidades personalizadas.

El investigador llegó a esta conclusión después de revisar algunas de las derivaciones, donde notó tres variaciones comunes. Posteriormente creó una prueba de concepto del exploit intentando encontrar una de las diferencias y cargar un shell de PHP.

“He hecho algunas pruebas con las 1000 bifurcaciones del código original y parece que sólo 36 estaban libres de vulnerabilidades. Descubrí que solamente necesitaban una pequeña modificación en el exploit para que funcionara en la mayoría de los casos”, señala Cashdollar.

jQuery File Upload ha permanecido vulnerable desde el lanzamiento de Apache 2.3.9., hace ocho años. Por otra parte, esta falla no pasó desapercibida todo este tiempo, además, el método para explotarla ha sido ampliamente divulgado al menos desde hace tres años.

Un video de 2015, aun disponible en Youtube, detalla las instrucciones sobre cómo encontrar sitios web vulnerables y cómo modificarlos. Videos más recientes sobre la vulnerabilidad también están disponibles.