CVE-2026-54626
KrytyczneCVSS 9.8Streszczenie
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.
Ocena ryzyka
Wczytanie spreparowanego pliku TGA może spowodować uszkodzenie sterty, awarię lub potencjalne wykonanie kodu w kontekście aplikacji używającej SAIL.
Rekomendacja
Zaktualizuj bibliotekę SAIL do wersji 1.0.0 lub nowszej, która zawiera pełną poprawkę tego problemu.
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-54627Krytyczne
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.
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, the TGA_INDEXED_RLE path selected by image_type == 9 allocates an image buffer using the one-byte-per-pixel SAIL_PIXEL_FORMAT_BPP8_INDEXED format returned by tga_private_sail_pixel_format() in src/sail-codecs/tga/helpers.c, while sail_codec_load_frame_v8_tga() in src/sail-codecs/tga/tga.c derives a two-to-four-byte pixel_size from an attacker-controlled header bpp value from 9 through 32. Loading a crafted color-mapped run-length-encoded TGA through sail_load_from_file() or sail_load_from_memory() therefore writes attacker-controlled bytes beyond the heap pixel buffer. The pixel-count clamp added for CVE-2026-40494 does not constrain the per-pixel write width, so this issue is an incomplete fix of that vulnerability and can cause heap corruption, a reliable crash, or potential code execution. This issue is fixed in version 1.0.0.

