Alta

Pillow: Acceso fuera de límites en _imagingmorph con una imagen de ancho cero

  • Publicada: 20.10.2026
  • Actualizado: 20.10.2026 23:29

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:81 establece outrow[0] = outrow[width - 1] = 0;

match() y get_on_pixels() utilizan el mismo patrón de indexación de bordes.

PoC

python
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:

bash
$ 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.

PlataformaPaqueteVersiones vulnerablesCorregida en
Python (PyPI) pillow < 13.0.0 13.0.0

Referencias

Puntuación CVSS -
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.

Todas (81) en el archivo
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

  1. 2017: 1
  2. 2018: 0
  3. 2019: 1
  4. 2020: 10
  5. 2021: 20
  6. 2022: 8
  7. 2023: 3
  8. 2024: 2
  9. 2025: 1
  10. 2026: 23

antes: 12

Gravedad:
  1. Pillow: Acceso fuera de límites en _imagingmorph con una imagen de ancho cero esta entrada
    Alta CVE-2026-112397 < 13.0.0 13.0.0
  2. Alta · 7.5 CVE-2026-59200 >= 5.1.0, < 12.3.0 12.3.0
  3. Alta CVE-2026-42311 >= 10.3.0, < 12.2.0 12.2.0
  4. Alta · 7.5 CVE-2026-40192 >= 10.3.0, < 12.2.0 12.2.0
  5. Alta CVE-2026-25990 >= 10.3.0, < 12.1.1 12.1.1
  6. Alta · 7.1 CVE-2025-48379 >= 11.2.0, < 11.3.0 11.3.0
  7. Alta · 6.7 CVE-2024-28219 < 10.3.0 10.3.0
  8. Crítica · 8.1 CVE-2023-50447 < 10.2.0 10.2.0
  9. Alta · 8.8 Explotada en ataques CVE-2023-4863 < 10.0.1 10.0.1
  10. Alta · 7.5 CVE-2022-45199 >= 9.2.0, < 9.3.0 9.3.0
  11. Alta · 7.5 CVE-2022-30595 >= 9.1.0, < 9.1.1 9.1.1
  12. Alta · 9.1 CVE-2022-24303 < 9.0.1 9.0.1
  13. Crítica · 9.8 CVE-2022-22817 < 9.0.1 9.0.1
  14. Alta · 7.5 CVE-2021-23437 >= 5.2.0, < 8.3.2 8.3.2
  15. Crítica · 9.8 CVE-2021-34552 < 8.3.0 8.3.0
  16. Alta · 7.5 CVE-2021-28677 < 8.2.0 8.2.0
  17. Alta · 7.5 CVE-2021-28676 < 8.2.0 8.2.0
  18. Alta · 9.1 CVE-2021-25288 >= 2.4.0, < 8.2.0 8.2.0
  19. Alta · 9.1 CVE-2021-25287 >= 2.4.0, < 8.2.0 8.2.0
  20. Alta · 5.5 CVE-2021-28675 < 8.2.0 8.2.0
  21. Alta · 7.5 CVE-2021-25293 >= 4.3.0, < 8.1.1 8.1.1
  22. Alta · 7.5 CVE-2021-25291 < 8.2.0 8.2.0
  23. Alta · 7.5 CVE-2021-25290 < 8.1.1 8.1.1
  24. Crítica · 9.8 CVE-2021-25289 < 8.1.1 8.1.1
  25. Alta · 7.5 CVE-2021-27923 < 8.1.2 8.1.2
  26. Alta · 7.5 CVE-2021-27922 < 8.1.2 8.1.2
  27. Alta · 7.5 CVE-2021-27921 < 8.1.2 8.1.2
  28. Alta · 8.8 CVE-2020-35654 < 8.1.0 8.1.0
  29. Alta · 7.1 CVE-2020-35653 < 8.1.0 8.1.0
  30. Crítica · 8.1 CVE-2020-11538 < 7.1.0 7.1.0
  31. Alta · 5.5 CVE-2020-10994 < 7.1.0 7.1.0
  32. Alta · 5.5 CVE-2020-10177 < 7.1.0 7.1.0
  33. Alta · 7.5 CVE-2019-19911 < 6.2.2 6.2.2
  34. Alta · 7.1 CVE-2020-5313 < 6.2.2 6.2.2
  35. Crítica · 9.8 CVE-2020-5312 < 6.2.2 6.2.2
  36. Crítica · 9.8 CVE-2020-5311 < 6.2.2 6.2.2
  37. Crítica · 8.8 CVE-2020-5310 < 6.2.2 6.2.2
  38. Alta · 6.5 CVE-2016-2533 < 3.1.1 3.1.1
  39. Crítica · 9.8 CVE-2016-4009 < 3.1.1 3.1.1
  40. Alta · 6.5 CVE-2016-0775 < 3.1.1 3.1.1
Mostrar más (3) Mostrando 60 de 63

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.

Conectar tu aplicación
Newsletter DockRay

La seguridad de tus aplicaciones en tu correo

Vulnerabilidades importantes, recomendaciones concretas y consejos prácticos para tus aplicaciones. Elige tus tecnologías y sigue lo que importa para tu proyecto.

  • Un resumen diario de nuevas vulnerabilidades, también las críticas.
  • Avisos sobre actualizaciones importantes.
  • Consejos prácticos sobre seguridad y monitorización de aplicaciones.

Déjalo vacío para recibir avisos de todas las tecnologías.

Suscripción gratuita. Date de baja con un clic en cualquier correo.