CVE-2026-119341
NieznaneCVSS 0.0Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 19 - wyżej niż 19% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Atakujący może spowodować uszkodzenie pamięci i odmowę usługi poprzez dostarczenie złośliwego pliku .a, co może prowadzić do awarii aplikacji lub dalszej eksploatacji.
Rekomendacja
Zaktualizuj Tesseract do wersji 5.5.4 lub nowszej, aby wyeliminować podatność.
Inne podatności w Tesseract
Zobacz wszystkie- 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-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.
Oryginalny opis (angielski, źródło NVD)
Tesseract is an open source OCR engine. Prior to 5.5.4, ReadAdaptedClass in src/classify/adaptive.cpp raw-reads an ADAPT_CLASS_STRUCT from a pre-adapted-template .a file without neutralizing TempProtos and Config pointer fields before any destructor path. When the legacy engine is selected, classify_use_pre_adapted_templates is enabled, and an attacker can write the output-basename .a file, the success or rejection path can pass file-controlled pointers to ~ADAPT_CLASS_STRUCT and operator delete, causing memory corruption and denial of service. This issue is fixed in version 5.5.4.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

