Krytyczna luka w Pillow dla Pythona: spreparowany obraz może prowadzić do wykonania kodu - Security Bez Tabu

Krytyczna luka w Pillow dla Pythona: spreparowany obraz może prowadzić do wykonania kodu

Cybersecurity news

Wprowadzenie do problemu / definicja

Pillow to najpopularniejsza biblioteka do przetwarzania obrazów w ekosystemie Pythona, szeroko stosowana w aplikacjach webowych, systemach generowania miniaturek, obiegu dokumentów oraz pipeline’ach analitycznych i ML. Ujawnione błędy bezpieczeństwa pokazują, że nawet standardowa obsługa plików graficznych może stać się wektorem ataku, jeśli aplikacja przetwarza niezaufane dane bez odpowiednich zabezpieczeń.

Najpoważniejsza z opisanych podatności dotyczy obsługi plików EPS i może prowadzić do zdalnego wykonania kodu. Problem jest szczególnie istotny dla środowisk serwerowych, które automatycznie otwierają lub konwertują obrazy przesyłane przez użytkowników.

W skrócie

Kluczowa luka została oznaczona jako CVE-2026-112900 i dotyczy mechanizmu przetwarzania plików EPS przez Pillow z użyciem zewnętrznego komponentu Ghostscript. W określonych warunkach atakujący może doprowadzić do uruchomienia poleceń systemowych poprzez odpowiednio przygotowaną nazwę pliku przekazywanego do renderowania.

  • najgroźniejszy problem obejmuje obsługę formatu EPS,
  • podatność wynika z niewłaściwej walidacji nazwy pliku,
  • warunkiem wykorzystania tej ścieżki ataku jest obecność Ghostscript w systemie,
  • poprawki opublikowano w Pillow 13.0.0, wydanym 16 października 2026 roku,
  • aktualizacja usuwa także inne błędy dotyczące m.in. JPEG, TIFF i PDF.

Kontekst / historia

Biblioteki do przetwarzania obrazów od lat pozostają atrakcyjnym celem dla badaczy bezpieczeństwa i cyberprzestępców. Wynika to z faktu, że obsługują złożone formaty binarne, wykorzystują rozbudowane parsery i często działają po stronie serwera, gdzie skutki skutecznego ataku są znacznie poważniejsze niż na stacji roboczej użytkownika.

W przypadku Pillow znaczenie ma jego powszechność. Biblioteka jest obecna w ogromnej liczbie aplikacji backendowych, gdzie obrazy są przetwarzane automatycznie zaraz po przesłaniu. Dodatkowym czynnikiem ryzyka jest integracja z Ghostscript, wykorzystywanym do renderowania plików EPS. To właśnie na styku tych komponentów powstał scenariusz, który może prowadzić do wykonania poleceń systemowych.

Zakres podatnych wersji jest szeroki i obejmuje wydania od 2.6.0 do 12.3.0, co oznacza, że problem może występować również w starszych, długo nieaktualizowanych środowiskach produkcyjnych.

Analiza techniczna

Istota podatności nie sprowadza się wyłącznie do samej zawartości obrazu, ale do sposobu obsługi nazwy pliku. Podczas otwierania pliku EPS biblioteka Pillow uruchamia Ghostscript i przekazuje do niego nazwę wejściowego zasobu. Jeśli aplikacja pozostawia użytkownikowi wpływ na tę nazwę lub konstruuje ją na bazie niekontrolowanych danych, możliwe staje się przygotowanie ciągu znaków, który nie zostanie potraktowany wyłącznie jako ścieżka, lecz jako zestaw instrukcji interpretowanych przez zewnętrzny komponent.

W praktyce oznacza to, że nośnikiem ataku może być nie tylko spreparowany plik, ale również niebezpieczny sposób jego zapisania i przekazania do procesu renderowania. Tego rodzaju scenariusz wymaga obecności programu gs w systemie, ponieważ bez Ghostscript ścieżka eksploatacji związana z EPS nie zostanie uruchomiona.

Równolegle wraz z wersją Pillow 13.0.0 usunięto również inne istotne błędy bezpieczeństwa. Obejmują one krytyczne problemy związane z dekodowaniem JPEG, w tym przepełnienia bufora, a także luki w ścieżkach przetwarzania TIFF i PDF, które mogą skutkować awariami, odczytem poza buforem, wyczerpaniem zasobów, a w określonych warunkach także dalszą kompromitacją procesu.

Z perspektywy obrony ważne jest również to, że część formatów może być rozpoznawana na podstawie sygnatur i zawartości, a nie tylko rozszerzenia pliku. To osłabia skuteczność prostych filtrów opartych wyłącznie na nazwie przesyłanego zasobu.

Konsekwencje / ryzyko

Najbardziej narażone są organizacje, których backend automatycznie przetwarza obrazy pochodzące od użytkowników. Dotyczy to zwłaszcza formularzy uploadu, generatorów miniatur i awatarów, systemów OCR, paneli CMS, platform e-commerce, repozytoriów multimediów, narzędzi DAM oraz mikroserwisów odpowiedzialnych za konwersję grafiki i dokumentów.

Potencjalne skutki udanego ataku obejmują:

  • zdalne wykonanie kodu na serwerze aplikacyjnym,
  • przejęcie kontenera lub instancji odpowiedzialnej za przetwarzanie plików,
  • eskalację ataku w środowisku chmurowym lub klastrze,
  • awarie usług oraz odmowę dostępu wskutek crashy lub wyczerpania zasobów,
  • naruszenie poufności danych obsługiwanych przez aplikację.

Poziom realnego ryzyka zależy od architektury wdrożenia. Szczególnie zagrożone są systemy, które jednocześnie dopuszczają niezaufane uploady, korzystają z podatnej wersji Pillow, mają zainstalowany Ghostscript i zachowują wpływ użytkownika na finalną nazwę pliku. Nawet jeśli organizacja nie obsługuje EPS, pozostałe luki w JPEG, TIFF i PDF nadal mogą stanowić istotne zagrożenie operacyjne.

Rekomendacje

Podstawowym działaniem powinno być jak najszybsze przejście do Pillow 13.0.0 lub nowszej wersji. Sama aktualizacja pakietu nie zawsze wystarczy — konieczne może być również przebudowanie obrazów kontenerów, artefaktów CI/CD oraz środowisk bazowych, które mogły utrwalić starsze wydania biblioteki.

Warto także wdrożyć dodatkowe środki bezpieczeństwa:

  • usunąć lub wyłączyć Ghostscript tam, gdzie obsługa EPS nie jest wymagana,
  • całkowicie zablokować przetwarzanie EPS w ścieżkach obsługujących niezaufane pliki,
  • nigdy nie przekazywać do operacji otwierania obrazów nazw plików kontrolowanych przez użytkownika,
  • zastępować oryginalne nazwy bezpiecznymi identyfikatorami generowanymi po stronie serwera,
  • weryfikować typ pliku na podstawie sygnatur i polityk treści, a nie wyłącznie rozszerzenia,
  • izolować procesy przetwarzania obrazów w sandboxie lub osobnych kontenerach o minimalnych uprawnieniach,
  • ograniczyć dostęp usług multimedialnych do systemu plików, sieci i interpreterów systemowych,
  • monitorować wyjątki, crashe i nietypowe procesy potomne uruchamiane przez komponenty przetwarzające obrazy,
  • przeprowadzić przegląd zależności pośrednich, ponieważ Pillow często występuje jako pakiet instalowany tranzytywnie.

W środowiskach o podwyższonych wymaganiach bezpieczeństwa warto rozważyć również dodatkowe kontrole, takie jak seccomp, AppArmor, SELinux, ograniczenie egressu sieciowego, system plików tylko do odczytu oraz uruchamianie pipeline’ów przetwarzania w wydzielonych, jednorazowych workerach.

Podsumowanie

Najnowsze podatności w Pillow przypominają, że przetwarzanie obrazów pozostaje jednym z bardziej niedocenianych elementów powierzchni ataku nowoczesnych aplikacji. Najgłośniejsza luka związana z EPS i Ghostscript może prowadzić do wykonania kodu w scenariuszu, w którym napastnik kontroluje nazwę pliku, ale równie ważne są pozostałe poprawki dotyczące JPEG, TIFF i PDF.

Dla zespołów bezpieczeństwa, administratorów i DevSecOps oznacza to konieczność szybkiej aktualizacji, przeglądu architektury obsługi uploadów oraz ograniczenia zaufania do wszystkich danych wejściowych związanych z multimediami.

Źródła

  1. Pillow 13.0.0 Release Notes
  2. The Hacker News: Critical Flaw in Python’s Popular Pillow Image Library Allows Code Execution via a Crafted Image
  3. CVE Record: CVE-2026-112900