CVE-2026-88049: Tesseract LSTM heap out-of-bounds write via dimension mismatch

CVE-2026-88049 · Severity: medium · CVSS 5.5 · Published 2026-09-10

Tesseract is an open-source optical character recognition (OCR) engine used to extract text from images. A flaw in how it deserializes and validates LSTM neural network layer configurations allows a maliciously crafted trained model file to trigger a heap buffer overflow during text recognition, potentially leading to application crashes or data corruption. Attackers can exploit this by distributing a booby-trapped model file that crashes the OCR service or corrupts memory when processing any document.

Quick answers

Is CVE-2026-88049 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-88049 being exploited in the wild.
How severe is CVE-2026-88049?
Medium severity, with a CVSS score of 5.5, published 10 September 2026.
Which products and versions are affected?
Tesseract Tesseract 5.5.3 and earlier.
Is there a fix for CVE-2026-88049?
No fixed version is recorded yet. Check the vendor's advisory in the references below. If you run it, Junglewise drafts a mitigation that fits your setup and applies it once you approve, with senior security engineers behind it.
How is CVE-2026-88049 attacked?
It is attacked with local access.
Am I affected by CVE-2026-88049?
Check whether anything you run is named in the advisory. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

Technical details

The vulnerability is a heap out-of-bounds write in LSTM::Forward caused by incomplete input validation in LSTM::DeSerialize (lstm.cpp). The root cause: the deserialized na_ field (buffer size) is never validated against ns_ (derived from the CI gate matrix dim1 value), allowing them to mismatch significantly. During the forward pass, WriteTimeStepPart in networkio.cpp writes ns_ floats into a source_ buffer sized for na_, bypassing bounds checks that were only partially added in a prior CVE-2026-73066 fix. Exploitation requires a crafted .traineddata file that can be deserialized without authentication; no network vector exists since the engine must load a local or attacker-controlled model file. The fix involves strict dimension validation at deserialization time and extending bounds assertions to the unguarded WriteTimeStepPart and AddTimeStepPart functions. A patched version was committed but no released version is available as of publication.

Affected products

  • Tesseract Tesseract 5.5.3 and earlier

Timeline

  • 2026-08-25: disclosed: Fix committed by Stefan Weil
  • 2026-08-25: advisory: GitHub Security Advisory GHSA-jgq8-pprg-vc68 published
  • 2026-09-10: other: CVE-2026-88049 published on NVD

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.