CVE-2026-88054
ŚrednieCVSS 5.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 7 - wyżej niż 7% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Ładowanie spreparowanego modelu powoduje deterministyczny crash i odmowę usługi. Atakujący może wykorzystać tę podatność do zablokowania aplikacji przetwarzającej niezaufane modele OCR.
Rekomendacja
Brak dostępnej poprawionej wersji — unikaj ładowania niezaufanych plików .traineddata oraz monitoruj oficjalne wydania Tesseract w oczekiwaniu na poprawkę. Rozważ walidację modeli przed ich załadowaniem.
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-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. In version 5.5.3 and earlier, Plumbing::DeSerialize in src/lstm/plumbing.cpp rejects excessively large network stacks but accepts a zero-length stack for NT_SERIES, NT_PARALLEL, or NT_REVERSED layers in a crafted .traineddata model. During LSTMRecognizer initialization in src/lstm/lstmrecognizer.cpp, CacheXScaleFactor(XScaleFactor()) reaches Series::CacheXScaleFactor in src/lstm/series.cpp, which dereferences stack_[0] on the empty vector and invokes a virtual method through an invalid Network pointer. This causes a deterministic crash and denial of service at model load. No fixed release is available as of this review.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

