CVE-2026-54692
WysokieCVSS 7.8Streszczenie
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.
Ocena ryzyka
Wczytanie złośliwego pliku XBM przez aplikację korzystającą z SAIL może uszkodzić stan procesu, wywołać powtarzalne awarie, a potencjalnie umożliwić wykonanie kodu w kontekście aplikacji. Ryzyko dotyczy każdej aplikacji przetwarzającej niezaufane obrazy XBM.
Rekomendacja
Zaktualizuj bibliotekę SAIL do wersji 1.0.0 lub nowszej. Do czasu aktualizacji unikaj wczytywania niezaufanych plików XBM przez funkcje sail_load_from_file, sail_load_from_memory i sail_start_loading_*.
Inne podatności w SAIL
Zobacz wszystkie- 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.
- 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. Prior to 1.0.0, sail_codec_load_frame_v8_xbm() in src/sail-codecs/xbm/xbm.c allocates the decoded pixel buffer using the X11 one-byte-per-literal layout, but an X10 static short file causes the flat decode loop to write two file-controlled bytes per literal. When ceil(width/8) produces an odd row stride, the X10 literal count includes a padding byte for every row, but the destination has no space for those bytes, so loading the XBM through sail_load_from_file, sail_load_from_memory, or sail_start_loading_* produces a forward heap overwrite that scales with image height. The X11 static char path is not affected. The overwrite can corrupt process state, cause reliable crashes, and potentially enable code execution in a susceptible consuming application. This issue is fixed in version 1.0.0.

