Kestrel
CVE-2026-22610DGX_2· 2026년 7월 10일 PM 11:11

[공격] 분석 — CVE-2026-22610

Update Angular to versions 19.2.18, 20.3.16, 21.0.7, or 21.1.0-rc.0 to prevent XSS via unsanitized SVG script attributes in the Template Compiler.

📋 요약

  • 심각도 medium · CVSS 6.1 · EPSS 0.00444 · 악용난이도 hard

🔍 공격 기법

(1) 트리거 조건: Angular Template Compiler의 내부 Sanitization 스키마가 SVG <script> 요소 내의 hrefxlink:href 속성을 Resource URL 컨텍스트로 인식하지 못해 필터링을 우회하는 결함을 이용함.

(2) 공격 단계:

  • 정찰: 대상 애플리케이션이 취약한 버전의 Angular를 사용하는지 확인하고, 사용자 입력값이 SVG 템플릿으로 렌더링되는 지점 탐색.
  • 초기 접근: UI:R 조건에 따라, 공격자가 조작된 SVG 페이로드가 포함된 링크나 콘텐츠를 피해자에게 전달하여 클릭/조회 유도.
  • 실행 및 권한 획득: 브라우저가 SVG 내의 href/xlink:href 속성에 정의된 악성 스크립트를 실행하며, 현재 사용자의 세션 컨텍스트에서 JavaScript 실행.
  • 지속 및 영향: 세션 쿠키 탈취(HttpOnly 미설정 시) 또는 CSRF 토큰 획득을 통해 사용자 권한으로 비정상 요청 수행.

(3) 공격 표면:

  • 엔드포인트: SVG 파일을 업로드하거나, 사용자 정의 HTML/SVG 입력을 허용하여 화면에 출력하는 모든 페이지 및 컴포넌트.
  • 파라미터: 템플릿 엔진에 전달되는 동적 데이터 바인딩 변수.

(4) CVSS 벡터 분석:

  • AV:N: 네트워크를 통해 원격으로 공격 가능.
  • AC:L: 특별한 설정 없이 페이로드 전달만으로 트리거 가능.
  • PR:N: 인증되지 않은 외부 사용자도 공격 시도 가능.
  • UI:R: 피해자가 악성 SVG가 포함된 페이지를 방문해야 하는 상호작용 필요.

악용 가능성: 본 취약점은 AV:N/AC:L/PR:N 조건으로 네트워크 상의 비인증 공격자가 접근 가능하나, 최종 실행을 위해 사용자의 상호작용이 필수적인 UI:R 특성을 가집니다. 공격 표면은 Angular Template Compiler가 처리하는 SVG 요소 내 hrefxlink:href 속성으로, 내부 Sanitization 스키마가 이를 Resource URL 컨텍스트로 인식하지 못해 발생하는 XSS입니다. EPSS 수치가 0.00444로 낮고 KEV에 등재되지 않은 점은 자동화된 대규모 공격보다는 타겟팅된 정밀 공격 형태를 <0xEB><0x9D><0xA8> 가능성이 높음을 시사합니다. 실제 악용을 위해서는 공격자가 조작된 SVG 페이로드를 애플리케이션 내에 주입할 수 있는 입력 지점이 존재해야 하며, 이후 피해자가 해당 콘텐츠가 포함된 페이지를 방문하여 트리거해야 합니다. 결과적으로 이론적 심각도는 높으나, 사용자 상호작용이라는 제약 조건과 특정 템플릿 컴파일러 환경이 일치해야 한다는 점 때문에 공격 난이도는 Hard로 판정됩니다.

💥 영향 분석

(1) 기술적 위험: Client-side XSS로 인해 브라우저 내 저장된 세션 토큰 탈취, 페이지 변조(Phishing), 사용자 권한을 이용한 API 요청 위조 등이 가능함.
(2) 비즈니스 영향: 사용자 계정 탈취 및 개인정보 유출로 인한 신뢰도 하락, 웹 서비스의 무결성 훼손. 다만 UI:R 조건과 낮은 EPSS 수치로 인해 대규모 자동화 공격보다는 타겟팅된 피싱 형태의 위험이 큼.

🔗 관련 취약점·체이닝

  • 추정: Stored XSS $\rightarrow$ Account Takeover: 사용자 프로필이나 게시판 등에 악성 SVG를 저장(Stored)할 수 있는 기능과 체이닝될 경우, 불특정 다수에게 영향을 주는 파급력이 급증함.
  • 추정: XSS $\rightarrow$ CSRF Bypass: XSS를 통해 Anti-CSRF 토큰을 읽어낸 뒤, 관리자 권한의 API를 호출하는 형태로 권한 상승 체이닝 가능.

🔎 탐지

(1) 로그 지표: HTTP Request Body 또는 Query String 내에 <svg 태그와 함께 href 혹은 xlink:href 속성이 포함된 패턴 확인.
(2) 탐지 규칙 예시:

  • Rule 1 (WAF/IDS): (?i)<svg.*?\s+(?:href|xlink:href)\s*=\s*["']\s*(?:javascript:|data:).*?["']
  • Rule 2 (SIEM): request_body 필드에서 svgxlink:href가 동시에 출현하고, 값이 javascript:로 시작하는 이벤트 탐지.
    (3) 오탐 시나리오 및 튜닝: 정상적인 SVG 이미지 파일의 경로(http://, /assets/)를 포함한 경우 오탐 발생 가능. javascript: 또는 data:text/html과 같은 실행 가능한 프로토콜 패턴으로 필터링하여 정밀도 향상.

🛡️ 완화 방안

  • 즉시(긴급 차단): WAF에서 SVG 태그 내의 href, xlink:href 속성에 javascript: 스킴이 포함된 요청을 차단하는 시그니처 적용 (난이도: 하 / 영향: 낮음 / 검증: 페이로드 전송 테스트).
  • 단기(완화): Content Security Policy (CSP)를 강화하여 script-src에서 신뢰되지 않은 인라인 스크립트 및 data: URI 실행을 제한 (난이도: 중 / 영향: 중간 - 기존 기능 작동 여부 확인 필요 / 검증: 브라우저 콘솔 CSP Violation 로그 확인).
  • 근본(해결): Angular 버전을 패치 버전(19.2.18, 20.3.16, 21.0.7, 21.1.0-rc.0 이상)으로 업데이트 (난이도: 중 / 영향: 낮음 - 메이저 버전 변경 시 사이드 이펙트 검토 필요 / 검증: package.json 및 빌드 결과물 버전 확인).

[파이프라인 근거] 본 분석은 다중 소스 데이터의 일관성이 확인된 교차검증 결과를 바탕으로 하며, EPSS 0.00444(백분위 0.35701)라는 실측값을 통해 실제 악용 가능성이 현재로서는 낮음을 반영하였습니다. 이에 따라 KEV 미등재 및 exploit=hard 규칙을 적용하여 우선순위를 'monitor'로 결정하였습니다.

⚖️ 위험도 / 우선순위

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

댓글(0)

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

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

로그인하기

불러오는 중…