İçeriğe geç

Python'un görüntü kütüphanesi Pillow'un 13.0.0 sürümü kod çalıştırmaya izin veren açıkları kapattı

Python'da görüntü işlemek için en yaygın kullanılan kütüphane Pillow, 16 Ekim'de yayımladığı 13.0.0 sürümüyle onlarca güvenlik açığını kapattı. Bir EPS dosyasının adıyla sunucuda komut çalıştırmaya izin veren açık ve kritik bellek hataları, bir güvenlik şirketinin raporuyla gündeme geldi.

Kırmızı Ekip
  • 3 dk okuma
  • 4 kaynak

Kısaca

  • EPS açığı (CVE-2026-112900) Pillow 2.6.0 ile 12.3.0 arasını etkiliyor ve yalnızca Ghostscript kurulu sunucularda, saldırgan dosya adını belirleyebildiğinde kullanılabiliyor. Pillow geliştiricileri açığı orta, CVE kaydı ise 9.2 puanla kritik olarak değerlendiriyor.
  • Açıkların hiçbirinin saldırılarda kullanıldığı bilinmiyor. Pillow 13, Python 3.10 desteğini bıraktığı için güncelleme için Python 3.11 ya da daha yenisi gerekiyor.

Pillow, Python ile yazılmış uygulamaların görüntüleri açmak, dönüştürmek ve küçük resimlerini oluşturmak için kullandığı en yaygın kütüphane. Web sitelerindeki dosya yükleme formlarında, profil fotoğrafı ve küçük resim araçlarında, belge ve PDF işleme hatlarında ve makine öğrenmesi projelerinin çoğunda bulunuyor. Açıkları gündeme getiren OX Security’nin tahminine göre kütüphane ayda yaklaşık 436 milyon kez indiriliyor.

Pillow geliştiricileri 16 Ekim’de 13.0.0 sürümünü yayımladı. Sürüm notlarına göre bu sürüm, düşükten kritiğe kadar dört önem seviyesinde onlarca güvenlik açığını kapatıyor. Açıklar, OX Security’nin yayımladığı raporla geniş kitleye duyuldu.

Dosya adıyla komut çalıştırma

Raporun öne çıkardığı açık CVE-2026-112900. Pillow, EPS biçimindeki görüntüleri açmak için Ghostscript adlı ayrı bir programı çalıştırıyor ve dosyanın adını bu programa kontrol etmeden aktarıyor. The Hacker News’in aktardığına göre saldırganın seçtiği bir dosya adı, Ghostscript tarafından dosya adı değil talimat olarak okunabiliyor ve komut içeren ikinci bir dosyaya yönlendirilebiliyor. Pillow’un bildiriminde açığın “PostScript belgesindeki herhangi bir içerikle değil, dosya adıyla tetiklendiği” belirtiliyor. Yani zararsız bir EPS dosyası bile, adını saldırgan belirlediğinde zarar verebiliyor.

Bu yüzden asıl risk altındakiler, yüklenen dosyanın adını kullanıcının girdisinden alan ya da bu girdiyle oluşturan yükleme uç noktaları. Açık, Pillow 2.6.0 ile 12.3.0 arasındaki sürümleri etkiliyor ve yalnızca Ghostscript’in (gs programı) kurulu olduğu sunucularda kullanılabiliyor. Pillow geliştiricileri saldırganın dosya adını kontrol etmesi gerektiği için açığı orta önem derecesinde görüyor. GitHub’ın verdiği CVE kaydı ise açığa CVSS 4.0 ile 9.2 puan veriyor.

Diğer önemli açıklar

Pillow geliştiricilerinin kendi sınıflandırmasında kritik olarak işaretlediği iki kayıt var: görüntü modu değiştikten sonra eski görüntü verisinin yeniden kullanılması (CVE-2026-96639) ve JPEG çözücüsünde, satır genişliğinin karo sınırlarını aşmasından kaynaklanan iki bellek taşması açığı. The Hacker News’in aktardığına göre bu JPEG açıklarından biri FlashPix (FPX) biçiminde; olefile paketi kurulu olduğunda, hazırlanmış bir dosyanın tek bir Image.open() çağrısıyla açılması saldırganın komutunu çalıştırmaya yetti. Pillow dosya türünü uzantısından değil içeriğinden tanıdığı için, güvenilmeyen yüklemeleri açan bir sunucu kullanıcı hiçbir şey yapmadan hedef olabiliyor.

The Hacker News’e göre puanı 9.2 olan iki açık daha var:

  • CVE-2026-112393: 2013’ten beri Pillow’da bulunan bu açık, sıkıştırılmış bir TIFF görüntüsü diskteki bir dosyaya değil bellekteki bir dosya nesnesine (örneğin io.BytesIO) kaydedilirken bellek taşmasına yol açıyor. Bu, yüklenen görüntüyü yeniden kodlayıp geri gönderen servislerde sık kullanılan bir yöntem. Açığı bulanlar işlemi çökertti, kod çalıştırmayı ise ancak bellek adreslerini sızdıran ikinci bir açıkla birlikte başardı.
  • CVE-2026-112403: Hazırlanmış kayıpsız bir JPEG dosyasının küçük resmi oluşturulurken bellek taşmasına yol açıyor. Bildirimde kod çalıştırma değil, çökme rapor ediliyor.

The Hacker News’e göre CVE kayıtlarındaki 9.2 puanlar, her açığın gerektirdiği koşulları yansıtmıyor. Geliştiricilerin bu açıklar için verdiği önem dereceleri ortadan kritiğe uzanıyor.

Önerilen önlemler

Pillow’u 13.0.0 sürümüne güncelleyin. Eski Pillow kopyası taşıyan konteyner imajlarını, wheel paketlerini ve temel imajları da yeniden derleyin. Pillow 13, Python 3.10 desteğini bıraktı. Hâlâ Python 3.10 kullanan kurulumların Python 3.11 ya da daha yenisine de geçmesi gerekiyor.

Güncelleme hemen yapılamıyorsa, Pillow’un güvenlik rehberi ve bildirimler her saldırı yolu için şu önlemlere işaret ediyor:

  • EPS ve Ghostscript: Güvenilmeyen yüklemeleri işleyen sunuculara Ghostscript kurmayın. Saldırganın belirlediği bir dosya adını EPS için Image.open() fonksiyonuna asla aktarmayın.
  • JPEG küçük resimleri: Güvenilmeyen JPEG dosyalarında draft() ve thumbnail() kullanmayın, ya da önce load() çağırın veya reducing_gap=None verin.
  • TIFF: Kullanıcıdan gelen bir görüntüyü io.BytesIO gibi bellekteki bir tampona TIFF olarak kaydetmeyi hassas bir işlem olarak ele alın.

Kaynaklar