CVE-2026-88053
WysokieCVSS 7.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 2 - wyżej niż 2% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Może dojść do uszkodzenia sterty, awarii aplikacji lub potencjalnie kontrolowanego uszkodzenia pamięci, co może prowadzić do wykonania dowolnego kodu.
Rekomendacja
Brak dostępnej poprawki. Unikaj przetwarzania niezaufanych plików .traineddata. Monitoruj wydania Tesseract w celu aktualizacji.
Inne podatności w Tesseract
Zobacz wszystkie- CVE-2026-119341Nieznane
Tesseract to silnik OCR o otwartym kodzie źródłowym. W wersjach przed 5.5.4 funkcja ReadAdaptedClass w src/classify/adaptive.cpp odczytuje surowo strukturę ADAPT_CLASS_STRUCT z pliku .a szablonu wstępnie zaadaptowanego bez neutralizacji wskaźników TempProtos i Config przed jakąkolwiek ścieżką destruktora. Gdy wybrany jest starszy silnik, włączone jest classify_use_pre_adapted_templates, a atakujący może zapisać plik .a o nazwie wyjściowej, ścieżka sukcesu lub odrzucenia może przekazać wskaźniki kontrolowane przez plik do ~ADAPT_CLASS_STRUCT i operator delete, powodując uszkodzenie pamięci i odmowę usługi.
- CVE-2026-119340Średnie
W Tesseract przed wersją 5.5.4 funkcja GENERIC_2D_ARRAY::DeSerializeSize w src/ccstruct/matrix.h odczytuje wymiary macierzy jako wartości signed int32_t i porównuje je tylko z UINT16_MAX, co pozwala ujemnym wartościom dotrzeć do ResizeNoInit. Ujemne wymiary lub iloczyn 65535 na 65535 mogą spowodować niespójny stan alokacji, a następnie dostęp poza granicami podczas ładowania spreparowanego pliku traineddata, powodując odmowę usługi.
- CVE-2026-119339Średnie
W Tesseract przed wersją 5.5.4 funkcja WeightMatrix::DeSerialize ufa bajtowi trybu z sieci LSTM w pliku traineddata i wywołuje WeightMatrix::DeSerializeOld, gdy flaga kDoubleFlag jest wyczyszczona. W domyślnych kompilacjach FAST_FLOAT DeSerializeOld wywołuje ASSERT_HOST zamiast zwrócić błąd, więc ładowanie spreparowanego modelu przez TessBaseAPI::Init kończy proces i powoduje odmowę usługi.
- CVE-2026-119338Średnie
W Tesseract od wersji 5.4.0 do 5.5.4 funkcja AppendLinePolygon w src/api/pagerenderer.cpp niszczy należący do wywołującego akumulator Pta dla tekstu od prawej do lewej, przyjmując go przez wartość, pozostawiając wiszące wskaźniki line_top_rtl_pts i line_bottom_rtl_pts. Na stronie z tekstem hebrajskim lub arabskim w domyślnym poziomie PAGE XML, POLYGONFLAG z fałszywym skewed_flag wchodzi w podatne wywołania, a LEVELFLAG większy od zera zapewnia alternatywną bramkę. Wywołania wielokrotnie odczytują i zwalniają nieaktualny obiekt, powodując podwójne zwolnienie i użycie po zwolnieniu, pozwalając uszkodzonym współrzędnym dotrzeć do RecalcPolygonline.
- 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-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.
Oryginalny opis (angielski, źródło NVD)
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 values as loop bounds without validating them against MAX_NUM_CLASS_PRUNERS, MAX_NUM_CLASSES, and MAX_NUM_PROTO_SETS. The loops store heap pointers into fixed-capacity ClassPruners and ProtoSets arrays in INT_TEMPLATES_STRUCT and INT_CLASS_STRUCT, so an oversized count causes heap out-of-bounds pointer writes during legacy-classifier initialization before OCR begins, resulting in heap corruption, a crash, or potentially controlled corruption. No fixed release is available as of this review.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

