🇰🇷 한글 설명
misp-modules의 html_to_markdown 확장 모듈에서 SSRF 보호 메커니즘을 우회할 수 있는 취약점이 발견되었습니다. IPv4-mapped IPv6 주소를 정규화하지 않고 차단 목록과 비교하기 때문에, 공격자가 특수하게 조작된 주소를 사용하여 내부 네트워크나 루프백 인터페이스에 접근할 수 있습니다.
💡 쉬운 설명
보안 필터가 특정 주소를 막으려고 하지만, 주소 형식을 살짝 바꾸면 필터를 통과해버리는 문제입니다. 이를 통해 공격자는 원래 접근할 수 없는 서버 내부의 중요한 정보에 접근할 수 있습니다.
🇺🇸 원문 (English)
A Server-Side Request Forgery (SSRF) protection bypass existed in the html_to_markdown expansion module of misp-modules.
The module attempts to prevent requests to loopback, private, link-local, and other restricted IP address ranges. However, IP addresses were compared against the blocked ranges without first normalising IPv4-mapped IPv6 addresses.
An authenticated attacker able to invoke the module could supply an IPv4-mapped IPv6 address, such as:
http://[::ffff:127.0.0.1]/
http://[::ffff:169.254.169.254]/
Alternatively, the attacker could use a hostname that resolves to an IPv4-mapped IPv6 address. These addresses were treated as IPv6 addresses and therefore did not match the corresponding blocked IPv4 ranges.
Successful exploitation could cause the misp-modules server to connect to services available through its loopback interface, internal network, or link-local network. This could expose internal web services, administrative interfaces, or cloud instance metadata, with retrieved content potentially returned to the attacker as converted Markdown.
The vulnerability has been addressed by normalising IPv4-mapped IPv6 addresses to their underlying IPv4 representation before applying the blocked-range checks. URLs without a valid hostname are now also rejected.
📍 영향받는 시스템
misp-modules (html_to_markdown 확장 모듈 사용 버전)
⚔️ 공격 벡터
인증된 공격자가 IPv4-mapped IPv6 주소(예: [::ffff:127.0.0.1])를 입력하여 내부 서비스에 요청을 보냄
🛡️ 대응 방법
IPv4-mapped IPv6 주소를 IPv4로 정규화하여 검사하도록 업데이트된 최신 버전의 misp-modules로 패치
🔧 검증 코드
설치된 misp-modules의 버전을 확인하여 보안 패치가 적용된 최신 버전인지 확인합니다.
pip show misp-modules | grep Version