Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft .traineddata with zero-length plumbing stack
-
DeliverySupply file to Tesseract model-loading path
-
ExploitPlumbing::DeSerialize accepts zero stack size
-
ExecutionCacheXScaleFactor dereferences empty stack_[0]
-
PersistInvalid virtual call through dangling pointer
-
ImpactDeterministic process crash (DoS)
Vulnerability Assessment
| Weakness |
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Bounds checking, read limits
MITRE ATT&CK
1 technique across 1 tactic: Collection The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target application must load a .traineddata model file that is controlled or influenced by the attacker; this is the sole prerequisite. The NT_SERIES, NT_PARALLEL, or NT_REVERSED layer type must be the top-level network in the LSTM component of the file, and its serialized stack_size field must be zero (or one for NT_SERIES). No authentication, privilege, or special system access is required beyond the ability to supply the crafted file to the loading path. Limiting factors include: the attack vector is local per the CVSS 4.0 rating, meaning the attacker must place or inject the file into a path the application will load; applications that restrict model loading to a fixed, administrator-controlled set of files from a trusted source are not exploitable; and the impact is confined to availability - no data exfiltration or code execution has been demonstrated. |
| Impact | The CVSS 4.0 vector (AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H) reflects a locally-triggered, low-complexity DoS with no confidentiality or integrity impact. In practice the attack surface depends heavily on how Tesseract is deployed: a batch OCR pipeline that ingests user-supplied or remotely-fetched model files effectively elevates the attack vector toward network-reachable, making this more impactful than the AV:L rating alone implies. No public exploit code exists and no EPSS data was provided in the input, limiting the immediate exploitation signal; a hypothetical mid-sized document-processing operation in walbrzych running an automated OCR pipeline that accepts external .traineddata files would face service disruption from a single crafted model submission. The crash is deterministic and reproducible, which makes denial of service straightforward to achieve once an attacker controls model input. The absence of a tagged fix release is the most operationally significant factor: defenders cannot simply pin to a safe version and must apply the upstream commit manually or restrict model-loading to trusted sources. |
| Exploit ScenarioDerived | An attacker crafts a .traineddata file in which the top-level LSTM network is a Series, Parallel, or Reversed plumbing layer whose serialized stack size field is set to zero. When any application built on Tesseract 5.5.3 or earlier loads this file - whether from a user-supplied path, a model repository fetch, or a document-processing queue - the engine crashes deterministically during CacheXScaleFactor initialization before any OCR work begins. No public PoC exists at time of analysis, but the fix commit includes a detailed unit test (unittest/plumbing_test.cc) that demonstrates the exact byte layout required to trigger the crash, effectively serving as a construction guide. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 10, 2026
Denial of service in Tesseract OCR Engine 5.5.3 and earlier allows a local attacker to crash any process that loads a crafted .traineddata model file. The deserialization path in Plumbing::DeSerialize fails to reject a zero-length network stack for NT_SERIES, NT_PARALLEL, or NT_REVERSED layer types; subsequent initialization in Series::CacheXScaleFactor unconditionally dereferences stack_[0] on the now-empty vector, producing a deterministic crash via an invalid virtual method call through a dangling Network pointer. No public exploit is identified at time of analysis, and no fixed release has been issued - only an upstream commit fix is available.
RemediationAI
No vendor-released patch with a tagged version exists at the time of this analysis; the upstream fix is available as commit 552771236b0d80cbdb0c7dd856120fa21a4672e5 on the tesseract-ocr/tesseract GitHub repository (https://github.com/tesseract-ocr/tesseract/commit/552771236b0d80cbdb0c7dd856120fa21a4672e5), which adds a bounds check in Plumbing::DeSerialize and a graceful error return in the model-load path. Organizations building Tesseract from source should cherry-pick or apply this commit. As a compensating control, restrict the set of .traineddata files that the application is permitted to load to a cryptographically verified allowlist, preventing untrusted or externally-supplied model files from reaching the deserialization code; this eliminates the attack surface entirely at the cost of preventing dynamic or user-specified model selection. For applications that must accept external model files, consider running the Tesseract process in a sandboxed or containerized environment so that a crash does not affect the broader service. Monitor the GitHub advisory (https://github.com/tesseract-ocr/tesseract/security/advisories/GHSA-f6h7-cqr4-6fx4) for an official tagged release.
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 (CPE: cpe:2.3:a:tesseract-ocr:tesseract:*:*:*:*:*:*:*:*) is an open-source LSTM-based OCR engine that serializes and deserializes neural network topology into binary .traineddata files. The affected code path is in src/lstm/plumbing.cpp (Plumbing::DeSerialize), which reads a uint32 stack size and then iterates to load child networks. The existing guard rejects stacks that are too large but omits a check for size 0, violating the invariant that methods like XScaleFactor() and CacheXScaleFactor() in src/lstm/series.cpp rely on: they unconditionally index stack_[0] without bounds checking. This constitutes CWE-125 (Out-of-Bounds Read) - specifically an out-of-bounds access on an empty std::vector during engine initialization triggered by attacker-controlled deserialized data. The fix commit (552771236b0d80cbdb0c7dd856120fa21a4672e5) adds a guard rejecting size 0 and NT_SERIES with size == 1, and strengthens the model-load error path in src/ccmain/tessedit.cpp to return false rather than assert-crashing.
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 attack vector requires supplying a crafted model file; no privileges needed; crash-only impact confined to availability.
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, Plumbing::DeSerialize in src/lstm/plumbing.cpp rejects excessively large network stacks but accepts a zero-length stack for NT_SERIES, NT_PARALLEL, or NT_REVERSED layers in a crafted .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. 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.
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
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
Out-of-bounds write in Tesseract OCR engine version 5.5.3 and earlier allows an attacker who can supply a crafted `.trai
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-125 – Out-of-bounds Read
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-75636
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB