Graves fallos en Pillow permiten la ejecución de código mediante imágenes manipuladas
Las versiones de Pillow anteriores a la 13.0.0 contienen vulnerabilidades críticas que permiten la ejecución remota de código a través de nombres de archivo EPS y el procesamiento de JPEG.
Traducido automáticamente del original en inglés.
Una vulnerabilidad de seguridad crítica en Pillow, la biblioteca dominante para el procesamiento de imágenes en Python, permite a los atacantes ejecutar comandos arbitrarios del sistema operativo en los servidores afectados. El fallo, identificado como CVE-2026-112900, fue corregido en la versión 13.0.0 publicada el 16 de octubre de 2026, afectando a las instalaciones desde la versión 2.6.0 hasta la 12.3.0.
Qué ocurrió
La principal vulnerabilidad radica en cómo Pillow maneja los archivos Encapsulated PostScript (EPS). Al abrir una imagen EPS, Pillow pasa el nombre del archivo directamente a Ghostscript, un programa independiente utilizado para el renderizado, sin sanitizar previamente la entrada. Un atacante puede crear un nombre de archivo malicioso que Ghostscript interpreta como instrucciones en lugar de una ruta de archivo. Esto permite al atacante dirigir a Ghostscript hacia un archivo secundario que contiene comandos ejecutables, tomando efectivamente el control del proceso del servidor.
Este problema es especialmente peligroso porque el detonante es el propio nombre del archivo, no el contenido de la imagen. Como se señala en el aviso, "El fallo se activa por el nombre del archivo, no por nada dentro del documento PostScript". Esto significa que incluso un archivo EPS benigno puede causar daños si su nombre es manipulado por un atacante. La explotación requiere que el servidor objetivo tenga instalado Ghostscript y que la aplicación acepte nombres de archivo controlados por el usuario durante la carga o el procesamiento.
Además del fallo en EPS, la versión 13.0.0 aborda otros dos problemas críticos. Uno implica un desbordamiento de memoria en la decodificación JPEG, específicamente dentro del formato FlashPix, lo cual puede llevar a la ejecución de código si está presente el paquete opcional olefile. Otro error de larga data, presente desde 2013, provoca un desbordamiento de búfer al guardar imágenes TIFF comprimidas en búferes de memoria como io.BytesIO, un patrón común en servicios web que recodifican cargas.
Detalles clave
- Versiones afectadas: Pillow 2.6.0 a 12.3.0 son vulnerables; la versión 13.0.0 contiene las correcciones.
- Vector principal: CVE-2026-112900 permite la ejecución de código mediante nombres de archivo EPS manipulados pasados a Ghostscript.
- Vectores secundarios: Existen desbordamientos de búfer críticos en la generación de miniaturas JPEG y en las operaciones de guardado de TIFF en memoria.
- Descubrimiento: La vulnerabilidad JPEG fue identificada por Anthropic utilizando Claude para análisis de seguridad, y luego validada por Ada Logics.
- Severidad: Los registros CVE de GitHub califican los fallos de EPS, TIFF y JPEG con 9.2 sobre 10, aunque los mantenedores clasifican el problema de EPS como moderado debido a los requisitos de control del nombre del archivo.
- Adopción: OX Security estima que Pillow se descarga aproximadamente 436 millones de veces al mes, lo que indica una exposición generalizada.
Contexto
Pillow es una bifurcación de la Python Imaging Library (PIL) y sirve como el estándar de facto para la manipulación de imágenes en los ecosistemas de Python. Es una dependencia de innumerables frameworks web, pipelines de procesamiento de documentos y herramientas de aprendizaje automático. Debido a su ubicuidad, las vulnerabilidades en Pillow tienen un radio de impacto amplio, pudiendo afectar desde simples formularios de carga de avatares hasta complejos sistemas de gestión documental.
Ghostscript es un intérprete para el lenguaje PostScript y archivos PDF. Muchas distribuciones de Linux lo incluyen por defecto, y las aplicaciones de Python a menudo dependen de él para manejar formatos de imagen basados en vectores como EPS. La interacción entre Pillow y Ghostscript crea un puente donde el manejo inadecuado de entradas en un componente puede conducir a la inyección de comandos en el otro, eludiendo los controles de seguridad típicos a nivel de aplicación.
Por qué importa
Para los equipos que ejecutan software autoalojado, esta vulnerabilidad destaca los riesgos inherentes a depender de cadenas de dependencias complejas. Si su aplicación acepta cargas de imágenes de usuarios, como fotos de perfil, documentos escaneados o activos de diseño, es probable que esté usando Pillow. Una instancia sin parchear podría permitir que un atacante obtenga acceso shell a su servidor simplemente subiendo un archivo con un nombre o estructura específicos.
El impacto va más allá de la inmediata ejecución de código. La vulnerabilidad TIFF, que ha existido durante más de una década, demuestra cómo el código legado puede persistir en infraestructuras críticas. Los servicios que procesan imágenes en memoria por razones de rendimiento, como generar vistas previas o convertir formatos sobre la marcha, están específicamente en riesgo. Esto afecta a muchas aplicaciones web modernas que evitan escribir archivos temporales en disco.
Además, el método de descubrimiento señala un cambio en cómo se encuentran las vulnerabilidades. Con agentes de IA auditando activamente código de fuentes abiertas ahora, podemos ver un aumento en los fallos reportados en bibliotecas maduras. Los equipos deben estar preparados para ciclos de parcheo más rápidos y actualizaciones de seguridad más frecuentes en sus dependencias principales.
Qué puede hacer
- Actualice inmediatamente: Actualice Pillow a la versión 13.0.0 o posterior usando pip install -U "Pillow>=13.0.0".
- Verifique la versión de Python: Tenga en cuenta que Pillow 13 elimina el soporte para Python 3.10, por lo que debe actualizar a Python 3.11 o más reciente si aún está en 3.10.
- Reconstruya contenedores: Si utiliza Docker u otras herramientas de contenedorización, reconstruya sus imágenes para asegurar que la nueva versión esté integrada, ya que las capas antiguas pueden retener la biblioteca vulnerable.
- Restrinja Ghostscript: Si no puede actualizar inmediatamente, elimine el binario gs de los hosts que procesan cargas no confiables para mitigar la vulnerabilidad EPS.
- Sanitize nombres de archivo: Asegúrese de que cualquier archivo pasado a Image.open() no contenga datos controlados por el usuario en su ruta o nombre.
- Evite operaciones arriesgadas: Absténgase de usar draft() o thumbnail() en JPEGs no confiables, y evite guardar TIFFs comprimidos en búferes de memoria hasta que estén parcheados.



