Katalog CVE

CVE-2026-77118

WysokieCVSS 8.4
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.13%

Percentyl 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
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.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS