CVE-2026-88047: Tesseract: ReadNormProtos stack buffer overflow

Published Sep 10, 2026
·
Updated

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.

Affected Software

1 affected component
Tesseract<=5.5.3

Event History

Sep 10, 2026
CVE Published
via MITRE·04:18 PM
Data Sourced
via MITRE·04:18 PM
DescriptionWeakness

Frequently Asked Questions

1

What must an attacker control to trigger this issue?

An attacker needs to supply or cause the application to load a malicious .traineddata file whose NORMPROTO component contains a whitespace-delimited token longer than 60 characters. The overflow occurs during TessBaseAPI::Init when using the legacy engine.

2

Are all Tesseract builds affected?

No. Versions 5.5.3 and earlier are affected in typical libstdc++ builds, while builds using Apple's libc++ C++20 bounded array overload are incidentally protected. The issue is tied to parsing legacy-engine traineddata files.

3

What can be done if no fixed release is available?

Do not load untrusted .traineddata files, and restrict the sources and write access for traineddata assets. Where feasible, use an environment built with Apple's libc++ C++20 bounded array overload, which is described as incidentally protected.

4

What impact should responders expect from exploitation?

A crafted token can overwrite up to 39 attacker-controlled bytes past the 61-byte stack buffer. This can cause stack corruption and denial of service, with potential control-flow hijacking on affected standard-library implementations.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203