🇰🇷 한글 설명
CKAN MCP Server에서 발생하는 SSRF 취약점으로, 호스트네임 검증 로직의 미비점을 악용하여 내부 네트워크로의 요청을 우회할 수 있습니다. 공격자는 'ip6-localhost'와 같은 호스트네임 별칭을 사용하여 필터를 통과한 뒤 서버가 로컬 또는 프라이빗 주소에 접속하도록 유도할 수 있습니다.
💡 쉬운 설명
서버가 허용되지 않은 주소로 접속하는 것을 막는 필터가 있는데, 특수한 이름을 가진 주소를 사용하면 이 필터를 속일 수 있습니다. 이를 통해 공격자는 서버 내부의 비밀 정보에 접근하거나 내부 네트워크를 탐색할 수 있습니다.
🇺🇸 원문 (English)
CKAN MCP Server is a tool for querying CKAN open data portals. A known vulnerability CVE-2026-33060 indicated tools including ckan_package_search and sparql_query that accept a base_url parameter had the risk of making HTTP requests to arbitrary endpoints without restriction. A fix was applied to filter out ip addresses. However, a method to bypass exists prior to version 0.4.106. CKAN MCP Server validates caller-supplied CKAN server URLs by inspecting only the parsed hostname string before issuing outbound HTTP requests. In `src/utils/http.ts`, hostname aliases such as `ip6-localhost` are not equal to `localhost`, are not dotted IPv4 literals, and are not bracketed IPv6 literals, so they pass the SSRF filter but can resolve to loopback when the server performs the request. A remote MCP caller that can invoke CKAN tools with a `server_url` can therefore make the server connect to local or private addresses and, for CKAN-shaped responses, receive response-derived data. The updated fix in version 0.4.106 replaced the single `hostname === 'localhost'` check with a blocked-hostname `Set` covering `ip6-localhost` and `ip6-loopback`.
📍 영향받는 시스템
CKAN MCP Server version 0.4.106 미만
⚔️ 공격 벡터
ckan_package_search 또는 sparql_query 도구의 base_url 파라미터에 'ip6-localhost'와 같은 호스트네임 별칭을 입력하여 SSRF 공격 수행
🛡️ 대응 방법
CKAN MCP Server를 버전 0.4.106 이상으로 업데이트하여 강화된 호스트네임 차단 목록을 적용하십시오.
🔧 검증 코드
출력된 버전 번호가 0.4.106보다 낮은 경우 취약한 상태입니다.
npm list @ckan/mcp-server 2>/dev/null | grep -E 'mcp-server@'