Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconPlace crafted .traineddata file with negative code value
-
DeliveryTrigger Tesseract LSTM engine to load model
-
ExploitDeSerialize accepts negative code_, bypassing validation
-
InstallComputeCodeRange leaves code_range_ at zero
-
C2SetupDecoder resizes is_valid_start_ to zero then indexes it with negative code
-
ExecuteOut-of-bounds write
-
ImpactProcess crash (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, write limits
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires that the attacker control the |
| Impact | The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) yields a score of 6.9 (Medium), appropriately reflecting a local, availability-only impact with no confidentiality or integrity consequences. The local attack vector is the primary limiting factor: an attacker must control the |
| Exploit ScenarioDerived | An attacker operating a document-processing service that allows custom language model uploads crafts a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 10, 2026
Out-of-bounds write in Tesseract OCR engine version 5.5.3 and earlier allows an attacker who can supply a crafted .traineddata file to crash the LSTM OCR pipeline through a wild-address bit write into a size-zero vector. The flaw lies in RecodedCharID::DeSerialize, which validates array length but silently accepts negative code_ values; this causes ComputeCodeRange to produce a zero code_range_, after which SetupDecoder indexes is_valid_start_ out of bounds, reliably producing a crash or heap allocation failure. No fixed release is available; an upstream fix commit exists but has not been tagged into a release.
RemediationAI
No vendor-released patched version is available as of this review. The fix exists exclusively as upstream commit c94a5532ee04db5a4919542832fd94caee5ea58f on the Tesseract GitHub repository (https://github.com/tesseract-ocr/tesseract/commit/c94a5532ee04db5a4919542832fd94caee5ea58f); organizations should apply this commit by building from source until an official tagged release is made. As the primary compensating control, restrict .traineddata files to a trusted, immutable set maintained by the operations team and enforce allowlisting of model files by checksum - this eliminates the attack surface without requiring a code change, though it precludes use of user-supplied or dynamically downloaded language models. Secondarily, running Tesseract as an isolated subprocess in a container with memory and PID limits bounds the crash impact to the OCR subprocess rather than the broader application, reducing availability consequences. Monitor the GitHub Security Advisory GHSA-7v9h-3q3m-w68g for a fixed release announcement.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Tesseract's LSTM OCR engine serializes Unicode character compression data (the recoder) inside .traineddata binary model files. The RecodedCharID::DeSerialize method in src/ccutil/unicharcompress.h reads each code entry and validates the array length_ field, but prior to the fix it performed no sign check on individual code_[] values. A negative value (e.g., -1) causes UnicharCompress::ComputeCodeRange in unicharcompress.cpp to leave code_range_ at zero. SetupDecoder subsequently resizes is_valid_start_ to zero elements and then indexes it with the raw negative code value, producing a CWE-787 out-of-bounds write. The upstream fix commit c94a5532 addresses this by adding a range check (code_[i] < 0 || code_[i] >= UINT16_MAX) in DeSerialize and ASSERT_HOST guards in SetupDecoder. The affected CPE is cpe:2.3:a:tesseract-ocr:tesseract:*:*:*:*:*:*:*:*, covering all versions through 5.5.3.
Know when Tesseract gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Local access to supply a crafted model file is required; impact is availability-only crash with no confidentiality or integrity consequence.
AV:L/AC:L/PR:N/UI:R/S:U/C:N/I:N/A:H
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, RecodedCharID::DeSerialize in src/ccutil/unicharcompress.h validates length_ but accepts negative code_ values from a crafted .traineddata recoder component. UnicharCompress::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.
Memory corruption occurs when a program writes data beyond the boundaries of allocated memory regions or accesses memory in unintended ways, violating the integrity of the process's address space.
An issue in the Leptonica linked library (v1.79.0) allows attackers to cause an arithmetic exception leading to a Denial
Heap out-of-bounds write in Tesseract OCR 5.5.3 and earlier allows an attacker who controls a crafted `.traineddata` mod
Heap out-of-bounds write and read in Tesseract OCR Engine 5.5.3 and earlier allows an attacker who can supply a crafted
Stack-based buffer overflow in Tesseract OCR 5.5.3 and earlier corrupts the stack during legacy engine initialization, e
Heap out-of-bounds write in Tesseract OCR 5.5.3 and earlier allows an attacker who supplies a crafted .traineddata langu
Heap out-of-bounds write in Tesseract OCR 5.5.3 and earlier allows an attacker who controls the loaded .traineddata mode
Heap corruption in Tesseract OCR 5.5.3 and earlier allows an attacker who can supply a malicious unicharset file to corr
Denial of service in Tesseract OCR Engine 5.5.3 and earlier allows a local attacker to crash any process that loads a cr
Double free and use-after-free in the Tesseract OCR PAGE XML renderer (5.4.0 through 5.5.3) leaves the caller-owned righ
Heap out-of-bounds write in Tesseract OCR engine prior to 5.5.3 is triggered by a crafted LSTM .traineddata model file t
Heap out-of-bounds read in Tesseract OCR prior to version 5.5.3 allows an attacker who can supply a crafted .traineddata
Loading a crafted LSTM model into Tesseract OCR 5.5.3 and earlier aborts the host process on the default build configura
Same weakness CWE-787 – Out-of-bounds Write
View allSame technique Buffer Overflow
View allVendor StatusVendor
SUSE
Severity: Moderate| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
EUVD-2026-75593
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB