🇰🇷 한글 설명
Kitodo.Production 3.9.2 이전 버전의 XMLUtils 클래스는 XML 파싱 시 DOCTYPE 선언과 외부 엔티티 해석을 비활성화하지 않고 있습니다. 이로 인해 EAD 파일 업로드 기능을 통해 XXE(XML 외부 엔티티 주입) 공격이 가능하며, 로컬 파일 노출과 서버 측 요청 위조(SSRF)가 발생할 수 있습니다.
💡 쉬운 설명
인증된 사용자가 특수하게 조작된 XML 파일을 업로드하면 서버의 내부 파일을 읽거나 외부로 요청을 보낼 수 있습니다. 해당 취약점은 3.9.2 버전에서 수정되었습니다.
🇺🇸 원문 (English)
Kitodo.Production is a workflow management tool for mass digitization and is part of the Kitodo Digital Library Suite. Prior to version 3.9.2, org.kitodo.production.helper.XMLUtils exposes several XML parsing helpers that construct a JAXP parser with the default, non-secure configuration. The methods parseXMLString(String), getNumberOfEADElements(String, String) and checkIfXmlIsWellFormed(String) build a DocumentBuilderFactory / XMLInputFactory / SAXParserFactory via newInstance() and parse the attacker-supplied string without disabling DOCTYPE declarations or external entity resolution. These helpers sit directly on the EAD-import path: an authenticated user who uploads an EAD/XML file through the "Create process" file-upload dialog has the uploaded bytes parsed by these methods. A crafted document with an external entity therefore yields XML External Entity (XXE) injection: local file disclosure and outbound SSRF requests from the server. This issue has been patched in version 3.9.2.
📍 영향받는 시스템
Kitodo.Production 3.9.2 미만 버전
⚔️ 공격 벡터
인증된 사용자가 외부 엔티티가 포함된 조작된 EAD/XML 파일을 '프로세스 생성' 업로드 기능으로 전송
🛡️ 대응 방법
Kitodo.Production을 3.9.2 이상으로 업그레이드하고, XML 파서에서 DOCTYPE 및 외부 엔티티 처리를 비활성화
🔧 검증 코드
출력된 버전이 3.9.2 미만이면 취약하며, 3.9.2 이상이면 패치가 적용된 것입니다. 출력이 없으면 해당 패키지가 설치되어 있지 않은 것입니다.
find / -name '*kitodo*.jar' 2>/dev/null | xargs -I{} unzip -p {} META-INF/MANIFEST.MF 2>/dev/null | grep -i 'Implementation-Version'
💻 영향받는 소프트웨어
Multi-Domain Security Management Server