CVE-2026-88047
WysokieCVSS 8.6Streszczenie
Tesseract w wersji 5.5.3 i wcześniejszych w funkcji Classify::ReadNormProtos wczytuje token z pliku .traineddata do bufora stosu o stałym rozmiarze 61 bajtów bez ustawienia szerokości strumienia. Token dłuższy niż 60 znaków zapisuje do 39 bajtów poza buforem podczas inicjalizacji TessBaseAPI w silniku legacy. Brak dostępnej poprawionej wersji.
Ocena ryzyka
Może dojść do uszkodzenia stosu, odmowy usługi, a potencjalnie także przejęcia przepływu sterowania. Ryzyko dotyczy kompilacji z typowym libstdc++, natomiast kompilacje z libc++ firmy Apple są przypadkowo chronione.
Rekomendacja
Nie wczytuj niezaufanych plików .traineddata i ogranicz dostęp do katalogu tessdata. Śledź wydania Tesseract i wdróż poprawkę niezwłocznie po jej udostępnieniu.
Inne podatności w Tesseract
Zobacz wszystkie- CVE-2026-88050Średnie
W Tesseract w wersji 5.5.3 i wcześniejszych funkcja RecodedCharID::DeSerialize w src/ccutil/unicharcompress.h waliduje length_, ale akceptuje ujemne wartości code_ z przygotowanego komponentu recodera w pliku .traineddata. W konsekwencji UnicharCompress::ComputeCodeRange może ustawić code_range_ na zero, a SetupDecoder indeksuje is_valid_start_ ujemnym kodem na wektorze o rozmiarze zero, co prowadzi do zapisu poza zakresem i awarii lub błędu alokacji. Brak dostępnej poprawionej wersji.
- CVE-2026-88049Wysokie
Tesseract w wersji 5.5.3 i wcześniejszych nie sprawdza spójności wymiarów w funkcjach NetworkIO::WriteTimeStepPart i NetworkIO::AddTimeStepPart. Złośliwie spreparowany plik .traineddata z warstwą NT_LSTM może spowodować zapis poza zakresem sterty podczas pierwszego kroku rozpoznawania na domyślnym silniku LSTM. Brak dostępnej poprawionej wersji.
- CVE-2026-88048Wysokie
Tesseract w wersji 5.5.3 i wcześniejszych nie waliduje skalarnych wartości ni_ i no_ względem wymiarów macierzy wag w FullyConnected::DeSerialize. Złośliwy plik .traineddata z warstwą NT_SOFTMAX może wywołać zapis i odczyt poza zakresem sterty na domyślnym silniku LSTM. Brak dostępnej poprawionej wersji.
- CVE-2026-73067Średnie
Tesseract to otwartoźródłowy silnik OCR. Przed wersją 5.5.3, spreparowany model .traineddata załadowany przez TessBaseAPI::Init może spowodować, że funkcja SquishedDawg::read_squished_dawg w src/dict/dawg.cpp zaakceptuje niezakończony bieg krawędzi, po czym SquishedDawg::Load wywołuje num_forward_edges(0) i last_edge w src/dict/dawg.h czyta poza edges_, powodując odczyt poza stertą i awarię procesu przed przetwarzaniem obrazu. Problem naprawiono w wersji 5.5.3.
- CVE-2026-73066Średnie
Tesseract to otwartoźródłowy silnik OCR. Przed wersją 5.5.3, spreparowany komponent modelu LSTM .traineddata załadowany przez deserializator Tesseracta może spowodować, że niesprawdzane mnożenie liczb całkowitych ze znakiem w Convolve::DeSerialize w src/lstm/convolve.cpp zawinie liczbę kanałów wyjściowych konwolucji, zmniejszając bufor wyjściowy, podczas gdy zapisy używają niezawiniętej liczby elementów, co prowadzi do zapisu poza stertą podczas rozpoznawania OCR. Problem naprawiono w wersji 5.5.3.
Oryginalny opis (angielski, źródło NVD)
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.

