🇰🇷 한글 설명
svg-sanitizer 0.5.3 이상 1.1.0 미만 버전의 Sanitizer::sanitize() 함수는 PHP 태그를 제거하는 과정에서 입력 전체를 반복적으로 재검사합니다. 인증되지 않은 공격자가 겹치는 PHP 태그 여닫기가 많은 SVG를 업로드하면 이차(quadratic) 수준의 preg_replace 반복이 발생하여 워커 CPU가 수 분간 소진될 수 있습니다.
💡 쉬운 설명
이 프로그램은 SVG 이미지 파일에서 위험한 코드를 걸러내는 도구입니다. 공격자가 특수하게 조작된 이미지를 올리면 이 도구가 과도하게 계산을 반복해 서버의 CPU를 오랫동안 점유하게 만듭니다.
🇺🇸 원문 (English)
svg-sanitizer from 0.5.3 before 1.1.0 contains a denial of service vulnerability in Sanitizer::sanitize() that repeatedly rescans the whole input while stripping PHP tags. Unauthenticated attackers can upload SVGs with many overlapping PHP tag openers and closers, forcing quadratic preg_replace passes that exhaust worker CPU for minutes.
📍 영향받는 시스템
svg-sanitizer 0.5.3 이상 1.1.0 미만을 사용하는 PHP 애플리케이션
⚔️ 공격 벡터
인증 없이 다수의 중첩된 PHP 태그가 포함된 SVG 파일을 업로드하여 서버 CPU 자원을 고갈시키는 서비스 거부(DoS) 공격
🛡️ 대응 방법
svg-sanitizer를 1.1.0 이상으로 업데이트하거나, 업데이트가 어려우면 SVG 업로드 크기 및 처리 시간을 제한하고 업로드 엔드포인트에 요청 제한을 적용
🔧 검증 코드
출력된 versions 값이 1.1.0 이상이면 패치된 상태이며, 0.5.3 이상 1.1.0 미만이면 취약한 버전이므로 업데이트가 필요합니다.
composer show enshrined/svg-sanitizer 2>/dev/null | grep -E 'versions'