🇰🇷 한글 설명
Tesseract OCR 엔진 5.5.3 및 이전 버전에서 조작된 .traineddata 파일을 처리할 때 발생하는 취약점입니다. 음수 코드 값이 입력되면 잘못된 인덱싱으로 인해 메모리 범위를 벗어난 쓰기가 발생하며, 이는 프로그램 충돌이나 할당 실패를 유발합니다.
💡 쉬운 설명
악의적으로 만들어진 글자 인식 데이터를 읽을 때 프로그램이 계산 오류를 일으켜 갑자기 꺼지거나 오류가 발생하는 문제입니다. 공격자가 특수한 파일을 통해 프로그램의 정상적인 동작을 방해할 수 있습니다.
🇺🇸 원문 (English)
Tesseract is an open source OCR engine. In version 5.5.3 and earlier, RecodedCharID::DeSerialize in src/ccutil/unicharcompress.h validates length_ but accepts negative code_ values from a crafted .traineddata recoder component. UnicharCompress::ComputeCodeRange in src/ccutil/unicharcompress.cpp can consequently produce code_range_ equal to zero, after which SetupDecoder indexes is_valid_start_ with the negative code on a size-zero vector. The resulting out-of-bounds bit write uses a large wrapped index and reliably causes a wild-address crash or allocation failure on the default LSTM engine. No fixed release is available as of this review.
📍 영향받는 시스템
Tesseract OCR version 5.5.3 and earlier
⚔️ 공격 벡터
조작된 .traineddata 파일을 OCR 엔진에 입력하여 처리하도록 유도
🛡️ 대응 방법
패치가 출시될 때까지 신뢰할 수 없는 출처의 .traineddata 파일 사용을 금지하고, 향후 배포될 보안 업데이트를 적용해야 함
🔧 검증 코드
출력된 버전이 5.5.3 이하인 경우 해당 취약점에 노출될 가능성이 있습니다.
tesseract --version 2>/dev/null | grep -E 'tesseract [0-5]\.[0-5]\.[0-5]'