CVE Catalog

CVE-2026-88047

HighCVSS 8.6
Published: Translated: NVD NIST

Summary

Tesseract 5.5.3 and earlier, in Classify::ReadNormProtos, extracts a whitespace-delimited token from a .traineddata file into a fixed 61-byte stack buffer without setting stream width. A token longer than 60 characters writes up to 39 attacker-controlled bytes past the buffer during TessBaseAPI::Init of the legacy engine. No fixed release is available.

Risk Assessment

This can cause stack corruption, denial of service, and potentially control-flow hijacking. Typical libstdc++ builds are affected, while Apple libc++ C++20 bounded array builds are incidentally protected.

Recommendation

Do not load untrusted .traineddata files and restrict access to the tessdata directory. Track Tesseract releases and apply the fix as soon as it is available.

Other vulnerabilities in Tesseract

See all
Original NVD description (English source)

Tesseract is an open source OCR engine. In version 5.5.3 and earlier, Classify::ReadNormProtos in src/classify/normmatch.cpp parses the NORMPROTO component of a .traineddata file and uses std::istream::operator>>(char*) to extract a whitespace-delimited token into a fixed 61-byte stack buffer without setting a stream width. The 100-byte line buffer can carry a token of up to 99 characters, so a token longer than 60 characters writes up to 39 attacker-controlled bytes past the buffer during TessBaseAPI::Init of the legacy engine, causing stack corruption, denial of service, and potentially control-flow hijacking on affected standard-library implementations. Builds using Apple's libc++ C++20 bounded array overload are incidentally protected, while typical libstdc++ builds remain affected. No fixed release is available as of this review.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS