Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft malicious .traineddata with mismatched NT_SOFTMAX dimensions
-
DeliveryDeliver or substitute file into target application's model path
-
ExploitApplication calls FullyConnected::DeSerialize (no dimension check)
-
ExecutionApplication invokes OCR recognition (Forward)
-
PersistMatrixDotVector performs heap OOB write and read
-
ImpactHeap corruption yields crash, info leak, or controlled corruption
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 vulnerability is triggered when Tesseract loads a crafted |
| Impact | The CVSS 4.0 score of 8.6 with vector AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H accurately reflects a straightforward local exploitation path once the attacker controls which |
| Exploit ScenarioDerived | An attacker crafts a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 10, 2026
Heap out-of-bounds write and read in Tesseract OCR Engine 5.5.3 and earlier allows an attacker who can supply a crafted .traineddata model file to corrupt heap memory during LSTM inference, potentially achieving information disclosure, a crash, or controlled heap corruption leading to code execution. The flaw lies in FullyConnected::DeSerialize, which loads layer dimension scalars ni_ and no_ without cross-validating them against the actual weight matrix dimensions; when Forward is subsequently called, MatrixDotVector writes into a scratch buffer sized by no_ but indexed by the actual matrix row count, and reads from a buffer sized by ni_ but indexed by column count minus one. No fixed release has been issued as of this analysis; an upstream fix commit exists on GitHub.
RemediationAI
Upstream fix available via commit 103dc134eb36411ddc6833ec20aa2c76795bd0ff (not yet in a tagged release); organisations should apply this patch from source and rebuild Tesseract until an official release ships. The fix adds two lines to FullyConnected::DeSerialize that reject any loaded layer where weights_.Dim1() != no_ or weights_.Dim2() != ni_ + 1, preventing malformed layers from reaching Forward. As a compensating control, restrict write access to .traineddata model files and verify their integrity (SHA-256 hash or package manager signature) before loading; this prevents substitution attacks but does not protect applications that process user-supplied model files by design. If Tesseract is deployed in a pipeline that accepts externally sourced traineddata files, disabling that capability or sandboxing the Tesseract process (e.g., with seccomp/AppArmor) limits blast radius should a malicious file be processed. Monitor the advisory at https://github.com/tesseract-ocr/tesseract/security/advisories/GHSA-q44c-23p6-5mw6 for an official patched 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:2.3:a:tesseract-ocr:tesseract:*:*:*:*:*:*:*:*) is a widely used open-source OCR engine that ships LSTM-based recognition models in .traineddata binary archives. The affected code path is in src/lstm/fullyconnected.cpp: FullyConnected::DeSerialize reads the layer scalars ni_ (input count) and no_ (output count) from the file, then calls weights_.DeSerialize to load the weight matrix, but never checks that weights_.Dim1() no_ and weights_.Dim2() ni_ + 1 (the extra column accounts for the bias). During FullyConnected::Forward, MatrixDotVector in src/lstm/weightmatrix.cpp iterates over actual matrix dimensions rather than the declared scalars: it writes w.dim1() results into temp_line (heap-allocated from no_) and reads w.dim2() - 1 inputs from curr_input (heap-allocated from ni_). A crafted NT_SOFTMAX layer whose declared dimensions are smaller than the actual weight matrix dimensions triggers heap out-of-bounds writes and reads on the first recognition pass. CWE-125 (Out-of-Bounds Read) is the assigned root cause, though CWE-787 (Out-of-Bounds Write) is equally applicable given that the write path is also unguarded.
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:H/VI:H/VA:H/SC:N/SI:N/SA:N
Attacker needs only to supply a malicious traineddata file (local vector); no privileges or user interaction required beyond normal application execution; all three impact pillars apply.
AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/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, FullyConnected::DeSerialize in src/lstm/fullyconnected.cpp does not validate the deserialized layer scalars ni_ and no_ against the weight-matrix dimensions. During FullyConnected::Forward, MatrixDotVector in src/lstm/weightmatrix.cpp writes w.dim1() results into temp_line, which is sized from no_, and reads w.dim2() minus one inputs from curr_input, which is sized from ni_. A crafted .traineddata NT_SOFTMAX layer can therefore use inconsistent dimensions to cause a heap out-of-bounds write and read on the default LSTM engine, resulting in heap corruption, a crash, information disclosure, or potentially controlled corruption. No fixed release is available as of this review.
Technical POC Analysis
Evidence note: the supplied material is the GitHub advisory GHSA-q44c-23p6-5mw6 only.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Tesseract OCR Engine versions 5.5.3 and earlier contain a heap memory corruption vulnerability that can be triggered by processing a maliciously crafted .traineddata model file, potentially causing information disclosure, service disruption, or code execution. Organizations using Tesseract for document processing workflows, automated data extraction, or content analysis systems face significant risk if they accept or process model files from untrusted external sources.
Restrict .traineddata model files to known, pre-approved vendor versions from trusted sources only; disable LSTM models and revert to legacy OCR processing if mission requirements permit; run Tesseract in isolated containers or sandboxed processes with restricted privileges and no network access; implement cryptographic validation of all model files before processing; isolate OCR processing systems from critical infrastructure and production networks.
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.
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
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
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
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-125 – Out-of-bounds Read
View allSame technique Buffer Overflow
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Linux Enterprise Module for Package Hub 15 SP7 | Affected |
EUVD-2026-75591
NVD
CVE.org
EPSS
GitHub
Exploit-DB