🇰🇷 한글 설명
CloudTAK 13.10.0 미만 버전에서 ESRI 헬퍼 관련 API가 사용자로부터 입력받은 URL을 검증 없이 내부 네트워크로 요청을 보내는 SSRF 취약점이 존재합니다. 공격자는 이를 통해 클라우드 인스턴스 메타데이터, 루프백 주소, 내부 VPC 내의 서비스 등에 접근하여 민감한 정보를 탈취할 수 있습니다. 해당 취약점은 13.10.0 버전에서 패치되었습니다.
💡 쉬운 설명
해커가 CloudTAK 서버를 조종하여 서버 내부 네트워크에만 접근 가능한 비밀 정보나 다른 컴퓨터의 데이터를 몰래 가져올 수 있는 보안 약점입니다. 마치 배달원에게 우리 집 안방 열쇠를 주어 집 안을 구경하게 만드는 것과 비슷합니다.
🇺🇸 원문 (English)
CloudTAK is a browser-based Common Operating Picture and situational awareness tool compatible with TAK. Prior to version 13.10.0, every route in the ESRI helper family (api/routes/esri.ts) takes a fully attacker-controlled URL from the request (POST /api/esri body url, and the portal / server / layer query parameters on the GET /api/esri/* routes) and passes it into EsriBase / EsriProxyPortal / EsriProxyServer / EsriProxyLayer in api/lib/esri.ts, which fetch it with the bare fetch from @tak-ps/etl. No IP / DNS / hostname classification is applied at any point, so the destination is never validated against private, loopback, or link-local ranges. Any authenticated user (the routes only require Auth.is_auth(config, req, { anyResources: true }), i.e. any token, not an admin) can therefore make the CloudTAK server issue arbitrary outbound GET/POST requests to internal addresses such as the cloud instance-metadata service (169.254.169.254), loopback admin ports (127.0.0.1:<port>), and other hosts reachable only from inside the deployment VPC. This is a full-read SSRF, not blind: on success the upstream JSON body is returned to the caller via res.json(...), and on failure the upstream error string is reflected verbatim as ESRI Server Error: <message>. An attacker can read cloud metadata (and the temporary IAM credentials the instance role exposes), enumerate internal services, and exfiltrate their response bodies. The sniff() URL classifier provides no protection: it only pattern-matches the pathname (/rest, /arcgis/rest, /sharing/rest), so a URL like http://169.254.169.254/arcgis/rest or http://127.0.0.1:8500/rest passes sniff() and is fetched. This issue has been patched in version 13.10.0.
📍 영향받는 시스템
CloudTAK version < 13.10.0
⚔️ 공격 벡터
인증된 사용자가 API 요청(POST/GET)의 URL 파라미터를 조작하여 내부 IP(169.254.169.254, 127.0.0.1 등)로 요청을 유도함
🛡️ 대응 방법
CloudTAK을 최신 버전인 13.10.0 이상으로 업데이트하십시오.
🔧 검증 코드
명령어 결과에 13.10.0 이상의 버전 번호가 출력되면 패치가 완료된 상태입니다.
curl -s http://<cloudtak-host>/api/version | grep -E '13.10.0'