Pillow: Acceso fuera de límites en _imagingmorph con una imagen de ancho cero
Resumen
Un archivo PPM o PGM puede declarar un ancho de 0, que Pillow acepta, produciendo una imagen de tamaño (0, N). Al pasar esa imagen a ImageMorph.MorphOp.apply(), el código de morfología nativo indexa un búfer de fila en outrow[width - 1], lo cual resulta en outrow[-1] cuando el ancho es 0. El proceso se bloquea.
Detalles
El analizador PPM lee el ancho y el alto sin comprobar el límite inferior:
src/PIL/PpmImagePlugin.py:119
La función nativa apply() escribe los bordes de fila sin verificar que el ancho sea positivo:
src/_imagingmorph.c:81estableceoutrow[0] = outrow[width - 1] = 0;
match() y get_on_pixels() utilizan el mismo patrón de indexación de bordes.
PoC
from PIL import Image, ImageMorph
# A width-0 image (also producible from a crafted PPM header). apply() indexes
# outrow[width - 1] == outrow[-1] in native code.
im = Image.new("L", (0, 5))
ImageMorph.MorphOp(op_name="dilation4").apply(im)
Ejecución:
$ python 03_poc.py
Segmentation fault (core dumped)
Observado en una compilación a partir del código fuente en el commit 3e2ab96.
Bajo AddressSanitizer:
==ERROR: AddressSanitizer: SEGV on unknown address (pc ... in apply)
#0 apply src/_imagingmorph.c:81
SUMMARY: AddressSanitizer: SEGV src/_imagingmorph.c:81 in apply
Con un ancho de 0, la escritura en outrow[width - 1] cae en una página no mapeada, manifestándose como un error SEGV fijado en la línea de escritura del borde en lugar de un desbordamiento de redzone.
Impacto
Escritura fuera de límites en una extensión C. Afecta a cualquier aplicación que ejecute una operación de morfología en una imagen abierta desde una entrada no confiable. El resultado es un bloqueo y posible corrupción de memoria.
Qué hacer
Actualice pillow a la versión 13.0.0 o posterior.
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Python (PyPI) | pillow | < 13.0.0 | 13.0.0 |
Referencias
- https://github.com/python-pillow/Pillow/security/advisories/GHSA-58r4-6rv3-gfh8
- https://nvd.nist.gov/vuln/detail/CVE-2026-112397
- https://github.com/python-pillow/Pillow/commit/18f7c0dfee93063c51db6ed0ca8c4da2999dcb64
- https://github.com/python-pillow/Pillow
- https://github.com/python-pillow/Pillow/releases/tag/13.0.0
- Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N- Debilidad (CWE)
CWE-787- Plataforma
- Python (PyPI)
- Paquete
pillow- Publicada
- 20.10.2026
- Actualizado
- 20.10.2026 23:29
Fuentes y licencias · Editado o traducido por DockRay; se mantienen los derechos y las licencias de las fuentes.
OSV / GitHub Advisory Database - GHSA-58r4-6rv3-gfh8 - CC BY 4.0
Historial de vulnerabilidades: pillow
Todas las vulnerabilidades publicadas de este paquete (Python (PyPI)), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 81
- Primera → última
- 04.2014 10.2026
- Sin corrección
- 0
- Explotada en ataques
- 1
Distribución por gravedad
- Crítica 10
- Alta 53
- Media 16
- Baja 1
- Sin evaluar 1
Divulgaciones por año
- 2017: 1
- 2018: 0
- 2019: 1
- 2020: 10
- 2021: 20
- 2022: 8
- 2023: 3
- 2024: 2
- 2025: 1
- 2026: 23
antes: 12
-
Pillow: Acceso fuera de límites en _imagingmorph con una imagen de ancho cero esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.