Pillow 13.0.0 popravlja propuste u EPS, JPEG i TIFF obradi

Pillow je 16. oktobra objavio verziju 13.0.0, koja otklanja više bezbednosnih propusta u popularnoj Python biblioteci za obradu slika. Među njima je CVE-2026-112900: pri otvaranju EPS slike napadački odabrano ime datoteke može dovesti do izvršavanja komandi preko Ghostscript-a. Pogođene su verzije od Pillow 2.6.0 do 12.3.0, a OX Security procenjuje da se biblioteka preuzima oko 436 miliona puta mesečno.
Greška nije u sadržaju PostScript dokumenta, već u nazivu datoteke. Pillow pri obradi EPS-a prosleđuje ime Ghostscript-u, programu koji koristi za pretvaranje slike u piksele, bez prethodne provere. Ghostscript takav naziv može protumačiti kao instrukciju i usmeriti obradu ka drugoj datoteci sa komandama.
EPS putanja zavisi od Ghostscript-a i kontrole naziva
Ovaj put napada moguć je samo na hostovima na kojima je instaliran program gs, jer je potreban za otvaranje EPS datoteka. Praktično su izloženi servisi za otpremanje slika, avatara i minijatura, kao i tokovi za dokumente i PDF-ove, ukoliko zadržavaju ili grade ime uskladištene datoteke iz unosa korisnika.
Održavaoci Pillow-a propust ocenjuju kao umeren zato što napadač mora da kontroliše naziv datoteke. CVE zapis koji je dodelio GitHub ocenjuje isti problem sa 9,2 od 10. Za EPS propust nije poznata aktivna zloupotreba.
Još kritičnih ispravki u JPEG i TIFF obradi
Izdanje 13.0.0 sadrži ispravke kroz četiri nivoa ozbiljnosti, a dve su kod održavalaca označene kao kritične. Jedna se odnosi na zastarele podatke slike koji se ponovo koriste nakon promene režima rada. Druga obuhvata dva prekoračenja memorije pri JPEG dekodiranju.
Jedan JPEG problem u FlashPix formatu može se aktivirati jednim pozivom Image.open() nad posebno pripremljenom datotekom kada je instaliran opcioni paket olefile. Pillow fajlove prepoznaje po sadržaju, a ne samo po ekstenziji. CVE-2026-112403 se javlja pri pravljenju minijature posebno pripremljenog JPEG-a bez gubitaka; prijavljeno je rušenje procesa, ne i izvršavanje koda.
Tu je i CVE-2026-112393, prisutan od 2013. godine, pri čuvanju komprimovane TIFF slike u memorijski bafer poput io.BytesIO. Prijavljivači su njime srušili proces, a izvršavanje koda ostvarili tek uz dodatni, odvojeni propust koji otkriva memorijske adrese. Čuvanje na stvarni fajl na disku nije pogođeno.
Koraci za timove koji obrađuju korisničke slike
Preporučeni potez je nadogradnja na Pillow 13.0.0 i ponovna izgradnja kontejnera, wheel paketa i osnovnih slika koje sadrže stariju verziju. Pillow 13 više ne podržava Python 3.10, pa je za takva okruženja potreban prelazak na Python 3.11 ili noviji.
Dok nadogradnja nije završena, hostovi koji obrađuju nepouzdana otpremanja ne bi trebalo da imaju instaliran Ghostscript niti da prosleđuju napadački kontrolisana imena EPS datoteka funkciji Image.open(). Za nepouzdane JPEG fajlove treba izbeći draft() i thumbnail(), odnosno prvo pozvati load() ili proslediti reducing_gap=None. TIFF čuvanje u memoriju iz korisničkog unosa treba tretirati kao osetljivu putanju. Za poslovne sisteme to znači da inventar Python zavisnosti i slika kontejnera treba povezati sa proverom tokova za otpremanje datoteka i instalacije Ghostscript-a.

