🇰🇷 한글 설명
Eclipse Che 7.29.0 이상 버전에서 특정 API 엔드포인트가 사용자 제어 URL을 검증 없이 처리하여 발생하는 취약점입니다. 공격자는 file:// 스킴을 통해 로컬 파일을 읽거나 내부 네트워크 및 클라우드 메타데이터에 접근할 수 있으며, SCM 개인 액세스 토큰(PAT)을 탈취할 수 있습니다.
💡 쉬운 설명
프로그램이 외부 주소를 확인하는 과정에서 검증을 제대로 하지 않아 발생하는 보안 구멍입니다. 이를 통해 해커가 내 컴퓨터의 중요한 파일을 훔쳐보거나 로그인 정보를 몰래 빼갈 수 있습니다.
🇺🇸 원문 (English)
In Eclipse Che versions 7.29.0 and later, the GET `/api/scm/resolve` and `POST /api/factory/resolver` endpoints pass an attacker-controlled URL to `URLFetcher.fetch()`, which calls `new URL(url).openConnection()` with no scheme or host allow-list and returns the response body to the caller. Any authenticated Che user can read arbitrary local files via the file:// scheme (including the pod's Kubernetes service-account token at `file:///var/run/secrets/kubernetes.io/serviceaccount/token`), reach internal HTTP services and cloud instance metadata endpoints (169.254.169.254), and have their stored SCM personal access token attached as an `Authorization` header to a host of their choosing. The same credential-forwarding behavior also fires when a victim opens a workspace from a malicious devfile whose `parent.uri` points to an attacker-controlled server, enabling exfiltration of the victim's SCM PAT without direct API access. No fix is available.
📍 영향받는 시스템
Eclipse Che versions 7.29.0 and later
⚔️ 공격 벡터
인증된 사용자가 조작된 URL을 API 엔드포인트로 전달하거나 악성 devfile을 실행하여 공격
🛡️ 대응 방법
현재 공식 패치가 없으므로, 신뢰할 수 없는 URL이나 devfile 사용을 금지하고 네트워크 접근 제어를 강화해야 함
🔧 검증 코드
출력된 버전 정보가 7.29.0 이상인 경우 해당 취약점에 노출된 상태입니다.
curl -s http://<eclipse-che-host>/api/version | grep -E '7.29.0|7.30.0|7.31.0'