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:
- 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. - Copia hacia el tag vulnerable: Usando el flag
-tagsFromFile, se copiaba el valor inyectado desdeDateTimeOriginalhaciaFileCreateDate, lo que activaba la funciónSetMacOSTags(). - Ejecución via
system(): Dentro deSetMacOSTags(), el valor$val(sin sanitizar) se concatenaba a un comandosystem()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
| Área | Riesgo 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. |
- 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
- Preparación del payload:
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.
- Activación del código vulnerable:
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");
- Ejecución del comando:
/Applications, por ejemplo, podría:– Modificar binarios del sistema.
– Crear usuarios persistentes.
– Exfiltrar datos a servidores externos.
Componentes vulnerables
| Componente | Versión Afectada | Función Vulnerable | Parche Disponible |
|---|---|---|---|
| ExifTool (CLI) | ≤ 13.49 |
