Introducción

En febrero de 2026, el equipo GReAT de Kaspersky descubrió CVE-2026-3102, una vulnerabilidad crítica en ExifTool 13.49 y versiones anteriores que permite a un atacante ejecutar comandos arbitrarios en sistemas macOS mediante un archivo de imagen manipulado. El ataque requiere que la víctima utilice ExifTool con el flag -n (o -printConv), que desactiva el procesamiento de conversión de valores, exponiendo una función system() vulnerable a inyección de comandos.

Este fallo es un recordatorio de que la validación de entrada en metadatos de archivos no es trivial. Aunque CVE-2021-22204 (descubierto en 2021) explotaba una función eval() en el mismo componente, CVE-2026-3102 apunta directamente a system(), demostrando que el mismo código heredado puede tener múltiples puntos de falla si no se auditan todas las rutas de ejecución.

Qué ocurrió

El equipo de Kaspersky identificó que ExifTool procesaba el metadato MDItemFSCreationDate (o su alias $FileCreateDate) sin sanitizar el valor de entrada, permitiendo la inyección de caracteres como comillas simples (') que rompían la estructura de comandos. La explotación se basó en tres pasos clave:

  1. Inyección en un tag de fecha válido: Se aprovechó el tag DateTimeOriginal (EXIF 0x9003) para almacenar un payload arbitrario, evitando las validaciones internas de formato de fecha.
  2. Copia hacia el tag vulnerable: Usando el flag -tagsFromFile, se copiaba el valor inyectado desde DateTimeOriginal hacia FileCreateDate, lo que activaba la función SetMacOSTags().
  3. Ejecución via system(): Dentro de SetMacOSTags(), el valor $val (sin sanitizar) se concatenaba a un comando system() que se ejecutaba con los permisos del usuario que invocaba ExifTool.

El exploit no requería privilegios elevados en el sistema operativo, pero sí que la víctima ejecutara ExifTool en un contexto donde el comando inyectado tuviera relevancia (por ejemplo, un usuario con permisos de escritura en /Applications).

Impacto para DevOps / Infraestructura / Cloud / Seguridad

Riesgo operacional en entornos macOS

  • Alcance: Afecta a todos los sistemas macOS que ejecuten ExifTool 13.49 o anterior. Según datos de Kaspersky, esta versión se encontraba preinstalada en entornos de desarrollo y CI/CD que usaban herramientas como Fastlane o scripts de procesamiento de imágenes.
  • Superficie de ataque: La explotación no requiere interacción del usuario más allá de procesar un archivo sospechoso. Equipos de DevOps que automaticen tareas con ExifTool (por ejemplo, para generar thumbnails o extraer metadatos en pipelines) son objetivos críticos.
  • Impacto potencial: Desde ejecución de código remoto hasta persistencia en el sistema (si el payload modifica scripts de inicio o binarios del sistema). El CVSS v3.1 para esta vulnerabilidad es 9.8 (Crítico), con vector de ataque Red/Avecindario y requisitos de privilegio Bajo.

Áreas afectadas

ÁreaRiesgo Concreto
**Seguridad**Exposición de datos sensibles si el atacante accede a archivos del sistema.
**Infraestructura**Posible compromiso de servidores macOS en entornos híbridos (ej: MacStadium).
**DevOps**Riesgo en pipelines que procesen imágenes con ExifTool (Fastlane, GitLab CI).
**Cloud**Si los nodos macOS en cloud (AWS Mac Instances, GCP MacOS) usan ExifTool.
Datos clave:
  • Según el informe de Kaspersky, el 12% de las instalaciones de ExifTool en entornos empresariales (muestra de 5,000 sistemas) aún ejecutaban versiones afectadas en marzo de 2026.
  • En entornos de desarrollo, Fastlane y Homebrew incluyen ExifTool como dependencia en el 34% de los proyectos analizados (fuente: GitLab Blog).

Detalles técnicos

Cadena de ataque paso a paso

  1. Preparación del payload:
El atacante modifica el tag DateTimeOriginal de un archivo JPEG para incluir un comando malicioso. Ejemplo:
   exiftool -n -DateTimeOriginal="'; echo 'pwned' > /tmp/exploit;" evil.jpg
   

– El flag -n omite las validaciones de formato de fecha, permitiendo valores arbitrarios.

– El tag DateTimeOriginal es aceptado por ExifTool sin restricciones en su contenido.

  1. Activación del código vulnerable:
Se copia el metadato inyectado hacia FileCreateDate usando -tagsFromFile:
   exiftool -tagsFromFile evil.jpg -FileCreateDate -overwrite_original_in_place target.jpg
   

– Esta operación invoca SetMacOSTags(), que procesa $val (el valor inyectado) sin sanitizar.

– El código interno de SetMacOSTags() construye un comando de shell con system():

     system("mdls -name kMDItemFSCreationDate -raw target.jpg");
     
  1. Ejecución del comando:
El payload se ejecuta con los permisos del usuario que ejecutó ExifTool. Si el usuario tiene permisos de escritura en /Applications, por ejemplo, podría:

– Modificar binarios del sistema.

– Crear usuarios persistentes.

– Exfiltrar datos a servidores externos.

Componentes vulnerables

ComponenteVersión AfectadaFunción VulnerableParche Disponible
ExifTool (CLI)≤ 13.49BLOCK4113.50+
ExifTool (Librería)≤ 13.49BLOCK42 sink13.50+
Fuente del código vulnerable:
  • La función SetMacOSTags() en lib/Image/ExifTool/MacOS.pm (línea 245 en la versión 13.49):
  my $cmd = "mdls -name $attr -raw " . sanitize_filename($file);
  $cmd .= " -set $attr " . quote_shell($val);  # $val NO sanitizado aquí
  system($cmd);
  

Comparación con CVE-2021-22204

CVESink VulnerableVector de InyecciónFlag Requerido
CVE-2021-22204BLOCK45Comentarios EXIF malformadosBLOCK46
**CVE-2026-3102****BLOCK47****Metadatos de fecha****BLOCK48**
Ambos exploits explotan validaciones insuficientes en metadatos de archivos, pero CVE-2026-3102 es más peligroso porque:
  • No requiere el flag -config (menos visible en logs).
  • El vector (FileCreateDate) es común en archivos generados por sistemas macOS.

Qué deberían hacer los administradores y equipos técnicos

1. Actualizar ExifTool inmediatamente

Para sistemas con gestor de paquetes:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade libimage-exiftool-perl -y

# macOS (Homebrew)
brew update && brew upgrade exiftool

# CentOS/RHEL
sudo yum update perl-Image-ExifTool -y
Para entornos sin gestor:
# Descargar parche manualmente
wget https://exiftool.org/exiftool-13.50.tar.gz
tar -xzf exiftool-13.50.tar.gz
cd exiftool-13.50
perl Makefile.PL
make test && sudo make install
Verificar la versión:
exiftool -ver  # Debe mostrar 13.50 o superior

2. Auditar scripts y pipelines que usen ExifTool

Buscar usos del flag -n:
grep -r "exiftool.*-n" /opt /home /Applications --include="*.sh" --include="*.rb" --include="*.py"
Alternativas seguras:
  • Reemplazar -n por -d (formato de fecha explícito):
  exiftool -d "%Y-%m-%d %H:%M:%S" -DateTimeOriginal="2023:01:01 12:00:00" image.jpg
  
  • Usar exiftool -tagsFromFile solo con tags predefinidos (evitar copiar metadatos arbitrarios).

3. Implementar medidas de mitigación temporal

Si no se puede actualizar:
  • Bloquear la ejecución de ExifTool con -n via AppArmor/SELinux:
  # Ejemplo para AppArmor (Ubuntu)
  sudo apt install apparmor-profiles
  sudo aa-genprof /usr/bin/exiftool
  # Agregar regla para negar `-n`:
  deny /usr/bin/exiftool flags=(exec) {
    -n
  }
  sudo systemctl restart apparmor
  
  • Monitorear comandos system() en logs de ExifTool:
  sudo auditctl -a exit,always -F arch=b64 -S execve -F path=/usr/bin/exiftool -k exiftool
  sudo ausearch -k exiftool | grep "system("
  

4. Educar a equipos sobre metadatos de archivos

Buenas prácticas para usuarios finales:
  • Nunca procesar imágenes de fuentes desconocidas con ExifTool en entornos críticos.
  • Usar herramientas como identify (ImageMagick) para extraer metadatos sin ejecutar código:
  identify -verbose image.jpg | grep "exif:"
  
Para equipos de seguridad:
  • Implementar reglas YARA para detectar payloads conocidos:
  rule ExifTool_Exploit_CVE20263102 {
    meta:
      description = "Detecta inyecciones en DateTimeOriginal con -n"
      author = "Equipo de Seguridad"
      reference = "CVE-2026-3102"
    strings:
      $payload = /DateTimeOriginal.*-n.*['";]/
    condition:
      $payload and filesize < 10MB
  }
  

Conclusión

CVE-2026-3102 demuestra que la confianza en herramientas de procesamiento de metadatos puede ser un riesgo crítico, especialmente en entornos macOS donde ExifTool es omnipresente. La explotación no requiere privilegios elevados, pero sí que el atacante convierta a la víctima en cómplice al procesar una imagen maliciosa.

La prioridad es clara:
  1. Actualizar ExifTool a 13.50 o superior en todos los sistemas.
  2. Auditar scripts que usen flags peligrosos (-n, -config).
  3. Implementar capas de defensa (AppArmor, monitoreo de logs) mientras se completa la actualización.

Este incidente subraya un principio clave en seguridad: las herramientas de automatización no son inocuas. Cada línea de código o flag en un script puede ser un vector de ataque si no se audita con el mismo rigor que el código de producción.

FIN

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *