Summary
It was discovered that Tesseract incorrectly handled crafted .traineddata
models. An attacker could possibly use this issue to cause Tesseract to
crash, resulting in a denial of service. (CVE-2026-73067)
It was discovered that Tesseract did not properly validate dimensions in
crafted .traineddata models. An attacker could possibly use this issue to
execute arbitrary code. (CVE-2026-73066)
It was discovered that Tesseract did not properly limit token lengths in
crafted .traineddata models. An attacker could possibly use this issue to
execute arbitrary code. (CVE-2026-88047)
It was discovered that Tesseract did not properly validate layer dimensions
in crafted .traineddata models. An attacker could possibly use this issue to
execute arbitrary code. (CVE-2026-88048)
It was discovered that Tesseract did not properly validate layer sizes in
crafted .traineddata models. An attacker could possibly use this issue to
execute arbitrary code. (CVE-2026-88049)
It was discovered that Tesseract incorrectly handled negative character
codes in crafted .traineddata models. An attacker could possibly use this
issue to cause Tesseract to crash, resulting in a denial of service.
(CVE-2026-88050)
It was discovered that Tesseract did not properly validate vector sizes in
crafted .traineddata models. An attacker could possibly use this issue to
execute arbitrary code. (CVE-2026-88051)
It was discovered that Tesseract did not properly validate character IDs in
crafted .traineddata models. An attacker could possibly use this issue to
execute arbitrary code. (CVE-2026-88052)
It was discovered that Tesseract did not properly validate classifier
counts in crafted .traineddata models. An attacker could possibly use this
issue to execute arbitrary code. (CVE-2026-88053)
It was discovered that Tesseract incorrectly handled empty network layers
in crafted .traineddata models. An attacker could possibly use this issue to
cause Tesseract to crash, resulting in a denial of service.
(CVE-2026-88054)
Fixed packages 7
| Release | Package | Fixed in |
|---|---|---|
| Ubuntu · Pro 14.04 LTS Pro:14.04:LTS | tesseract | 3.03.02-3ubuntu0.1~esm1 |
| Ubuntu · Pro 16.04 LTS Pro:16.04:LTS | tesseract | 3.04.01-4ubuntu0.1~esm1 |
| Ubuntu · Pro 18.04 LTS Pro:18.04:LTS | tesseract | 4.00~git2288-10f4998a-2ubuntu0.1~esm1 |
| Ubuntu · Pro 20.04 LTS Pro:20.04:LTS | tesseract | 4.1.1-2ubuntu0.1~esm1 |
| Ubuntu · Pro 22.04 LTS Pro:22.04:LTS | tesseract | 4.1.1-2.1ubuntu0.1~esm1 |
| Ubuntu · Pro 24.04 LTS Pro:24.04:LTS | tesseract | 5.3.4-1ubuntu0.1~esm1 |
| Ubuntu · Pro 26.04 LTS Pro:26.04:LTS | tesseract | 5.5.0-1ubuntu0.1~esm1 |
Vulnerabilities 10
-
High 8.6
Tesseract: ReadNormProtos stack buffer overflow
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…
-
High 8.6
Tesseract: Heap out-of-bounds write/read in FullyConnected::Forward via layer/weight-matrix dimension mismatch
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, FullyConnected::DeSerialize in src/lstm/fullyconnected.cpp does not validate the deserialized layer scalars ni_ and no_ against the weight-matrix dimensions. During FullyConnected::Forward,…
-
High 8.6
Tesseract: Heap out-of-bounds write in LSTM::Forward via na_/gate-matrix dimension mismatch
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, prior .traineddata hardening added bounds checks to NetworkIO::CopyTimeStepGeneral and NetworkIO::Randomize in src/lstm/networkio.cpp but left NetworkIO::WriteTimeStepPart and NetworkIO::Ad…
-
High 8.6
Tesseract: Heap out-of-bounds write in GenericVector<T>::read due to independent reserved/size_used_ fields
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, the callback form of GenericVector::read in src/ccutil/genericvector.h reads the independent int32 fields reserved and size_used_ from a .traineddata model without a cap or an invariant che…
-
High 8.6
Tesseract: Heap out-of-bounds write in Classify::ReadIntTemplates via unvalidated counts in crafted .traineddata
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, Classify::ReadIntTemplates in src/classify/intproto.cpp reads NumClassPruners, NumClasses, and NumProtoSets from the TESSDATA_INTTEMP component of a crafted .traineddata file and uses those…
-
High 7.8
Tesseract: Heap out-of-bounds write in UNICHARSET::load_via_fgets via count/insert desynchronization
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, UNICHARSET::load_via_fgets in src/ccutil/unicharset.cpp trusts the declared unichar count as a loop bound and uses id as an unchecked index into the unichars vector. unichar_insert_backward…
-
Medium 6.9
Tesseract: Out-of-bounds write in UnicharCompress via unvalidated recoder code values
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, RecodedCharID::DeSerialize in src/ccutil/unicharcompress.h validates length_ but accepts negative code_ values from a crafted .traineddata recoder component. UnicharCompress::ComputeCodeRan…
-
Medium 6.9
Tesseract: Denial of service via empty-stack dereference in Plumbing/Series at model load
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 .train…
-
Medium 6.8
Tesseract: Heap out-of-bounds write in LSTM Convolve layer via crafted .traineddata
Tesseract is an open source OCR engine. Prior to 5.5.3, a crafted .traineddata LSTM model component loaded through Tesseract's deserializer can cause an unchecked signed integer multiplication in Convolve::DeSerialize in src/lstm/convolve.cpp to wrap the conv…
-
Medium 6.7
Tesseract: Heap OOB read in the DAWG loader
Tesseract is an open source OCR engine. Prior to 5.5.3, a crafted .traineddata model loaded through TessBaseAPI::Init can cause SquishedDawg::read_squished_dawg in src/dict/dawg.cpp to accept an unterminated forward-edge run, after which SquishedDawg::Load ca…
References
-
report
https://ubuntu.com/security/CVE-2026-73066
-
report
https://ubuntu.com/security/CVE-2026-73067
-
report
https://ubuntu.com/security/CVE-2026-88047
-
report
https://ubuntu.com/security/CVE-2026-88048
-
report
https://ubuntu.com/security/CVE-2026-88049
-
report
https://ubuntu.com/security/CVE-2026-88050
-
report
https://ubuntu.com/security/CVE-2026-88051
-
report
https://ubuntu.com/security/CVE-2026-88052
-
report
https://ubuntu.com/security/CVE-2026-88053
-
report
https://ubuntu.com/security/CVE-2026-88054