CVE-2026-77118
WysokieCVSS 8.4Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 3 - wyżej niż 3% wszystkich znanych CVE
Streszczenie
W dekoderze Photo CD (PCD) w GraphicsMagick występuje zapis poza granicami sterty. W funkcji DecodeImage() (coders/pcd.c) pętla delty Huffmana przesuwa wskaźnik wyjściowy za pomocą q++ po każdej zdekodowanej delcie i nigdy nie sprawdza go względem końca buforów płaszczyzn luma/chroma alokowanych na stercie. Wskaźnik jest przesuwany tylko wtedy, gdy znacznik synchronizacji wprowadza nową płaszczyznę/wiersz; między znacznikami synchronizacji długość przebiegu jest ograniczona wyłącznie przez dane wejściowe. Specjalnie spreparowany plik PCD, który umieszcza wskaźnik blisko końca płaszczyzny, a następnie dostarcza długi ciąg delt bez synchronizacji, powoduje przesunięcie wskaźnika poza koniec alokacji i zapis przez niego. Przetwarzanie niezaufanego pliku PCD — na przykład za pomocą gm convert lub gm identify, lub przez dowolną aplikację połączoną z libGraphicsMagick — może uszkodzić pamięć sterty poza buforami.
Ocena ryzyka
Przetwarzanie niezaufanego pliku PCD może prowadzić do uszkodzenia pamięci, co może skutkować awarią aplikacji, wykonaniem dowolnego kodu lub naruszeniem integralności danych.
Rekomendacja
Zaleca się aktualizację GraphicsMagick do najnowszej wersji zawierającej poprawkę. Należy również unikać przetwarzania niezaufanych plików PCD i ograniczyć dostęp do aplikacji korzystających z tej biblioteki.
Inne podatności w GraphicsMagick
Zobacz wszystkie- CVE-2017-17912Wysokie
W GraphicsMagick 1.4 snapshot-20171217 Q8 występuje błąd przepełnienia bufora w pamięci sterty w funkcji ReadNewsProfile w pliku coders/tiff.c, gdzie LocaleNCompare odczytuje dane z pamięci sterty poza przydzielonym obszarem.
- CVE-2017-17783Wysokie
W GraphicsMagick 1.3.27a występuje problem z nadmiernym odczytem bufora w funkcji ReadPALMImage w pliku coders/palm.c, gdy QuantumDepth wynosi 8.
- CVE-2017-17782Wysokie
W GraphicsMagick 1.3.27a występuje problem z nadmiernym odczytem bufora w pamięci w funkcji ReadOneJNGImage w pliku coders/png.c, związany z alokacją fragmentu oFFs.
- CVE-2017-17503Wysokie
W GraphicsMagick 1.3.26 występuje podatność w funkcji ReadGRAYImage w pliku coders/gray.c, która pozwala na nadmierne odczytywanie bufora w pamięci sterty poprzez specjalnie przygotowany plik.
- CVE-2017-17502Wysokie
W GraphicsMagick 1.3.26 występuje podatność w funkcji ReadCMYKImage w pliku coders/cmyk.c, która pozwala na nadmierne odczytywanie bufora w pamięci heap poprzez specjalnie przygotowany plik.
- CVE-2017-17501Wysokie
W GraphicsMagick 1.3.26 występuje podatność związana z nadmiernym odczytem bufora w pamięci sterty w funkcji WriteOnePNGImage w pliku coders/png.c, która może być wykorzystana poprzez odpowiednio przygotowany plik.
- CVE-2017-17500Wysokie
W GraphicsMagick 1.3.26 występuje podatność w funkcji ReadRGBImage w pliku coders/rgb.c, która pozwala na nadmierne odczytywanie bufora w pamięci sterty poprzez spreparowany plik.
- CVE-2017-17498Wysokie
W funkcji WritePNMImage w pliku coders/pnm.c w GraphicsMagick 1.3.26 istnieje podatność, która pozwala zdalnym atakującym na spowodowanie odmowy usługi poprzez przepełnienie bufora na stercie, co prowadzi do awarii aplikacji.
- CVE-2017-16669Wysokie
W GraphicsMagick 1.3.26 występuje podatność, która pozwala zdalnym atakującym na spowodowanie odmowy usługi poprzez przepełnienie bufora w sterowniku wpg.c, co prowadzi do awarii aplikacji. Problem ten jest związany z funkcją AcquireCacheNexus w pliku magick/pixel_cache.c.
- CVE-2017-16547Wysokie
Funkcja DrawImage w GraphicsMagick 1.3.26 nieprawidłowo obsługuje słowa kluczowe pop związane z słowami kluczowymi push, co może prowadzić do awarii aplikacji lub odmowy usługi.
Oryginalny opis (angielski, źródło NVD)
A heap out-of-bounds write exists in the Photo CD (PCD) decoder of GraphicsMagick. In DecodeImage() (coders/pcd.c), the Huffman delta loop advances its output pointer with q++ after every decoded delta and never checks it against the end of the heap-allocated luma/chroma plane buffers. The pointer is repositioned only when a sync marker introduces a new plane/row; between sync markers the run length is bounded solely by the input. A crafted PCD file that positions the pointer near the end of a plane and then supplies a long run of deltas with no intervening sync therefore walks the pointer past the end of the allocation and writes through it. Processing an untrusted PCD file — for example with gm convert or gm identify, or through any application linked against libGraphicsMagick — can corrupt heap memory beyond the buffers.

