HomeCybersecurityKritieke kwetsbaarheid in populaire Python-bibliotheek Pillow maakt code-uitvoering via speciaal gemaakte afbeelding...

Kritieke kwetsbaarheid in populaire Python-bibliotheek Pillow maakt code-uitvoering via speciaal gemaakte afbeelding mogelijk

Kwetsbaarheid / Webbeveiliging

Pillow, de meest gebruikte afbeeldingsbibliotheek voor Python, kan een server opdrachten laten uitvoeren door de naam van het bestand dat het moet openen te manipuleren.

De fout, CVE-2026-112900, zit in de manier waarop Pillow EPS-afbeeldingen verwerkt: het geeft de bestandsnaam door aan Ghostscript, een apart programma dat het afbeeldingsbestand omzet naar pixels, zonder de naam eerst te controleren.

Ghostscript kan een door een aanvaller gekozen naam interpreteren als instructies in plaats van als een bestandsnaam, en doorverwijzen naar een tweede bestand dat opdrachten bevat om uit te voeren. De maintainers van Pillow hebben dit opgelost in versie 13.0.0, uitgebracht op 16 oktober.

Pillow komt vrijwel overal voor waar Python afbeeldingen verwerkt: webuploadformulieren, avatar- en thumbnail-tools, document- en PDF-pijplijnen, en de meeste machine-learningprojecten gebruiken het. OX Security, het bedrijf dat met het rapport op de fouten wees, schat dat de bibliotheek ongeveer 436 miljoen keer per maand wordt gedownload.

Versie 13.0.0 is een grote beveiligingsrelease met fixes over vier ernstniveaus, van laag tot kritisch, waarvan twee door de maintainers als kritiek zijn aangemerkt. Geen van de fouten staat bekend als actief aangevallen.

De zwakte zit in de bestandsnaam, niet in de afbeelding zelf. “De fout wordt getriggerd door de bestandsnaam, niet door iets in het PostScript-document,” zegt het advisory, wat betekent dat een onschuldige EPS-bestand nog steeds schade kan veroorzaken wanneer een aanvaller de naam instelt. Dat maakt uploadendpoints die de opgeslagen of gegenereerde bestandsnaam uit gebruikersinvoer opbouwen het realistische doelwit.

De fout bereikt Ghostscript alleen op hosts waar het gs‑programma is geïnstalleerd, dat Pillow nodig heeft om EPS te openen. Het treft Pillow-versies van 2.6.0 tot en met 12.3.0.

De maintainers kwalificeren het als matig, omdat de aanvaller de bestandsnaam moet kunnen besturen. Het CVE‑record dat door GitHub is toegekend geeft het een score van 9,2 uit 10 en beschrijft dezelfde voorwaarde.

Twee van de fixes vallen in de door de maintainers als “kritiek” aangeduide categorie. De ene is een aparte geheugenfout, omschreven in de release-opmerkingen als het hergebruiken van verouderde afbeeldingsgegevens na een wijziging van de modus. De andere betreft twee overflow-fouten in de JPEG-decodering van Pillow.

Een van die JPEG-fouten, in het FlashPix (FPX)-formaat, bleek een opdracht van een aanvaller uit te voeren vanuit één enkele call naar Image.open() op een speciaal vervaardigd bestand, mits het optionele olefile‑pakket is geïnstalleerd. Pillow herkent dit soort bestanden aan hun inhoud, niet aan hun bestandsextensie, dus een server die onbetrouwbare uploads opent kan getroffen worden zonder enige gebruikersactie.

De andere, CVE-2026-112403, veroorzaakt een overflow van een geheugenbuffer wanneer een programma een thumbnail maakt van een speciaal geconstrueerde lossless JPEG. Het advisory meldt een crash, geen code-executie. De bug werd “gevonden door Anthropic met behulp van Claude om de beveiliging van open-source software te bestuderen, handmatig gevalideerd door Ada Logics”, aldus het advisory — onderdeel van een bredere inspanning van dat bedrijf die honderden fouten in open-sourcebibliotheken heeft opgeleverd.

Een derde fout, CVE-2026-112393, zit al in Pillow sinds 2013. Deze veroorzaakt een bufferoverflow wanneer een programma een gecomprimeerde TIFF-afbeelding opslaat naar geheugen in plaats van naar een bestand op schijf — een veelvoorkomend patroon voor een dienst die een upload opnieuw codeert en teruggeeft. Het advisory meldt dat de onderzoekers het proces ermee lieten crashen en dat ze het alleen konden omzetten naar code-executie met behulp van een tweede, aparte fout die geheugenadressen lekte. Opslaan naar een echt bestand op schijf is niet getroffen.

De CVE‑records, toegewezen door GitHub, scoren de EPS-, TIFF- en JPEG-thumbnailfouten met 9,2 uit 10, een kritieke beoordeling. Elk hangt af van voorwaarden die die score niet volledig weergeeft, en de eigen beoordelingen van de maintainers voor deze reeks lopen van matig tot kritiek. In de CVE‑records merken CISA‑analisten op dat er geen bekende exploitatie is voor de EPS‑fout en dat er een openbaar proof‑of‑concept bestaat voor de TIFF‑fout.

Wat te doen

Upgrade naar Pillow 13.0.0, die al deze problemen oplost, en bouw alle containers, wheels of basisimages opnieuw die een oudere versie bundelen. Pillow 13 laat Python 3.10 vallen, dus installaties die nog op 3.10 draaien hebben ook Python 3.11 of nieuwer nodig.

pip install -U "Pillow>=13.0.0"

Totdat u kunt upgraden geven de beveiligingsrichtlijnen van Pillow en de advisories stappen aan die elk aanvalspad beperken:

  • EPS / Ghostscript: houd het gs-programma van hosts die onbetrouwbare uploads verwerken uitgeschakeld, en geef nooit een door een aanvaller gecontroleerde bestandsnaam door aan Image.open() voor EPS-bestanden.
  • JPEG-thumbnails: vermijd draft() en thumbnail() op onbetrouwbare JPEGs, of roep eerst load() aan, of geef reducing_gap=None door.
  • TIFF: beschouw het opslaan van een TIFF naar een in‑memory buffer zoals io.BytesIO als een gevoelig pad wanneer de afbeelding van een gebruiker afkomstig is.
Nural Sevimov
Nural Sevimovhttps://itvandaag.be
Nural Sevimov is oprichter en eigenaar van Actiefhost. Sinds 2011 werkt hij dagelijks met Linux-servers, hostinginfrastructuur en softwareontwikkeling. Met jarenlange praktijkervaring combineert hij technische kennis met een passie voor betrouwbare, efficiënte en moderne hostingoplossingen.
GERELATEERDE ARTIKELEN

Meest populair

Recente reacties