Katalog CVE

CVE-2026-103658

ŚrednieCVSS 5.9
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.16%

Percentyl 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
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