CVE-2026-75820
NiskieCVSS 1.8Streszczenie
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.
Ocena ryzyka
Atakujący może doprowadzić do uszkodzenia sterty i awarii aplikacji (odmowa usługi) poprzez dostarczenie spreparowanej osobistej listy słów. Wymaga to interakcji użytkownika, ale może zakłócić działanie usług zależnych od aspell.
Rekomendacja
Zaktualizuj GNU Aspell do wersji 0.60.8.3 lub nowszej, gdy będzie dostępna, która zawiera poprawkę z commita 782ce94e4dc71eaec4ee1bd945eb3b9c47c5387d. Do czasu aktualizacji unikaj wczytywania niezaufanych osobistych list słów.
Inne podatności w GNU Aspell
Zobacz wszystkie- 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.
- CVE-2026-103658Średnie
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.
Oryginalny opis (angielski, źródło NVD)
GNU Aspell contains an integer truncation vulnerability in the WritableDict::add() function in modules/speller/default/writable.cpp. When loading a personal wordlist, the word length is stored as a single byte, causing truncation for words whose length is a multiple of 256. This leads to heap corruption. An attacker can exploit this by convincing a user to run aspell with a crafted personal wordlist containing such a word, resulting in denial of service. This issue was fixed in commit 782ce94e4dc71eaec4ee1bd945eb3b9c47c5387d which will be released in version 0.60.8.3.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

