CVE-2026-88052

Tesseract: Heap out-of-bounds write in UNICHARSET::load_via_fgets via count/insert desynchronization

Published Sep 10, 2026 CVSS 3.1 · 7.8 High EPSS < 1% KEV · Not listed
Description
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, UNICHARSET::load_via_fgets in src/ccutil/unicharset.cpp trusts the declared unichar count as a loop bound and uses id as an unchecked index into the unichars vector. unichar_insert_backwards_compatible can leave the vector unchanged for an empty, duplicate, or already-encodable representation, causing id to become larger than unichars.size(). Subsequent set_* calls and the write to unichars[id].properties.enabled then write UNICHAR_PROPERTIES beyond the vector during initialization in both the default LSTM and legacy engines, causing heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.

Analysis

AI-generated

Technical impact

The vulnerability arises when the OCR engine's UNICHARSET loader trusts an externally supplied unichar count as a loop bound and uses it as an index into a vector that may be smaller than that count. This desynchronization leads to an out‑of‑bounds write to the vector’s properties field, corrupting heap memory during engine initialization. The corruption manifests as crashes or, if an attacker can carefully craft the unicharset file, potential controlled memory writes. The affected code paths are exercised by both the default LSTM and legacy engines.

Affected Systems

The flaw exists in the Tesseract OCR engine provided by the tesseract-ocr project. Versions up to and including 5.5.3 are vulnerable; later releases have not yet been patched. Users running these versions on any platform are potentially impacted.

Risk and Exploitability

The CVSS score of 7.8 indicates a high severity, and the lack of an available EPSS score means the current probability of exploitation is not quantified. Since the bug requires a malicious unicharset file to be read during startup, the attack vector is likely could broaden its reach. The vulnerability is not listed in CISA's KEV catalog, but its impact on memory integrity and the absence of a fix suggest that administrative vigilance and privilege restriction are prudent until an update is released.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Update Tesseract to the newest release once the vendor publishes a fix.
  • Restrict write, read, or execution permissions on unicharset files to only trusted users or processes.
  • Run Tesseract processes with the least privilege necessary for the OCR workload.
  • Monitor application logs for unexpected crashes or memory corruption symptoms.

Generated by OpenCVE AI on September 10, 2026 at 23:47 UTC.

Tracking

Sign in to view the affected projects.

Advisories

Source ID Title
Ubuntu USN Ubuntu USN USN-8882-1 Tesseract vulnerabilities
History
Type Values Removed Values Added
First Time appeared Tesseract-ocr
Tesseract-ocr tesseract Ocr
CPEs cpe:2.3:a:tesseract-ocr:tesseract_ocr:*:*:*:*:*:*:*:*
Vendors & Products Tesseract-ocr
Tesseract-ocr tesseract Ocr
Type Values Removed Values Added
First Time appeared Tesseract Project
Tesseract Project tesseract
Vendors & Products Tesseract Project
Tesseract Project tesseract
Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description Tesseract is an open source OCR engine. In version 5.5.3 and earlier, UNICHARSET::load_via_fgets in src/ccutil/unicharset.cpp trusts the declared unichar count as a loop bound and uses id as an unchecked index into the unichars vector. unichar_insert_backwards_compatible can leave the vector unchanged for an empty, duplicate, or already-encodable representation, causing id to become larger than unichars.size(). Subsequent set_* calls and the write to unichars[id].properties.enabled then write UNICHAR_PROPERTIES beyond the vector during initialization in both the default LSTM and legacy engines, causing heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.
Title Tesseract: Heap out-of-bounds write in UNICHARSET::load_via_fgets via count/insert desynchronization
Weaknesses CWE-129
CWE-787
References
Metrics cvssV3_1

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

Weaknesses
  • CWE-129

    Improper Validation of Array Index

  • CWE-787

    Out-of-bounds Write

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Sep 11, 2026, 8:33 PM
Reserved
Sep 9, 2026, 9:22 PM
Status
Analyzed
Published
Sep 10, 2026, 6:18 PM
Modified
Sep 16, 2026, 4:21 PM
Severity
Important
Public date
Sep 10, 2026, 5:38 PM