Direct naar de inhoud
Cybersecurity

Pillow-kwetsbaarheid: code uitvoeren via EPS-filename

Pillow-kwetsbaarheid code execution

Python gebruikt vaak de beeldbibliotheek Pillow voor taken als avatar- en thumbnailgeneratie, documentverwerking en onderdelen van machine-learning pipelines. Juist daarom is er nu extra aandacht nodig voor de Pillow-kwetsbaarheid code execution: een probleem waardoor een server via een speciaal gemaakte afbeelding en bestandsnaam opdrachten kan uitvoeren.

De kern zit niet in de “inhoud” van de foto zelf, maar in hoe Pillow bepaalde bestandsindelingen verwerkt. Als je onbetrouwbare uploads verwerkt en je Pillow-versie niet updatet, vergroot je het risico dat een aanvaller misbruik kan maken van kwetsbaar gedrag.

Wat is er precies mis met Pillow?

De belangrijkste kwetsbaarheid heet CVE-2026-112900. In de verwerking van EPS-afbeeldingen geeft Pillow de naam van een bestand door aan een extern programma: Ghostscript. Pillow checkt die bestandsnaam niet eerst op wat er achter kan zitten.

Daardoor kan Ghostscript een naam kiezen als instructie in plaats van als louter bestandsreferentie. Vervolgens kan het door de aanvaller geselecteerde “tweede bestand” aanwijzen dat commando’s bevat om uit te voeren.

Belangrijk: de trigger ligt bij de bestandsnaam, niet bij wat er in het PostScript-document staat. Dat maakt het in de praktijk extra relevant voor upload- en opslagflows waar bestandsnamen worden meegenomen of herbouwd op basis van gebruikersinput.

Wanneer wordt code execution mogelijk?

De Pillow-kwetsbaarheid code execution kan niet zomaar altijd worden uitgebuit. De aanval krijgt pas een kans op hosts waar Ghostscript (gs) daadwerkelijk geïnstalleerd is en waar Pillow EPS-bestanden moet openen.

Daarnaast geldt een versie-afhankelijk bereik: Pillow is kwetsbaar vanaf 2.6.0 tot en met 12.3.0. Met andere woorden: als je nog een oude Pillow-versie gebruikt, loop je risico wanneer je EPS-uitvoer of -uploads verwerkt op een systeem met Ghostscript.

Welke Pillow-onderdelen krijgen nog meer fixes?

Naast de EPS/Ghostscript-gerelateerde fout zijn er in dezelfde beveiligingsrelease meerdere verbeteringen opgenomen. De release Pillow 13.0.0 (uitgebracht op 16 oktober) pakt een pakket problemen aan, met fixes in verschillende ernstcategorieën.

Onderdeel van de release zijn onder meer:

  • Een memory bug die stale beelddata hergebruikt na een moduswijziging.
  • Overflow-kwetsbaarheden in JPEG-decoding, waaronder een issue met FlashPix (FPX).
  • CVE-2026-112403: een geheugenbuffer-overflow bij het genereren van thumbnails van een specifiek type “lossless” JPEG. Volgens de beschrijving resulteert dit primair in een crash, niet automatisch in code execution.
  • CVE-2026-112393: al langer bestaande kwetsbaarheid (sinds 2013) die optreedt bij het opslaan van een gecomprimeerde TIFF naar een in-memory buffer in plaats van naar een bestand op schijf. In de advisering wordt een crash genoemd en wordt code execution gerealiseerd met hulp van een tweede, afzonderlijke fout.

De hamvraag voor beheerders is dus niet alleen “heb je Pillow?”, maar ook: welke afbeeldingsformaten verwerk je, waar draait dat (met Ghostscript of niet) en hoe ga je om met bestandsnamen, thumbnails en in-memory verwerking.

Waarom is juist de bestandsnaam het probleem?

De advisory benadrukt dat de kwetsbaarheid wordt geactiveerd door de bestandsnaam, niet door de “onschuldige” EPS-inhoud zelf. Een aanvaller kan dus een bestand aanleveren dat op het eerste gezicht niet verdacht lijkt, maar waarvan de bestandsnaam (of hoe die wordt doorgegeven) het gevaar veroorzaakt.

Dat betekent dat upload-endpoints waarbij bestandsnamen worden overgenomen, of server-side workflows die namen opnieuw samenstellen uit gebruikersinput, een realistischer aanvalsoppervlak vormen.

Praktische aanpak: wat kun je nu doen?

1) Werk direct bij naar Pillow 13.0.0

De meest effectieve maatregel is eenvoudig: upgrade naar Pillow 13.0.0. Door die update verdwijnen de genoemde paden, inclusief de EPS/Ghostscript gerelateerde fout en de aanvullende issues in JPEG en TIFF verwerking.

Na de update moet je bovendien denken aan deployment: als je containers, wheels of basisimages een oudere Pillow-versie bevatten, is het nodig om die onderdelen opnieuw te bouwen.

De update-instructie luidt:

pip install -U

Bron: https://thehackernews.com/2026/10/critical-flaw-in-pythons-popular-pillow.html