🇰🇷 한글 설명
Angular의 서버 사이드 렌더링(SSR) 과정에서 URL 검증 로직의 허점으로 인해 발생하는 보안 취약점입니다. WHATWG URL 파싱 이후 유니코드 공백을 제거하는 과정에서 상대 경로가 공격자가 제어하는 프로토콜 상대 URL로 변환될 수 있습니다. 이로 인해 민감한 인증 정보가 포함된 요청이 공격자의 서버로 전송되어 SSRF 및 자격 증명 유출이 발생할 수 있습니다.
💡 쉬운 설명
웹사이트가 주소를 확인할 때 눈에 보이지 않는 특수 공백 문자를 지우면서, 원래 안전했던 주소가 공격자의 주소로 바뀌어 버리는 문제입니다. 이 과정에서 사용자의 비밀번호나 인증 키 같은 중요한 정보가 공격자에게 전달될 위험이 있습니다.
🇺🇸 원문 (English)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.30, 21.2.22, and 22.1.4, Angular Server-Side Rendering in @angular/platform-server processes user-controlled resource or request URLs through HttpClient after application code validates them with WHATWG URL parsing. The resolveUrl and parseUrl utilities called String.prototype.trim(), which removed leading Unicode whitespace such as U+00A0 or U+FEFF after the input passed a same-origin check, converting a relative path into a protocol-relative attacker-controlled URL. In affected applications that attach sensitive server-side credentials such as Authorization headers to approved requests, relativeUrlsTransformerInterceptorFn then dispatched the request to the attacker-controlled origin, causing SSRF and credential disclosure. This issue is fixed in versions 20.3.30, 21.2.22, and 22.1.4.
📍 영향받는 시스템
Angular @angular/platform-server (20.3.30, 21.2.22, 22.1.4 미만 버전)
⚔️ 공격 벡터
유니코드 공백이 포함된 조작된 URL을 입력하여 상대 경로를 프로토콜 상대 URL로 변환시킨 후 SSRF 유도
🛡️ 대응 방법
Angular를 최신 보안 패치 버전(20.3.30, 21.2.22, 22.1.4 이상)으로 업데이트
🔧 검증 코드
출력된 @angular/platform-server의 버전이 취약점이 해결된 버전(20.3.30, 21.2.22, 22.1.4 이상)인지 확인
npm list @angular/platform-server
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server