🇰🇷 한글 설명
draw.io는 설정 가능한 다이어그램 및 화이트보드 애플리케이션입니다. 30.3.8 이전 버전에서는 선택적으로 활성화되는 /proxy 엔드포인트의 SSRF 차단 목록이 불완전하여, RFC 6598 공유 주소 대역(100.64.0.0/10)을 거부하지 않습니다. 인증되지 않은 원격 공격자가 이 대역에서 접근 가능한 내부 서비스에 대한 요청을 유발할 수 있으며, 이로 인해 CGNAT, Kubernetes, 클라우드 또는 오버레이 네트워크 주소의 데이터가 노출될 수 있습니다. 이 취약점은 30.3.8 버전에서 수정되었습니다.
💡 쉬운 설명
draw.io 서버가 외부 공격자의 요청을 받아 내부 네트워크의 특정 주소에 대신 접속할 수 있는 문제입니다. 이로 인해 내부 서비스의 정보가 외부로 새어 나갈 수 있습니다.
🇺🇸 원문 (English)
draw.io is a configurable diagramming and whiteboarding application. Prior to 30.3.8, the optional /proxy endpoint contains an incomplete server-side request forgery blocklist. When the endpoint is enabled, the URL validator does not reject the RFC 6598 shared address range 100.64.0.0/10. An unauthenticated remote attacker can cause the draw.io server to request internal services that are reachable in this range, potentially disclosing data from Carrier-Grade NAT, Kubernetes, cloud, or overlay-network addresses. This vulnerability is fixed in 30.3.8.
📍 영향받는 시스템
draw.io 서버 30.3.8 이전 버전 중 /proxy 엔드포인트를 활성화한 시스템
⚔️ 공격 벡터
인증 없이 /proxy 엔드포인트에 100.64.0.0/10 대역의 내부 주소를 지정한 요청을 보내 내부 서비스 데이터를 조회
🛡️ 대응 방법
draw.io를 30.3.8 이상 버전으로 업그레이드하거나, 불필요한 경우 /proxy 엔드포인트를 비활성화
🔧 검증 코드
설치된 draw.io 이미지 태그가 30.3.8 미만이면 취약하며, /proxy 요청이 200 등으로 응답하면 엔드포인트가 활성화되어 있어 위험합니다. 404나 403이면 비활성화 또는 차단 상태입니다.
docker images --format '{{.Repository}}:{{.Tag}}' | grep -i drawio; curl -s -o /dev/null -w '%{http_code}' 'http://localhost:8080/proxy?url=http://example.com'