Tesseract — это механизм оптического распознавания символов с открытым исходным кодом. В версии 5.5.3 и более ранних версиях Classify::ReadIntTemplates в src/classify/intproto.cpp считывает NumClassPruners, NumClasses и NumProtoSets из компонента TESSDATA_INTTEMP созданного файла .traineddata и использует эти значения в качестве границ цикла без проверки их на соответствие MAX_NUM_CLASS_PRUNERS, MAX_NUM_CLASSES и MAX_NUM_PROTO_SETS. Циклы сохраняют указатели кучи в массивах ClassPruners и ProtoSets фиксированной емкости в INT_TEMPLATES_STRUCT и INT_CLASS_STRUCT, поэтому слишком большое количество приводит к записи указателя за пределы кучи во время инициализации устаревшего классификатора до начала OCR, что приводит к повреждению кучи, сбою или потенциально контролируемому повреждению.
На момент написания этого обзора фиксированная версия недоступна.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v4.0
Тип уязвимости (CWE)
Уязвимые продукты 1
| Конфигурация | От (включительно) | До (исключительно) |
|---|---|---|
|
Tesseract-Ocr Tesseract_Ocr
cpe:2.3:a:tesseract-ocr:tesseract_ocr:*:*:*:*:*:*:*:*
|
— |
<= 5.5.3
|