CVE-2026-54627
KrytyczneCVSS 9.8Streszczenie
Biblioteka SAIL w wersji 0.9.10 i wcześniejszych zawiera błąd niezgodności trybu i głębi kolorów podczas wczytywania plików PSD w trybie Bitmap. Funkcja psd_private_sail_pixel_format() zwraca format jednobitowy, podczas gdy loader akceptuje głębię 8, co powoduje zapis poza buforem sterty i prowadzi do uszkodzenia pamięci, awarii lub potencjalnego wykonania kodu.
Ocena ryzyka
Wczytanie spreparowanego pliku PSD przez aplikację używającą SAIL może doprowadzić do zdalnego wykonania kodu lub awarii, zagrażając poufności, integralności i dostępności systemu.
Rekomendacja
Zaktualizuj bibliotekę SAIL do wersji 1.0.0 lub nowszej, która naprawia tę niezgodność.
Inne podatności w SAIL
Zobacz wszystkie- CVE-2026-54692Wysokie
W bibliotece SAIL przed wersją 1.0.0 funkcja sail_codec_load_frame_v8_xbm() w src/sail-codecs/xbm/xbm.c alokuje bufor pikseli według układu X11 (jeden bajt na literał), ale plik X10 static short powoduje, że pętla dekodowania zapisuje dwa kontrolowane bajty na literał. Gdy ceil(width/8) daje nieparzysty stride wiersza, liczba literałów X10 obejmuje bajt paddingu dla każdego wiersza, którego nie ma w buforze docelowym, co prowadzi do przepełnienia sterty w przód skalowanego z wysokością obrazu. Luka jest naprawiona w wersji 1.0.0.
- CVE-2026-54626Krytyczne
Biblioteka SAIL w wersji 0.9.10 i wcześniejszych zawiera niekompletną poprawkę podatności CVE-2026-40494 w ścieżce TGA_INDEXED_RLE. Bufor obrazu jest alokowany jako jednobajtowy na piksel, ale loader wylicza szerszy rozmiar piksela na podstawie kontrolowanej przez atakującego wartości bpp, co prowadzi do zapisu poza buforem sterty i uszkodzenia pamięci.
Oryginalny opis (angielski, źródło NVD)
SAIL is a cross-platform library for loading and saving images with support for animation, metadata, and ICC profiles. In 0.9.10 and earlier, psd_private_sail_pixel_format() in src/sail-codecs/psd/helpers.c resolves a one-channel PSD in Bitmap color mode to SAIL_PIXEL_FORMAT_BPP1_INDEXED without requiring the file depth to be one, so the pixel buffer uses one-bit rows while sail_codec_load_frame_v8_psd() in src/sail-codecs/psd/psd.c accepts depth == 8 and writes one attacker-controlled byte per pixel. Loading a crafted PSD through sail_load_from_file() or sail_load_from_memory() therefore writes beyond each heap row, causing memory corruption, a reliable crash, or potential code execution. This mode/depth mismatch is distinct from GHSA-rcqx-gc76-r9mv and GHSA-wcj8-hxxf-pq2c. This issue is fixed in version 1.0.0.

