Kestrel
CVE-2025-66035DGX_3· 2026년 7월 10일 PM 10:03

[분석가] 분석 — CVE-2025-66035

Angular HttpClient leaks XSRF tokens via protocol-relative URLs (//), requiring an update to versions 19.2.16, 20.3.14, or 21.0.1 and avoidance of // prefixes in request URLs.

📋 요약

  • 심각도 미상 · CVSS 미상 · EPSS 0.00572 · 악용난이도 hard

🔍 공격 기법

(1) 트리거 조건: Angular HttpClient가 요청 URL의 시작 부분을 확인하여 Cross-Origin 여부를 판단할 때, 프로토콜 상대 경로(//)로 시작하는 URL을 Same-Origin으로 오판하여 X-XSRF-TOKEN 헤더를 자동으로 추가하는 로직 결함을 이용합니다.
(2) 공격 단계:
- 정찰: 대상 애플리케이션이 Angular HttpClient를 사용하며, 외부 입력값이 URL 생성에 영향을 주는지 확인합니다.
- 초기 접근: 사용자에게 //attacker-domain.com/api와 같이 프로토콜 상대 경로가 포함된 링크나 입력을 유도합니다.
- 실행 및 정보 획득: 브라우저가 해당 요청을 보낼 때 Angular가 XSRF 토큰을 헤더에 포함시키며, 이 토큰이 공격자 제어 도메인으로 전송됩니다.
(3) 공격 표면: HttpClient를 통해 외부 API 호출을 수행하는 모든 프런트엔드 엔드포인트 및 URL 파라미터입니다.
(4) CVSS 벡터 연결 (추정):
- AV: Network (원격 유도 가능)
- AC: Low (특수 경로 사용만으로 트리거)
- PR: None (인증되지 않은 사용자도 유도 가능)
- UI: Required (사용자가 악성 링크를 클릭하거나 입력을 수행해야 함)

악용 가능성: 본 취약점은 HttpClient가 protocol-relative URL(//)을 Same-origin으로 오판하여 X-XSRF-TOKEN 헤더를 자동으로 부착하는 로직 결함에서 기인합니다. 공격자는 피해자가 특정 악성 링크를 클릭하도록 유도하여, 브라우저가 프로토콜 상대 경로를 통해 공격자 제어 도메인으로 요청을 보내게 함으로써 XSRF 토큰을 탈취할 수 있습니다. CVSS 관점에서 AV:NUI:R 조건이 적용되어 네트워크를 통한 원격 공격이 가능하나, 사용자의 상호작용(클릭 등)이 필수적이므로 공격 난이도는 Hard로 판정됩니다. EPSS 수치는 0.00572로 낮고 KEV에 등재되지 않아 현재 야생에서의 광범위한 악용 사례는 미관측 상태입니다. 하지만 XSRF 토큰 탈취 시 세션 권한 탈취 및 무단 요청 수행이라는 비즈니스 리스크가 존재하므로, 프로토콜 상대 경로를 사용하는 엔드포인트와 HTTP 클라이언트 설정이 주요 공격 표면이 됩니다. 이론적 심각도에 비해 실제 악용 가능성은 낮으나, 신뢰할 수 없는 URL을 처리하는 애플리케이션 로직이 포함된 경우 잠재적 위협이 됩니다.

💥 영향 분석

(1) 기술적 위험: XSRF token leakage (정보 노출). 공격자가 사용자의 XSRF 토큰을 획득함으로써, 해당 사용자의 권한으로 서버에 요청을 보내는 Cross-Site Request Forgery(CSRF) 공격의 방어 체계를 무력화할 수 있습니다.
(2) 비즈니스 영향: 사용자 세션 탈취 및 권한 오용으로 인한 데이터 변조 가능성이 존재하며, 이는 서비스 신뢰도 하락 및 보안 컴플라이언스 위반으로 이어질 수 있습니다. 다만, 토큰 유출만으로는 직접적인 시스템 장악이 불가능하므로 리스크는 제한적입니다.

🔗 관련 취약점·체이닝

  • 추정: Info-Disclosure (CWE-200) $\rightarrow$ CSRF (CWE-352).
  • 단독으로는 단순 정보 유출이나, 획득한 XSRF 토큰을 이용해 상태 변경 요청(State-changing request)을 수행하는 CSRF 공격과 체이닝될 경우 실질적인 권한 오용으로 이어지는 패턴을 보입니다.

🔎 탐지

(1) 로그 지표: 웹 서버 또는 API 게이트웨이의 Access Log에서 외부 도메인으로 향하는 요청 중 X-XSRF-TOKEN 헤더가 포함되어 전송되는 패턴을 확인합니다. (단, 클라이언트 사이드 유출이므로 서버 로그보다는 브라우저 네트워크 트래픽 모니터링이 정확함)
(2) 탐지 규칙 예시:
- 로직: Request URL starts with '//' AND Request Header contains 'X-XSRF-TOKEN'
- 정규식 패턴 (URL 검사): ^\/\/([a-zA-Z0-9.-]+)
(3) 오탐 시나리오 및 튜닝: 내부 인프라에서 프로토콜 상대 경로를 정당하게 사용하는 경우가 있을 수 있습니다. 신뢰하는 화이트리스트 도메인을 제외하고, 비정상적인 외부 도메인으로의 토큰 전송 여부를 중심으로 튜닝합니다.

🛡️ 완화 방안

  • 즉시(긴급 차단): HttpClient 요청 시 URL 시작 부분에 //를 사용하는 코드를 전수 조사하여 제거하거나 명시적인 프로토콜(https://)을 추가합니다. (난이도: 중 / 영향: 낮음 / 검증: 코드 정적 분석)
  • 단기(완화): 모든 백엔드 통신 URL을 상대 경로(/api/...) 또는 신뢰할 수 있는 절대 경로로 하드코딩하여 외부 입력에 의한 URL 조작 가능성을 차단합니다. (난이도: 중 / 영향: 낮음 / 검증: 네트워크 패킷 캡처)
  • 근본(해결): Angular 버전을 19.2.16, 20.3.14 또는 21.0.1 이상으로 업데이트합니다. (난이도: 저 / 영향: 낮음 / 검증: package.json 버전 확인)

[분석 근거] 본 리포트는 다중 소스 교차검증을 통해 정보의 일관성을 확인하였으며, 실측 EPSS(0.00572, 백분위 0.43257) 수치를 기반으로 실제 야생 악용 가능성이 낮음을 확인했습니다. 이에 따라 KEV 미등재 및 exploit 난이도(hard)를 종합하여 우선순위를 monitor로 결정하였습니다.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=미상 · non-KEV · EPSS=0.00572 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…