CVE-2026-88049
WysokieCVSS 8.6Streszczenie
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.
Ocena ryzyka
Przetworzenie złośliwego pliku .traineddata może doprowadzić do uszkodzenia sterty, awarii aplikacji lub potencjalnie przejęcia kontroli nad procesem. Ryzyko dotyczy każdego środowiska, które wczytuje niezaufane modele Tesseract.
Rekomendacja
Nie wczytuj niezaufanych plików .traineddata i ogranicz dostęp do katalogu tessdata. Monitoruj wydania Tesseract w oczekiwaniu na wersję z poprawką i wdróż ją niezwłocznie po 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-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-88047Wysokie
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.
- 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, 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.

