🇰🇷 한글 설명
Angular의 서버사이드 렌더링(SSR) 모듈인 ServerPlatformLocation에서 WHATWG URL 정규화 이전에 프로토콜 상대 URL을 검사하여, 점 세그먼트와 다중 슬래시를 포함한 요청 경로로 이 검사를 우회할 수 있습니다. 이로 인해 HTTP Location 헤더에 두 개의 슬래시로 시작하는 경로가 삽입되어 브라우저가 공격자가 지정한 외부 사이트로 리다이렉트될 수 있습니다. 순수 클라이언트 측 SPA는 영향을 받지 않으며, 20.3.33, 21.2.25, 22.2.1 버전에서 수정되었습니다.
💡 쉬운 설명
Angular로 만든 웹사이트의 서버 렌더링 기능에 결함이 있어, 공격자가 특수하게 조작한 주소로 사용자를 악성 사이트로 몰래 보낼 수 있습니다. 수정된 버전으로 업데이트하면 이 문제를 막을 수 있습니다.
🇺🇸 원문 (English)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.33, 21.2.25, and 22.2.1, ServerPlatformLocation in Angular server-side rendering checks for protocol-relative URLs before WHATWG URL normalization. A request path containing a popping dot segment followed by multiple slashes can bypass the raw resolveUrl check and normalize to a pathname beginning with two slashes. When Angular SSR detects a mismatch with the router's final location, it can place that pathname in an HTTP Location header, causing a browser to navigate to an attacker-controlled origin. Affected applications use @angular/platform-server and @angular/ssr and either expose compatible parameter or child route shapes or pass user-controlled navigation targets through infrastructure that preserves the relevant dot segments or semicolons. Pure client-side SPAs are not affected. This issue is fixed in versions 20.3.33, 21.2.25, and 22.2.1.
📍 영향받는 시스템
@angular/platform-server 및 @angular/ssr을 사용하며 20.3.33, 21.2.25, 22.2.1 미만 버전을 쓰는 Angular SSR 애플리케이션
⚔️ 공격 벡터
점 세그먼트와 여러 슬래시를 포함한 조작된 URL 경로로 SSR의 프로토콜 상대 URL 검사를 우회해 Location 헤더를 통한 외부 사이트 오픈 리다이렉트 유발
🛡️ 대응 방법
@angular/platform-server와 @angular/ssr을 20.3.33, 21.2.25, 22.2.1 이상 버전으로 업데이트
🔧 검증 코드
출력된 버전이 20.3.33, 21.2.25, 22.2.1 이상이면 패치된 상태이며, 그보다 낮은 버전이 표시되면 취약하므로 업데이트가 필요합니다.
npm ls @angular/platform-server @angular/ssr 2>/dev/null | grep -E 'platform-server|ssr'