ImageMagick: luka w dekoderze MIFF może powodować wyczerpanie CPU i lokalny DoS - Security Bez Tabu

ImageMagick: luka w dekoderze MIFF może powodować wyczerpanie CPU i lokalny DoS

Cybersecurity news

Wprowadzenie do problemu / definicja

W ekosystemie przetwarzania obrazów szczególnie niebezpieczne są błędy, które można wywołać samym dostarczeniem spreparowanego pliku. W przypadku ImageMagick problem dotyczy dekodera formatu MIFF i prowadzi do nieskończonej pętli podczas obsługi określonych danych wejściowych. Skutkiem jest pełne zajęcie zasobów procesora przez proces analizujący obraz, co może przełożyć się na lokalną odmowę usługi.

Podatność oznaczona jako CVE-2026-46522 została sklasyfikowana jako problem wysokiego ryzyka operacyjnego, ponieważ nie wymaga skomplikowanego łańcucha ataku. Wystarczy odpowiednio przygotowany plik, aby wymusić zapętlenie procesu i doprowadzić do przeciążenia CPU.

W skrócie

  • Luka dotyczy ImageMagick i dekodera formatu MIFF.
  • Problem pojawia się przy obsłudze pliku MIFF wykorzystującego kompresję BZip.
  • Źródłem błędu jest nieprawidłowa obsługa bloku wejściowego o długości równej zero.
  • Efektem jest nieskończona pętla i 100-procentowe użycie CPU.
  • Najbardziej realnym scenariuszem ataku jest lokalny DoS lub zakłócenie działania usług przetwarzających pliki użytkowników.
  • Problem został załatany w nowszych wersjach oprogramowania oraz aktualizacjach dystrybucyjnych.

Kontekst / historia

ImageMagick od lat pozostaje jednym z podstawowych narzędzi wykorzystywanych do konwersji, identyfikacji i przetwarzania grafiki. Jest obecny w środowiskach serwerowych, aplikacjach webowych, systemach CMS, pipeline’ach CI/CD i backendach odpowiedzialnych za generowanie miniaturek lub analizę przesyłanych materiałów.

Z tego powodu każda podatność w parserach oraz dekoderach obsługujących formaty graficzne ma znaczenie wykraczające poza pojedynczą stację roboczą. W praktyce błędy tego typu mogą wpływać na niezawodność usług internetowych, wydajność kolejek zadań oraz stabilność współdzielonych hostów i kontenerów.

Opisy techniczne i wpisy proof-of-concept opublikowane w maju 2026 roku wskazały, że błąd można odtworzyć w gałęzi 7.x. Równolegle pojawiły się informacje o poprawkach po stronie projektu oraz aktualizacjach bezpieczeństwa przygotowanych przez dostawców dystrybucji Linuksa.

Analiza techniczna

Sedno problemu znajduje się w logice dekodera MIFF, dokładniej w ścieżce odpowiedzialnej za dekompresję danych BZip2. Mechanizm przetwarzania nie odrzuca przypadku, w którym długość skompresowanego bloku wynosi zero. W efekcie kod przechodzi do dalszego etapu obsługi danych, mimo że wejście nie powinno być uznane za poprawne.

W takim scenariuszu biblioteka dekompresująca nie doprowadza procesu do bezpiecznego zakończenia, a warunek wyjścia z pętli nie zostaje osiągnięty. Mamy więc do czynienia z klasycznym błędem kontrolnym w logice parsera: wejście jest formalnie akceptowane, ale prowadzi do stanu, w którym proces stale wykonuje te same operacje i konsumuje czas procesora.

Warto podkreślić, że nie jest to luka prowadząca do nadpisania pamięci czy zdalnego wykonania kodu. Mimo to wpływ na środowisko produkcyjne może być istotny, ponieważ nawet pojedynczy proces działający w nieskończonej pętli może blokować zasoby. Przy większej liczbie żądań możliwe jest szybkie wyczerpanie workerów, przeciążenie kontenera lub spadek dostępności całej usługi.

Analiza publicznego opisu wskazuje również na niespójność między backendami dekompresji. Ścieżki LZMA i Zip kończą przetwarzanie błędem dla pustego wejścia, natomiast gałąź BZip2 pozostaje podatna na zapętlenie. Taki rozdźwięk sugeruje brak jednolitej walidacji danych wejściowych pomiędzy poszczególnymi metodami kompresji.

Do wywołania problemu wystarcza niewielki plik MIFF zawierający odpowiednio skonstruowany nagłówek oraz blok o zerowej długości. Taki plik może zostać przekazany do narzędzi takich jak identify, convert lub innych komponentów korzystających z tej samej logiki dekodowania.

Konsekwencje / ryzyko

Najbardziej bezpośrednią konsekwencją podatności jest odmowa usługi wynikająca z wyczerpania CPU. W środowisku desktopowym może to oznaczać zawieszenie pojedynczego procesu, jednak w architekturach serwerowych skala problemu bywa znacznie większa.

  • przeciążenie workerów odpowiedzialnych za przetwarzanie uploadów,
  • wzrost opóźnień w kolejkach zadań,
  • degradacja wydajności usług współdzielących ten sam host lub kontener,
  • częściowa niedostępność aplikacji,
  • dodatkowe koszty operacyjne wynikające z autoskalowania lub błędnej diagnostyki wydajnościowej.

Ryzyko rośnie wszędzie tam, gdzie ImageMagick uruchamiany jest automatycznie po przesłaniu pliku przez użytkownika. Dotyczy to między innymi systemów CMS, platform e-commerce, usług generowania miniaturek, skanerów treści i rozwiązań SaaS przetwarzających obrazy klientów. Jeśli aplikacja nie ogranicza dozwolonych dekoderów albo akceptuje formaty pośrednie, atak może zostać przeprowadzony bez wcześniejszego uwierzytelnienia.

Z perspektywy bezpieczeństwa operacyjnego jest to klasyczny przypadek resource exhaustion. Tego rodzaju luka nie musi prowadzić do przejęcia systemu, aby była kosztowna biznesowo. W środowiskach o wysokiej gęstości usług nawet krótkotrwałe przeciążenie CPU przez kilka procesów może wywołać realne zakłócenia i wpłynąć na SLA.

Rekomendacje

Najważniejszym działaniem pozostaje aktualizacja ImageMagick do wersji zawierającej poprawkę. Publiczne informacje wskazują, że problem został naprawiony między innymi w liniach 7.1.2-23 oraz 6.9.13-48, a dostawcy dystrybucji publikują własne pakiety z backportami bezpieczeństwa.

Organizacje korzystające z ImageMagick powinny również wdrożyć dodatkowe warstwy ochronne ograniczające skutki podobnych błędów parserów.

  • wyłączyć lub ograniczyć obsługę rzadko używanych formatów, w tym MIFF, jeśli nie są potrzebne biznesowo,
  • stosować polityki bezpieczeństwa ImageMagick ograniczające dostępne kodery i dekodery,
  • uruchamiać przetwarzanie obrazów w odizolowanych procesach, kontenerach lub sandboxach,
  • narzucać limity CPU, pamięci i czasu wykonania dla procesów konwersji,
  • wdrożyć timeouty na poziomie aplikacji i systemu kolejkowego,
  • monitorować anomalie, takie jak długotrwałe 100-procentowe użycie CPU przez procesy związane z ImageMagick,
  • walidować typ pliku na podstawie sygnatury, a nie wyłącznie deklarowanego MIME type.

W środowiskach opartych na pakietach systemowych warto dodatkowo sprawdzić status poprawek u dostawcy dystrybucji. Numer wersji projektu upstream nie zawsze oddaje rzeczywisty stan zabezpieczeń, ponieważ poprawki bywają backportowane do starszych wydań pakietów.

Podsumowanie

CVE-2026-46522 pokazuje, że nawet podatność nieprowadząca do wykonania kodu może stanowić realne zagrożenie dla dostępności usług. Błąd w dekoderze MIFF w ImageMagick pozwala wywołać nieskończoną pętlę podczas przetwarzania spreparowanego pliku i doprowadzić do pełnego obciążenia CPU.

Dla administratorów, zespołów DevSecOps i operatorów usług przyjmujących pliki od użytkowników oznacza to konieczność szybkiej aktualizacji, przeglądu polityk formatów wejściowych oraz wzmocnienia izolacji procesów odpowiedzialnych za analizę obrazów. To kolejny przykład, że parsery danych wejściowych pozostają jednym z najbardziej wrażliwych elementów nowoczesnych aplikacji.

Źródła