CVE-2026-73067
ŚrednieCVSS 6.7Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może spowodować awarię procesu (DoS) poprzez dostarczenie złośliwego pliku .traineddata, co może zakłócić działanie usług wykorzystujących Tesseract.
Rekomendacja
Zaleca się aktualizację Tesseract do wersji 5.5.3 lub nowszej oraz unikanie ładowania modeli .traineddata z niezaufanych źródeł.
Inne podatności w Tesseract
Zobacz wszystkie- CVE-2026-88054Średnie
Tesseract w wersji 5.5.3 i wcześniejszych zawiera błąd w Plumbing::DeSerialize, który akceptuje stos o zerowej długości dla warstw NT_SERIES, NT_PARALLEL lub NT_REVERSED w spreparowanym modelu .traineddata. Podczas inicjalizacji LSTMRecognizer dochodzi do dereferencji stack_[0] na pustym wektorze i wywołania metody wirtualnej przez nieprawidłowy wskaźnik Network.
- CVE-2026-88053Wysokie
Tesseract w wersji 5.5.3 i wcześniejszych zawiera lukę przepełnienia bufora w funkcji Classify::ReadIntTemplates, która odczytuje wartości NumClassPruners, NumClasses i NumProtoSets z pliku .traineddata bez walidacji względem limitów MAX_*. Nadmierne wartości powodują zapisy wskaźników poza zakresem tablic na stercie podczas inicjalizacji klasyfikatora.
- CVE-2026-88052Wysokie
Tesseract w wersji 5.5.3 i wcześniejszych zawiera lukę przepełnienia bufora w funkcji UNICHARSET::load_via_fgets, która ufa zadeklarowanej liczbie unicharów jako granicy pętli i używa id jako niekontrolowanego indeksu do wektora unichars. Może to prowadzić do zapisu poza zakresem wektora podczas inicjalizacji.
- CVE-2026-88051Wysokie
Tesseract w wersji 5.5.3 i wcześniejszych zawiera lukę przepełnienia bufora w funkcji GenericVector::read, która odczytuje pola reserved i size_used_ z pliku .traineddata bez ograniczeń. Przygotowany plik może ustawić reserved na małą wartość, a size_used_ na dużą, powodując zapis poza zakresem tablicy struktur FontInfo.
- 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-88049Średnie
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-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-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.
- CVE-2011-1136Średnie
W tesseract 2.03 i 2.04 atakujący może nadpisać dowolny plik użytkownika, odgadując PID i tworząc dowiązanie do pliku użytkownika. Podatność wynika z niewystarczającego zabezpieczenia operacji na plikach tymczasowych.
Oryginalny opis (angielski, źródło NVD)
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 calls num_forward_edges(0) and last_edge in src/dict/dawg.h reads beyond edges_, causing a heap out-of-bounds read and process crash before image processing. This issue is fixed in version 5.5.3.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

