CVE-2026-103658
ŚrednieCVSS 5.9Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
GNU Aspell 0.60.8.2 (pierwsza podatna wersja nie jest znana) zawiera przepełnienie bufora sterty (CWE-122) w loaderze słownika tylko do odczytu. String::reserve() w common/string.hpp oblicza sprawdzenie pojemności za pomocą signed int ((int)s + 1), więc żądany rozmiar 0x7FFFFFFF zawija się na wartość ujemną i bufor nie jest powiększany. ReadOnlyDict::load() w modules/speller/default/readonly_ws.cpp przekazuje niezwalidowane 32-bitowe pola rozmiaru z nagłówka słownika .rws do tej ścieżki, więc spreparowany plik .rws z prawidłowym znacznikiem endian (12345678) i nadmiernym polem długości (np. lang_name_size = 0x7FFFFFFF) powoduje zapis danych kontrolowanych przez atakującego poza granicami zbyt małej alokacji sterty. Atakujący, który nakłoni ofiarę do załadowania złośliwego słownika — na przykład przez aspell dump master <file> — może uszkodzić pamięć sterty, powodując odmowę usługi i potencjalnie wykonanie kodu. Naprawiono w b830b6e i będzie naprawione w wersji 0.60.8.3.
Ocena ryzyka
Atakujący może zdalnie wywołać awarię aplikacji lub potencjalnie wykonać kod poprzez dostarczenie złośliwego pliku słownika, co prowadzi do uszkodzenia pamięci.
Rekomendacja
Zaktualizuj GNU Aspell do wersji 0.60.8.3 lub nowszej, która zawiera poprawkę.
Inne podatności w GNU Aspell
Zobacz wszystkie- CVE-2026-75820Niskie
GNU Aspell zawiera podatność typu integer truncation w funkcji WritableDict::add() w pliku modules/speller/default/writable.cpp. Przy wczytywaniu osobistej listy słów długość słowa jest zapisywana jako pojedynczy bajt, co powoduje obcięcie dla słów o długości będącej wielokrotnością 256 i prowadzi do uszkodzenia sterty. Atakujący może to wykorzystać, nakłaniając użytkownika do uruchomienia aspell ze spreparowaną osobistą listą słów zawierającą takie słowo, co skutkuje odmową usługi. Problem naprawiono w commicie 782ce94e4dc71eaec4ee1bd945eb3b9c47c5387d, który zostanie wydany w wersji 0.60.8.3.
- CVE-2026-75819Niskie
GNU Aspell zawiera podatność odczytu poza zakresem w funkcji ReadOnlyDict::load() w pliku readonly_ws.cpp. Podczas ładowania binarnego pliku słownika .rws, używa pól offsetu z nagłówka pliku jako indeksów bajtów w buforze sterty bez walidacji ich granic. Atakujący może to wykorzystać, przekonując użytkownika do uruchomienia aspell z spreparowanym plikiem słownika dostarczonym przez --master, --dict-dir lub opcje konfiguracyjne, co prowadzi do ujawnienia pamięci sterty lub odmowy usługi przez awarię aplikacji.
- CVE-2026-75818Niskie
GNU Aspell prezip-bin zawiera podatność przepełnienia bufora na stercie w dekompresorze w prog/prezip.c. Dekompresor nie sprawdza prawidłowo miejsca w buforze, więc spreparowany skompresowany plik może powodować operacje odczytu i zapisu poza zakresem na stercie. Atakujący, który przekona użytkownika do przetworzenia złośliwego skompresowanego pliku za pomocą prezip-bin, może wywołać uszkodzenie pamięci, prowadzące do awarii procesu.
Oryginalny opis (angielski, źródło NVD)
GNU Aspell 0.60.8.2 (first vulnerable version is not known) contains a heap-based buffer overflow write (CWE-122) in its read-only dictionary loader. String::reserve() in common/string.hpp computes its capacity check with a signed int ((int)s + 1), so a requested size of 0x7FFFFFFF wraps negative and the backing buffer is never grown. ReadOnlyDict::load() in modules/speller/default/readonly_ws.cpp passes the unvalidated 32-bit size fields from a .rws dictionary header into this path, so a crafted .rws file with a valid endian marker (12345678) and an oversized length field (e.g. lang_name_size = 0x7FFFFFFF) causes attacker-controlled data to be written out of bounds past an undersized heap allocation. An attacker who induces a victim to load a malicious dictionary — for example via aspell dump master <file> — can corrupt heap memory, resulting in denial of service and potentially code execution. Fixed in b830b6e and will be fixed in release 0.60.8.3.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

