CVE-2026-88050: Tesseract out-of-bounds write in UnicharCompress deserialization

CVE-2026-88050 · 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 and scanned documents. A flaw in how it loads trained model files (.traineddata) allows a crafted malicious model file to cause a crash or potentially trigger memory allocation failures, disrupting OCR services that rely on this library.

Technologies: Tesseract OCR Tesseract. Vendors: Tesseract OCR.

Quick answers

Is CVE-2026-88050 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-88050 being exploited in the wild.
How severe is CVE-2026-88050?
Medium severity, with a CVSS score of 5.5, published 10 September 2026.
Which products and versions are affected?
Tesseract OCR Tesseract 5.5.3 and earlier.
Is there a fix for CVE-2026-88050?
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-88050 attacked?
It is attacked with local access.
Am I affected by CVE-2026-88050?
Check whether you run Tesseract OCR Tesseract at an affected version. 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 an out-of-bounds write in the UnicharCompress deserialization logic (src/ccutil/unicharcompress.h and .cpp). RecodedCharID::DeSerialize validates the length_ field but fails to validate individual code_[] values, which are read as raw signed int32s. When a negative code value is supplied in a crafted .traineddata recoder component, ComputeCodeRange produces a code_range_ of zero due to improper signed integer comparison. Subsequently, SetupDecoder indexes the is_valid_start_ std::vector<bool> with the negative code on a zero-sized vector, causing an out-of-bounds write at a large wrapped memory address. The attack vector requires loading a malicious .traineddata file; the default LSTM engine is affected. The resulting crash reliably causes a denial of service; no fixed release is available as of the advisory publication date.

Affected products

  • Tesseract OCR Tesseract 5.5.3 and earlier

Timeline

  • 2026-09-10: disclosed
  • 2026-08-25: advisory: GitHub Security Advisory GHSA-7v9h-3q3m-w68g published

References

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