Description
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.
Published: 2026-10-12
Score: 5.9 Medium
EPSS: n/a
KEV: No
Impact: Heap-based buffer overflow that may lead to code execution
Action: Immediate Patch
AI Analysis

Impact

GNU Aspell versions through 0.60.8.2 contain a heap-based buffer overflow in the read‑only dictionary loader. The vulnerability is rooted in String::reserve() calculating a capacity check with a signed int, which permits a large requested size to wrap negative, leaving the buffer undersized. A malicious .rws dictionary header with an oversized length field causes the parser to write beyond the allocated heap region, corrupting heap memory. The overflow can result in denial of service and, because of the unvalidated write, the potential for arbitrary code execution.

Affected Systems

All installations of GNU Aspell up to and including version 0.60.8.2, regardless of operating system, are susceptible. The issue manifests when the application loads a .rws dictionary file, typically via commands such as aspell dump master <file> or through any process that automatically loads dictionaries.

Risk and Exploitability

The CVSS score of 5.9 indicates medium severity, and the vulnerability is not listed in the CISA KEV catalog. EPSS data are unavailable. The attack requires an attacker to supply a crafted .rws file and convince a user or an application to load it; therefore the incident is primarily a local exploitation scenario. However, if a system or service uses Aspell to process untrusted input, the risk escalates, providing a path to denial of service or potential code execution. The vulnerability remains exploitable until patched with the release of 0.60.8.3.

Generated by OpenCVE AI on October 13, 2026 at 01:14 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade GNU Aspell to version 0.60.8.3 or later
  • If upgrading is not possible, configure Aspell to restrict dictionary loading to a trusted subset or disable the read‑only dictionary loader feature
  • Avoid using aspell dump master or similar commands on untrusted .rws files until the patch is applied

Generated by OpenCVE AI on October 13, 2026 at 01:14 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 13 Oct 2026 00:30:00 +0000

Type Values Removed Values Added
Title aspell: aspell: Arbitrary code execution via crafted dictionary file
Weaknesses CWE-787
References
Metrics threat_severity

None

threat_severity

Important


Mon, 12 Oct 2026 23:15:00 +0000

Type Values Removed Values Added
First Time appeared Gnu
Gnu aspell
Vendors & Products Gnu
Gnu aspell

Mon, 12 Oct 2026 22:30:00 +0000

Type Values Removed Values Added
Description GNU Aspell through 0.60.8.2 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 0.60.8.3. 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.

Mon, 12 Oct 2026 21:30:00 +0000

Type Values Removed Values Added
Description GNU Aspell through 0.60.8.2 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 0.60.8.3.
Weaknesses CWE-122
References
Metrics cvssV3_1

{'score': 5.9, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L'}


cve-icon MITRE

Status: PUBLISHED

Assigner: Anthropic

Published:

Updated: 2026-10-12T22:12:10.457Z

Reserved: 2026-10-01T08:19:42.892Z

Link: CVE-2026-103658

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-12T22:17:03.143

Modified: 2026-10-12T23:17:19.700

Link: CVE-2026-103658

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-12T21:24:48Z

Links: CVE-2026-103658 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-10-13T01:15:15Z

Weaknesses