🇰🇷 한글 설명
PHP용 XML 암호화 및 서명 라이브러리인 xmlseclibs 3.1.3 버전에서 인증 우회 취약점이 발견되었습니다. libxml2의 정규화(canonicalization) 과정 중 잘못된 XML 입력이 들어오면 빈 문자열을 반환하는데, 라이브러리가 이를 정상적인 결과로 오인하여 DigestValue를 계산함으로써 발생합니다.
💡 쉬운 설명
XML 문서의 형식을 맞추는 과정에서 오류가 발생했을 때, 시스템이 이를 실패로 처리하지 않고 빈 값으로 인정해버리는 문제입니다. 이로 인해 공격자가 인증 과정을 속이고 시스템에 접근할 수 있습니다.
🇺🇸 원문 (English)
xmlseclibs is a library written in PHP for working with XML Encryption and Signatures. Versions 3.1.3 contain an authentication bypass vulnerability due to a flaw in the libxml2 canonicalization process during document transformation. When libxml2’s canonicalization is invoked on an invalid XML input, it may return an empty string rather than a canonicalized node. xmlseclibs then proceeds to compute the DigestValue over this empty string, treating it as if canonicalization succeeded. This issue is fixed in version 3.1.4. Workarounds include treating canonicalization failures (exceptions or nil/empty outputs) as fatal and aborting validation, and/or adding explicit checks to reject when canonicalize returns nil/empty or raises errors.
📍 영향받는 시스템
xmlseclibs version 3.1.3
⚔️ 공격 벡터
정규화 과정에서 빈 문자열을 반환하도록 유도하는 조작된 XML 문서를 전송하여 인증을 우회함
🛡️ 대응 방법
xmlseclibs를 3.1.4 버전 이상으로 업데이트하거나, 정규화 결과가 빈 값인 경우 검증을 중단하도록 로직을 수정함
🔧 검증 코드
출력된 버전이 3.1.3인 경우 해당 취약점에 노출된 상태입니다.
composer show xmlseclibs | grep 'versions'