🇰🇷 한글 설명
svg-sanitizer 1.0.0 미만 버전의 Resolver::processReferences() 함수에서 대소문자 구분 문제로 인해 보안 취약점이 발생합니다. 공격자가 xlink:HrEf와 같이 대소문자를 섞은 속성을 사용하면 sanitizer가 이를 검사에서 누락시킨 후 표준 속성으로 변환하여, 결과적으로 중첩 제한 보호 기능을 우회하고 자원 고갈 공격을 가능하게 합니다.
💡 쉬운 설명
SVG 이미지 파일의 특정 글자 대소문자를 교묘하게 바꿔서 보안 검사를 통과하는 방식입니다. 이를 통해 컴퓨터 자원을 과도하게 사용하는 파일을 만들어 시스템을 느리게 하거나 멈추게 할 수 있습니다.
🇺🇸 원문 (English)
svg-sanitizer is a PHP SVG/XML sanitizer. Prior to 1.0.0, Resolver::processReferences() in src/ElementReference/Resolver.php builds the SVG <use> reference graph with a case-sensitive href attribute predicate before cleanHrefAttributes() normalizes mixed-case names. An attacker can provide xlink:HrEf on nested <use> elements so the graph omits those references, after which the sanitizer converts the attribute to canonical xlink:href and returns the live nesting structure without applying the useNestingLimit protection. A consuming application that renders the sanitized SVG can therefore be exposed to the resource exhaustion that control is designed to prevent. This issue is fixed in version 1.0.0.
📍 영향받는 시스템
svg-sanitizer 1.0.0 미만 버전
⚔️ 공격 벡터
대소문자가 혼용된 xlink:HrEf 속성을 포함한 악성 SVG 파일을 업로드하여 중첩 제한 보호를 우회함
🛡️ 대응 방법
svg-sanitizer를 1.0.0 버전 이상으로 업데이트하십시오.
🔧 검증 코드
출력된 버전이 1.0.0 미만이면 취약한 상태이며, 1.0.0 이상이면 안전합니다.
composer show svg-sanitizer | grep 'versions'