Tesseract — это механизм оптического распознавания символов с открытым исходным кодом. В версии 5.5.3 и более ранних версиях Plumbing::DeSerialize в src/lstm/plumbing.cpp отклоняет чрезмерно большие сетевые стеки, но принимает стек нулевой длины для слоев NT_SERIES, NT_PARALLEL или NT_REVERSED в созданной модели .traineddata. Во время инициализации LSTMRecouncer в src/lstm/lstmrecouncer.cpp CacheXScaleFactor(XScaleFactor()) достигает Series::CacheXScaleFactor в src/lstm/series.cpp, который разыменовывает stack_[0] в пустом векторе и вызывает виртуальный метод через недопустимый указатель сети.
Это вызывает детерминированный сбой и отказ в обслуживании при загрузке модели. На момент написания этого обзора фиксированная версия недоступна.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Tesseract-Ocr Tesseract_Ocr
cpe:2.3:a:tesseract-ocr:tesseract_ocr:*:*:*:*:*:*:*:*
|
— |
<= 5.5.3
|