El proyecto Pillow, la biblioteca de imágenes más utilizada en Python, presenta una vulnerabilidad crítica que permite la ejecución de comandos del sistema operativo al procesar archivos EPS. La falla se encuentra en la forma en que Pillow delega la conversión de EPS a Ghostscript, pasando el nombre del archivo sin ninguna validación. Un atacante que controle el nombre del archivo puede inyectar una cadena que Ghostscript ejecutará como comando.

Qué sabemos hasta ahora

La vulnerabilidad ha sido asignada el identificador CVE-2026-112900 y afecta a todas las versiones de Pillow que soportan la apertura de imágenes EPS mediante la función Image.open(). No se ha divulgado públicamente un parche oficial, aunque el proyecto ha sido notificado y se espera una actualización. La exposición es relevante para cualquier servicio que acepte imágenes de usuarios y las procese con Pillow, incluyendo APIs de carga, sistemas de generación de thumbnails y pipelines de análisis de contenido.

Hasta el momento, los informes indican que la vulnerabilidad es explotable de forma remota siempre que el atacante pueda subir o referenciar un archivo EPS con un nombre especialmente construido. No se han reportado incidentes confirmados en producción, pero la facilidad de explotación la convierte en una amenaza de alta prioridad.

Análisis técnico

Cuando Pillow recibe una solicitud para abrir un archivo EPS, invoca a Ghostscript mediante una llamada al sistema que incluye el nombre del archivo como argumento. Al no sanitizar este parámetro, un nombre como evil.ps; rm -rf / será interpretado por el shell y ejecutado por Ghostscript, permitiendo la ejecución de comandos arbitrarios. La cadena de ataque típicamente sigue los pasos: (1) subir un EPS con nombre malicioso, (2) desencadenar la función Image.open() en el servidor, (3) Ghostscript ejecuta el comando incrustado.

Pillow pasa el nombre del archivo directamente a Ghostscript sin validación.

Los TTPs observados incluyen el uso de técnicas de “Command Injection” en la fase de ejecución y la reutilización de herramientas legítimas (Ghostscript) para evadir detección. Los analistas pueden buscar indicadores como llamadas al proceso gs con argumentos que contengan caracteres de control o secuencias de comandos.

Impacto y alcance

La vulnerabilidad descubierta en Pillow afecta a cualquier aplicación que procese imágenes en formato EPS sin validar adecuadamente el contenido del archivo. Dado que Pillow es una de las bibliotecas de manipulación de imágenes más usadas en entornos Python, el problema se extiende a una amplia gama de productos, desde sitios web y plataformas de comercio electrónico hasta herramientas de análisis de datos y sistemas internos de automatización.

Los atacantes pueden aprovechar la falla para ejecutar código arbitrario en el contexto del proceso que carga la imagen, lo que abre la puerta a la instalación de malware, la exfiltración de datos o la toma de control total del servidor. Hasta la fecha, la comunidad ha reportado la existencia de pruebas de concepto públicas que demuestran la viabilidad del exploit, aunque no se ha confirmado un uso masivo en campañas de ataque.

¿Cómo afecta esto a LATAM?

En México, Colombia y Argentina, numerosas startups y medianas empresas dependen de frameworks basados en Python para sus plataformas de comercio digital, sistemas de gestión de contenido y aplicaciones móviles. Muchas de estas soluciones integran Pillow de forma directa o a través de dependencias de terceros, lo que las expone al mismo vector de ataque.

Empresas regionales que ofrecen servicios de procesamiento de imágenes, generación de reportes o análisis de documentos pueden ver comprometidos sus flujos de trabajo si no actualizan la biblioteca o no implementan controles de validación adicionales. El riesgo se vuelve particularmente crítico en entornos donde los archivos EPS provienen de fuentes externas o de usuarios no confiables.

Qué deben hacer los equipos de seguridad

  • Actualizar Pillow a la versión que corrige la vulnerabilidad tan pronto como esté disponible en los repositorios oficiales.
  • Revisar los archivos de requisitos (requirements.txt, Pipfile, etc.) y forzar la versión mínima segura mediante versiones bloqueadas.
  • Implementar filtros de entrada que rechacen o saniticen archivos EPS antes de que sean procesados por la aplicación.
  • Auditar los logs de la aplicación en busca de intentos de carga de archivos EPS sospechosos o patrones de comportamiento inusuales.
  • Aplicar políticas de defensa en profundidad, como la ejecución de procesos de manipulación de imágenes en contenedores aislados con privilegios mínimos.
  • Comunicar a los equipos de desarrollo la necesidad de revisar otras dependencias que puedan incluir Pillow de forma transitiva.

Reflexión

¿Hasta qué punto confiamos en las capas de código abierto que sustentan la mayor parte de la infraestructura digital en América Latina? Cada vulnerabilidad como esta nos recuerda que la seguridad no es un parche puntual, sino una práctica continua que exige vigilancia, actualización y una cultura de responsabilidad compartida. El desafío está servido: ¿estamos preparados para responder rápidamente cuando la próxima brecha aparezca?