🇰🇷 한글 설명
오픈 소스 OCR 엔진인 Tesseract 5.5.3 및 이전 버전에서 특정 레이어의 네트워크 스택이 0인 조작된 .traineddata 모델을 처리할 때 발생합니다. 이로 인해 빈 벡터의 요소를 참조하게 되어 잘못된 네트워크 포인터를 통한 가상 메서드 호출이 발생하며, 결과적으로 프로그램이 충돌하여 서비스 거부(DoS) 상태가 됩니다.
💡 쉬운 설명
악의적으로 만들어진 특수한 학습 데이터를 Tesseract 프로그램에 불러오면 프로그램이 즉시 종료됩니다. 이로 인해 OCR 기능을 사용하는 서비스가 중단될 수 있습니다.
🇺🇸 원문 (English)
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.
📍 영향받는 시스템
Tesseract OCR version 5.5.3 and earlier
⚔️ 공격 벡터
조작된 .traineddata 모델 파일을 시스템에 로드하도록 유도
🛡️ 대응 방법
현재 수정 버전이 없으므로 신뢰할 수 없는 출처의 .traineddata 파일 사용을 금지하고 패치 출시를 대기해야 함
🔧 검증 코드
명령어 결과에 tesseract 5.5.3 이하 버전이 표시되면 해당 취약점에 노출된 상태입니다.
tesseract --version | grep -E 'tesseract 5\.[0-5]\.'