CVE-2026-88054
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
- Record
CVE-2026-88054- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-125, CWE-824
- Updated
- 2026-11-02
EUVDEUVD-2026-75636
6.9
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
- Record
EUVD-2026-75636- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Updated
- 2026-11-02
NVD
6.9
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
- Record
CVE-2026-88054- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-125, CWE-824
- Updated
- 2026-11-02
OSV
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
- Record
CVE-2026-88054- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - Weakness
- CWE-125, CWE-824
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-88054
5.5
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
- Record
DEBIAN-CVE-2026-88054- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVOESA-2026-4107
7.8
tesseract security update
A commercial quality OCR engine originally developed at HP between 1985 and 1995. In 1995, this engine was among the top 3 evaluated by UNLV. It was open-sourced by HP and UNLV in 2005.
Security Fix(es):
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.(CVE-2026-88047)
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, MatrixDotVector in src/lstm/weightmatrix.cpp writes w.dim1() results into temp_line, which is sized from no_, and reads w.dim2() minus one inputs from curr_input, which is sized from ni_. A crafted .traineddata NT_SOFTMAX layer can therefore use inconsistent dimensions to cause a heap out-of-bounds write and read on the default LSTM engine, resulting in heap corruption, a crash, information disclosure, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88048)
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::AddTimeStepPart unchecked. In LSTM::Forward in src/lstm/lstm.cpp, source_ is sized from the independently deserialized na_ field while the WriteTimeStepPart count is ns_, which comes from the CI gate WeightMatrix dim1() value. A crafted NT_LSTM layer can make ns_ much larger than na_, causing a heap out-of-bounds write during the first recognition step on the default LSTM engine and resulting in heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88049)
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::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.(CVE-2026-88050)
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 check. reserve(reserved) allocates the backing array, but the callback loop writes size_used_ elements. A crafted TESSDATA_INTTEMP component with version_id 4 or later can therefore set reserved to a small value and size_used_ to a large value when fontinfo_table_.read(fp, read_info) is called from src/classify/intproto.cpp, causing a heap out-of-bounds write of FontInfo structures, heap corruption, a crash, or potentially controlled…
- Record
OESA-2026-4107- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
Show 8 moreShow less
OSVOESA-2026-4108
7.8
tesseract security update
A commercial quality OCR engine originally developed at HP between 1985 and 1995. In 1995, this engine was among the top 3 evaluated by UNLV. It was open-sourced by HP and UNLV in 2005.
Security Fix(es):
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.(CVE-2026-88047)
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, MatrixDotVector in src/lstm/weightmatrix.cpp writes w.dim1() results into temp_line, which is sized from no_, and reads w.dim2() minus one inputs from curr_input, which is sized from ni_. A crafted .traineddata NT_SOFTMAX layer can therefore use inconsistent dimensions to cause a heap out-of-bounds write and read on the default LSTM engine, resulting in heap corruption, a crash, information disclosure, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88048)
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::AddTimeStepPart unchecked. In LSTM::Forward in src/lstm/lstm.cpp, source_ is sized from the independently deserialized na_ field while the WriteTimeStepPart count is ns_, which comes from the CI gate WeightMatrix dim1() value. A crafted NT_LSTM layer can make ns_ much larger than na_, causing a heap out-of-bounds write during the first recognition step on the default LSTM engine and resulting in heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88049)
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::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.(CVE-2026-88050)
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 check. reserve(reserved) allocates the backing array, but the callback loop writes size_used_ elements. A crafted TESSDATA_INTTEMP component with version_id 4 or later can therefore set reserved to a small value and size_used_ to a large value when fontinfo_table_.read(fp, read_info) is called from src/classify/intproto.cpp, causing a heap out-of-bounds write of FontInfo structures, heap corruption, a crash, or potentially controlled…
- Record
OESA-2026-4108- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVOESA-2026-4109
7.8
tesseract security update
A commercial quality OCR engine originally developed at HP between 1985 and 1995. In 1995, this engine was among the top 3 evaluated by UNLV. It was open-sourced by HP and UNLV in 2005.
Security Fix(es):
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.(CVE-2026-88047)
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, MatrixDotVector in src/lstm/weightmatrix.cpp writes w.dim1() results into temp_line, which is sized from no_, and reads w.dim2() minus one inputs from curr_input, which is sized from ni_. A crafted .traineddata NT_SOFTMAX layer can therefore use inconsistent dimensions to cause a heap out-of-bounds write and read on the default LSTM engine, resulting in heap corruption, a crash, information disclosure, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88048)
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::AddTimeStepPart unchecked. In LSTM::Forward in src/lstm/lstm.cpp, source_ is sized from the independently deserialized na_ field while the WriteTimeStepPart count is ns_, which comes from the CI gate WeightMatrix dim1() value. A crafted NT_LSTM layer can make ns_ much larger than na_, causing a heap out-of-bounds write during the first recognition step on the default LSTM engine and resulting in heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88049)
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::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.(CVE-2026-88050)
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 check. reserve(reserved) allocates the backing array, but the callback loop writes size_used_ elements. A crafted TESSDATA_INTTEMP component with version_id 4 or later can therefore set reserved to a small value and size_used_ to a large value when fontinfo_table_.read(fp, read_info) is called from src/classify/intproto.cpp, causing a heap out-of-bounds write of FontInfo structures, heap corruption, a crash, or potentially controlled…
- Record
OESA-2026-4109- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVOESA-2026-4110
7.8
tesseract security update
A commercial quality OCR engine originally developed at HP between 1985 and 1995. In 1995, this engine was among the top 3 evaluated by UNLV. It was open-sourced by HP and UNLV in 2005.
Security Fix(es):
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.(CVE-2026-88047)
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, MatrixDotVector in src/lstm/weightmatrix.cpp writes w.dim1() results into temp_line, which is sized from no_, and reads w.dim2() minus one inputs from curr_input, which is sized from ni_. A crafted .traineddata NT_SOFTMAX layer can therefore use inconsistent dimensions to cause a heap out-of-bounds write and read on the default LSTM engine, resulting in heap corruption, a crash, information disclosure, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88048)
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::AddTimeStepPart unchecked. In LSTM::Forward in src/lstm/lstm.cpp, source_ is sized from the independently deserialized na_ field while the WriteTimeStepPart count is ns_, which comes from the CI gate WeightMatrix dim1() value. A crafted NT_LSTM layer can make ns_ much larger than na_, causing a heap out-of-bounds write during the first recognition step on the default LSTM engine and resulting in heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.(CVE-2026-88049)
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::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.(CVE-2026-88050)
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 check. reserve(reserved) allocates the backing array, but the callback loop writes size_used_ elements. A crafted TESSDATA_INTTEMP component with version_id 4 or later can therefore set reserved to a small value and size_used_ to a large value when fontinfo_table_.read(fp, read_info) is called from src/classify/intproto.cpp, causing a heap out-of-bounds write of FontInfo structures, heap corruption, a crash, or potentially controlled…
- Record
OESA-2026-4110- CVSS 3.1
- 7.8 High
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-88054
6.9
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 .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
- Record
UBUNTU-CVE-2026-88054- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N - CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVMGASA-2026-0470 No score
Updated tesseract packages fix security vulnerabilities
This is a security update. It fixes nine vulnerabilities in tesseract, the OCR (text recognition) engine. All nine can be triggered only by feeding tesseract a maliciously crafted input file: either a specially crafted recognition/language data file (.traineddata) or a crafted word-list file. Depending on the specific flaw, this can cause a crash (denial of service) or memory corruption. CVE-2026-73067: out-of-bounds read when loading a crafted word-list file. CVE-2026-73066: out-of-bounds write when loading a crafted recognition model file. CVE-2026-88047: stack buffer overflow when loading a crafted language-normalisation file. CVE-2026-88048: out-of-bounds read/write from a crafted neural-network layer in a recognition model file. CVE-2026-88049: out-of-bounds write from a crafted neural-network layer in a recognition model file. CVE-2026-88050: out-of-bounds write from invalid character-encoding values in a crafted recognition model file. CVE-2026-88051: out-of-bounds write when loading a malformed internal data structure from a crafted recognition model file. CVE-2026-88052: out-of-bounds write when loading a crafted character-set file. CVE-2026-88053: out-of-bounds write when loading a crafted legacy recognition template file. CVE-2026-88054: crash (denial of service) when loading a crafted recognition model with an empty internal network. The tesseract package is updated to version 5.5.3, which on its own fixes CVE-2026-73067 and CVE-2026-73066. The remaining seven issues (CVE-2026-88047 to CVE-2026-88054) are not yet fixed in any upstream release, so nine patches taken from upstream's main development branch are also applied. Reported by Tristan Madani (CVE-2026-88047) and Zhixi "Jace" Sun (CVE-2026-88048 to CVE-2026-88054); see the individual advisories below for full credits, including CVE-2026-73067 and CVE-2026-73066.
- Record
MGASA-2026-0470- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:11887-1 No score
libtesseract5-5.5.3-2.1 on GA media
These are all security issues fixed in the libtesseract5-5.5.3-2.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2026:11887-1- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:21957-1 No score
Security update for tesseract-ocr
This update for tesseract-ocr fixes the following issues:
Changes in tesseract-ocr:
- Update to version 5.5.3 (sync with Factory):
- CVE-2026-73067: heap out-of-bounds read in SquishedDawg on crafted model (boo#1275623)
- CVE-2026-88047: stack buffer overflow in Classify::ReadNormProtos on crafted traineddata (boo#1280925)
- CVE-2026-88048: heap out-of-bounds write/read in FullyConnected::Forward via dimension mismatch (boo#1280929)
- CVE-2026-88049: heap out-of-bounds write in LSTM::Forward via na_/gate-matrix dimension mismatch (boo#1280930)
- CVE-2026-88050: out-of-bounds write in UnicharCompress via unvalidated recoder code values (boo#1280931)
- CVE-2026-88051: heap out-of-bounds write in GenericVector<T>::read via reserved/size_used_ mismatch (boo#1280932)
- CVE-2026-88052: heap out-of-bounds write in UNICHARSET::load_via_fgets via count/insert desynchronization (boo#1280933)
- CVE-2026-88053: heap out-of-bounds write in Classify::ReadIntTemplates via unvalidated counts in crafted traineddata (boo#1280934)
- CVE-2026-88054: denial of service via empty-stack dereference at model load (boo#1280935)
- Record
openSUSE-SU-2026:21957-1- Updated
- 2026-11-02
OSVUSN-8882-1 No score
tesseract vulnerabilities
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)
- Record
USN-8882-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
tesseractDebian:12 |
All versions, plus listed versions 5.3.0-25.3.3-15.3.4-15.3.4-1.15.3.4-1.2 Show 4 moreShow less5.3.4-1.35.3.4-1.45.5.0-15.5.0-1.1 |
None known |
tesseractDebian:13 |
All versions, plus listed versions 5.5.0-15.5.0-1.1 |
None known |
tesseractDebian:14 |
All versions, plus listed versions 5.5.0-15.5.0-1.1 |
None known |
tesseractMageia:10 From an advisory covering 9 CVEs |
before 5.5.3-1.mga10 | 5.5.3-1.mga10 |
tesseractopenEuler:22.03-LTS-SP4 From an advisory covering 8 CVEs |
before 5.5.3-3.oe2203sp4 | 5.5.3-3.oe2203sp4 |
tesseractopenEuler:24.03-LTS-SP1 From an advisory covering 8 CVEs |
before 5.5.3-3.oe2403sp1 | 5.5.3-3.oe2403sp1 |
tesseractopenEuler:24.03-LTS-SP3 From an advisory covering 8 CVEs |
before 5.5.3-3.oe2403sp3 | 5.5.3-3.oe2403sp3 |
tesseractopenEuler:24.03-LTS-SP4 From an advisory covering 8 CVEs |
before 5.5.3-3.oe2403sp4 | 5.5.3-3.oe2403sp4 |
tesseractUbuntu:Pro:18.04:LTS |
before 4.00~git2288-10f4998a-2ubuntu0.1~esm1, plus listed versions 3.04.01-63.04.01-6build13.04.01-6build24.00~git2188-cdc35338-4build14.00~git2188-cdc35338-54.00~git2207-766b7bd6-3.14.00~git2219-40f43111-1.24.00~git2288-10f4998a-2 |
4.00~git2288-10f4998a-2ubuntu0.1~esm1 |
tesseractUbuntu:Pro:20.04:LTS |
before 4.1.1-2ubuntu0.1~esm1, plus listed versions 4.1.0-14.1.0-24.1.1-14.1.1-24.1.1-2build14.1.1-2build2 |
4.1.1-2ubuntu0.1~esm1 |
Show 13 moreShow less
| Package | Affected | Fixed |
|---|---|---|
tesseractUbuntu:Pro:22.04:LTS |
before 4.1.1-2.1ubuntu0.1~esm1, plus listed versions 4.1.1-2.14.1.1-2.1build1 |
4.1.1-2.1ubuntu0.1~esm1 |
tesseractUbuntu:Pro:24.04:LTS |
before 5.3.4-1ubuntu0.1~esm1, plus listed versions 5.3.0-2build15.3.3-15.3.3-1build15.3.4-15.3.4-1build35.3.4-1build45.3.4-1build5 |
5.3.4-1ubuntu0.1~esm1 |
tesseractUbuntu:26.10 |
All versions, plus listed versions 5.5.0-1build15.5.0-1.1 |
None known |
tesseractUbuntu:Pro:26.04:LTS |
before 5.5.0-1ubuntu0.1~esm1, plus listed versions 5.5.0-15.5.0-1build1 |
5.5.0-1ubuntu0.1~esm1 |
tesseractUbuntu:Pro:14.04:LTS From an advisory covering 10 CVEs |
before 3.03.02-3ubuntu0.1~esm1, plus listed versions 3.02.02-13.03.02-3 |
3.03.02-3ubuntu0.1~esm1 |
tesseractUbuntu:Pro:16.04:LTS From an advisory covering 10 CVEs |
before 3.04.01-4ubuntu0.1~esm1, plus listed versions 3.04.00-5ubuntu13.04.01-23.04.01-4 |
3.04.01-4ubuntu0.1~esm1 |
tesseractUbuntu:Pro:18.04:LTS From an advisory covering 10 CVEs |
before 4.00~git2288-10f4998a-2ubuntu0.1~esm1, plus listed versions 3.04.01-63.04.01-6build13.04.01-6build24.00~git2188-cdc35338-4build14.00~git2188-cdc35338-54.00~git2207-766b7bd6-3.14.00~git2219-40f43111-1.24.00~git2288-10f4998a-2 |
4.00~git2288-10f4998a-2ubuntu0.1~esm1 |
tesseractUbuntu:Pro:20.04:LTS From an advisory covering 10 CVEs |
before 4.1.1-2ubuntu0.1~esm1, plus listed versions 4.1.0-14.1.0-24.1.1-14.1.1-24.1.1-2build14.1.1-2build2 |
4.1.1-2ubuntu0.1~esm1 |
tesseractUbuntu:Pro:22.04:LTS From an advisory covering 10 CVEs |
before 4.1.1-2.1ubuntu0.1~esm1, plus listed versions 4.1.1-2.14.1.1-2.1build1 |
4.1.1-2.1ubuntu0.1~esm1 |
tesseractUbuntu:Pro:24.04:LTS From an advisory covering 10 CVEs |
before 5.3.4-1ubuntu0.1~esm1, plus listed versions 5.3.0-2build15.3.3-15.3.3-1build15.3.4-15.3.4-1build35.3.4-1build45.3.4-1build5 |
5.3.4-1ubuntu0.1~esm1 |
tesseractUbuntu:Pro:26.04:LTS From an advisory covering 10 CVEs |
before 5.5.0-1ubuntu0.1~esm1, plus listed versions 5.5.0-15.5.0-1build1 |
5.5.0-1ubuntu0.1~esm1 |
tesseract-ocropenSUSE:Tumbleweed From an advisory covering 9 CVEs |
before 5.5.3-2.1 | 5.5.3-2.1 |
tesseract-ocropenSUSE:Leap 16.0 From an advisory covering 9 CVEs |
before 5.5.3-bp160.1.1 | 5.5.3-bp160.1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-88054 is a medium vulnerability (CVSS 6.9) in Tesseract-ocr Tesseract, published September 10, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.15%, the 4th percentile. Fixed in tesseract 4.00~git2288-10f4998a-2ubuntu0.1~esm1.
References
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-f6h7-cqr4-6fx4
github.com/tesseract-ocr/tesseract/commit/552771236b0d80cbdb0c7dd856120fa21a4672e5
github.com/CVEProject/cvelistV5/tree/main/cves/2026/88xxx/CVE-2026-88054.json
nvd.nist.gov/vuln/detail/CVE-2026-88054
security-tracker.debian.org/tracker/CVE-2026-88054
advisories.mageia.org/MGASA-2026-0470.html
Show 56 moreShow less
bugs.mageia.org/show_bug.cgi?id=36427
github.com/tesseract-ocr/tesseract/releases/tag/5.5.3
osv.dev/vulnerability/openSUSE-SU-2026:21957-1
lists.opensuse.org/archives/list/[email protected]/message/25OCRCHOE46S5WTJZC25DVGO7KC2KVWO
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-x3vq-7rr7-5x3h
github.com/tesseract-ocr/tesseract/pull/4581
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-7j76-5rq5-5jg8
github.com/tesseract-ocr/tesseract/pull/4588
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-5j2p-r5vc-q7f3
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-q44c-23p6-5mw6
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-jgq8-pprg-vc68
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-7v9h-3q3m-w68g
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-88qp-4g94-3rf3
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-2hm8-q5c7-c373
github.com/tesseract-ocr/tesseract/security/advisories/GHSA-rphx-x795-5qjv
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4107
nvd.nist.gov/vuln/detail/CVE-2026-88047
nvd.nist.gov/vuln/detail/CVE-2026-88048
nvd.nist.gov/vuln/detail/CVE-2026-88049
nvd.nist.gov/vuln/detail/CVE-2026-88050
nvd.nist.gov/vuln/detail/CVE-2026-88051
nvd.nist.gov/vuln/detail/CVE-2026-88052
nvd.nist.gov/vuln/detail/CVE-2026-88053
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4108
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4109
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4110
ubuntu.com/security/CVE-2026-88054
cve.org/CVERecord?id=CVE-2026-88054
ubuntu.com/security/notices/USN-8882-1
ubuntu.com/security/CVE-2026-73066
ubuntu.com/security/CVE-2026-73067
ubuntu.com/security/CVE-2026-88047
ubuntu.com/security/CVE-2026-88048
ubuntu.com/security/CVE-2026-88049
ubuntu.com/security/CVE-2026-88050
ubuntu.com/security/CVE-2026-88051
ubuntu.com/security/CVE-2026-88052
ubuntu.com/security/CVE-2026-88053
suse.com/security/cve/CVE-2026-73067
suse.com/security/cve/CVE-2026-88047
suse.com/security/cve/CVE-2026-88048
suse.com/security/cve/CVE-2026-88049
suse.com/security/cve/CVE-2026-88050
suse.com/security/cve/CVE-2026-88051
suse.com/security/cve/CVE-2026-88052
suse.com/security/cve/CVE-2026-88053
suse.com/security/cve/CVE-2026-88054
bugzilla.suse.com/1275623
bugzilla.suse.com/1280925
bugzilla.suse.com/1280929
bugzilla.suse.com/1280930
bugzilla.suse.com/1280931
bugzilla.suse.com/1280932
bugzilla.suse.com/1280933
bugzilla.suse.com/1280934
bugzilla.suse.com/1280935
Left out here: the rest of 4 source descriptions. The JSON record has them.