🇰🇷 한글 설명
docx4j 라이브러리의 PropertyResolver가 WordprocessingML 스타일 상속 체인을 처리할 때 순환 참조를 감지하지 못하는 취약점입니다. 악의적으로 조작된 DOCX 파일을 처리할 경우 무한 재귀가 발생하여 StackOverflowError가 유발됩니다. 이로 인해 서버 측의 워커 스레드가 종료되거나 서비스 거부(DoS) 상태에 빠질 수 있습니다.
💡 쉬운 설명
문서 파일 안에 스타일이 서로를 무한히 참조하도록 설계된 '함정'을 심어두는 방식입니다. 이 파일을 서버에서 열려고 하면 서버가 계산을 반복하다가 과부하로 멈춰버릴 수 있습니다.
🇺🇸 원문 (English)
docx4j is an open source Java library for creating, editing, and saving OpenXML packages, including DOCX, PPTX, and XLSX files. Prior to 11.5.14, PropertyResolver and adjacent helpers recursively follow the WordprocessingML w:basedOn style inheritance chain without cycle detection. A well-formed DOCX containing mutually based styles causes unbounded recursion in PropertyResolver.fillPPrStack and related effective-style resolution paths, resulting in StackOverflowError. Server-side conversion and table-of-contents processing of an untrusted document can terminate a worker thread, degrade a thread pool, or deny service, although isolation in disposable workers or safe containment of StackOverflowError can reduce the practical effect. The fix adds cyclic-style tracking and CyclicStylesException handling. This issue is fixed in version 11.5.14.
📍 영향받는 시스템
docx4j 11.5.14 미만 버전
⚔️ 공격 벡터
상호 참조되는 스타일이 포함된 악의적인 DOCX 파일을 서버에 업로드하거나 처리하도록 유도
🛡️ 대응 방법
docx4j 라이브러리를 11.5.14 버전 이상으로 업데이트
🔧 검증 코드
출력된 결과에서 docx4j의 버전이 11.5.14 미만인지 확인
mvn dependency:tree | grep docx4j