CVE-2026-103658 (GCVE-0-2026-103658)
Vulnerability from cvelistv5
Published
2026-10-12 21:24
Modified
2026-10-14 19:15
CWE
  • CWE-122 - Heap-based Buffer Overflow
Summary
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.
Impacted products
Vendor Product Version
GNU Aspell Version: 0.60.8.2   ≤
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-103658",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-10-14T19:15:22.350465Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-10-14T19:15:47.603Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/GNUAspell/aspell/security/advisories/GHSA-p35p-2mw5-fj5j"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "packageURL": "pkg:github/GNUAspell/aspell",
          "product": "Aspell",
          "vendor": "GNU",
          "versions": [
            {
              "status": "affected",
              "version": "0.60.8.2",
              "versionType": "semver"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Anthropic, Claude"
        },
        {
          "lang": "en",
          "type": "analyst",
          "value": "Ada Logics"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "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 \u2014 for example via aspell dump master \u003cfile\u003e \u2014 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."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 5.9,
            "baseSeverity": "MEDIUM",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L",
            "version": "3.1"
          }
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-122",
              "description": "CWE-122 Heap-based Buffer Overflow",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-12T22:12:10.457Z",
        "orgId": "98a01053-8a31-4f6d-9aa9-252be161adc6",
        "shortName": "Anthropic"
      },
      "references": [
        {
          "url": "https://github.com/GNUAspell/aspell/security/advisories/GHSA-p35p-2mw5-fj5j"
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "98a01053-8a31-4f6d-9aa9-252be161adc6",
    "assignerShortName": "Anthropic",
    "cveId": "CVE-2026-103658",
    "datePublished": "2026-10-12T21:24:48.600Z",
    "dateReserved": "2026-10-01T08:19:42.892Z",
    "dateUpdated": "2026-10-14T19:15:47.603Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-103658\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-10-14T19:15:22.350465Z\"}}}], \"references\": [{\"url\": \"https://github.com/GNUAspell/aspell/security/advisories/GHSA-p35p-2mw5-fj5j\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-10-14T19:15:43.055Z\"}}], \"cna\": {\"credits\": [{\"lang\": \"en\", \"type\": \"finder\", \"value\": \"Anthropic, Claude\"}, {\"lang\": \"en\", \"type\": \"analyst\", \"value\": \"Ada Logics\"}], \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.1\", \"baseScore\": 5.9, \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L\"}}], \"affected\": [{\"vendor\": \"GNU\", \"product\": \"Aspell\", \"versions\": [{\"status\": \"affected\", \"version\": \"0.60.8.2\", \"versionType\": \"semver\"}], \"packageURL\": \"pkg:github/GNUAspell/aspell\"}], \"references\": [{\"url\": \"https://github.com/GNUAspell/aspell/security/advisories/GHSA-p35p-2mw5-fj5j\"}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"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 \\u2014 for example via aspell dump master \u003cfile\u003e \\u2014 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.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-122\", \"description\": \"CWE-122 Heap-based Buffer Overflow\"}]}], \"providerMetadata\": {\"orgId\": \"98a01053-8a31-4f6d-9aa9-252be161adc6\", \"shortName\": \"Anthropic\", \"dateUpdated\": \"2026-10-12T22:12:10.457Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2026-103658\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-10-14T19:15:47.603Z\", \"dateReserved\": \"2026-10-01T08:19:42.892Z\", \"assignerOrgId\": \"98a01053-8a31-4f6d-9aa9-252be161adc6\", \"datePublished\": \"2026-10-12T21:24:48.600Z\", \"assignerShortName\": \"Anthropic\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…