CVE-2026-88054

Tesseract: Denial of service via empty-stack dereference in Plumbing/Series at model load

Published Sep 10, 2026 CVSS 4.0 · 6.9 Medium EPSS < 1% KEV · Not listed
Description
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.

Analysis

AI-generated

Technical impact

A defensive check in Tesseract is bypassed when a malicious arithmetic model file contains a zero-length stack for NT_SERIES, NT_PARALLEL, or NT_REVERSED layers. The code reaches CacheXScaleFactor and dereferences stack_[0] on an empty vector, invoking an invalid virtual method through a malformed Network object. This deterministic crash occurs during LSTMRecognizer initialization, resulting in a denial of service when the model is loaded. The weakness is an out-of-bounds read and a misuse of object lifetime, reflected in CWE-125 and CWE-824.

Affected Systems

The vulnerability affects the tesseract-ocr tesseract engine version 5.5.3 and all earlier releases. Any deployment relying on these versions to load traineddata models is susceptible.

Risk and Exploitability

The CVSS score of 6.9 classifies the vulnerability as moderate, though the EPSS score is unavailable, so the exploitation likelihood cannot be precisely quantified. The vulnerability is not listed in the CISA KEV catalog, indicating no known active exploitation. Attackers would need to supply a crafted .traineddata file to the model loader, either locally or through a remote-facing interface that accepts model uploads. The deterministic nature of the crash makes detection straightforward, but the impact can be significant if mission-critical systems rely on continuous OCR processing.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to any Tesseract release newer than 5.5.3 once a patch is available, as future versions will eliminate the empty-stack dereference.
  • Validate that all .traineddata files originate from trusted sources before loading them; reject or quarantine any model from unverified origins.
  • Apply a custom code patch that checks for an empty stack in Plumbing::DeSerialize or Series::CacheXScaleFactor before dereferencing, or disable the LSTM recognizer for processes that must remain stable until the official fix is released.

Generated by OpenCVE AI on September 10, 2026 at 23:46 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
Metrics cvssV3_1

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

cvssV3_1

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

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
References
Metrics threat_severity

None

cvssV3_1

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

threat_severity

Moderate

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}

Type Values Removed Values Added
Description 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.
Title Tesseract: Denial of service via empty-stack dereference in Plumbing/Series at model load
Weaknesses CWE-125
CWE-824
References
Metrics cvssV4_0

{'score': 6.9, 'vector': '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'}

Weaknesses

Sources

Status
PUBLISHED
Assigner
GitHub_M
Published
Updated
Sep 10, 2026, 6:07 PM
Reserved
Sep 9, 2026, 9:22 PM
Status
Analyzed
Published
Sep 10, 2026, 6:18 PM
Modified
Sep 16, 2026, 4:14 PM
Severity
Moderate
Public date
Sep 10, 2026, 5:39 PM