🇰🇷 한글 설명
Angular의 @angular/platform-server에서 서버 사이드 렌더링(SSR) 중 URL을 부적절하게 처리하여 발생하는 SSRF 취약점입니다. 공격자가 역슬래시(\)를 포함한 특수 URL을 전송하면 URL 파서가 이를 정규화하는 과정에서 공격자의 도메인을 로컬 오리진으로 오인하게 만듭니다. 이로 인해 내부 API 호출이나 메타데이터 서비스 요청이 공격자의 서버로 리다이렉트될 수 있습니다.
💡 쉬운 설명
웹사이트가 서버에서 화면을 미리 만들 때, 공격자가 보낸 가짜 주소를 진짜 주소로 착각하는 문제입니다. 이로 인해 우리 서버가 몰래 공격자의 컴퓨터에 중요한 정보를 보내게 될 위험이 있습니다.
🇺🇸 원문 (English)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to versions 19.2.21, 20.3.19, 21.2.9, and 22.0.0-next.8, a Server-Side Request Forgery (SSRF) vulnerability exists in @angular/platform-server due to improper handling of URLs during Server-Side Rendering (SSR). When an attacker sends a request such as GET /\evil.com/ HTTP/1.1 the server engine (Express, etc.) passes the URL string to Angular’s rendering functions. Because the URL parser normalizes the backslash to a forward slash for HTTP/HTTPS schemes, the internal state of the application is hijacked to believe the current origin is evil.com. This misinterpretation tricks the application into treating the attacker’s domain as the local origin. Consequently, any relative HttpClient requests or PlatformLocation.hostname references are redirected to the attacker controlled server, potentially exposing internal APIs or metadata services. This issue has been patched in versions 19.2.21, 20.3.19, 21.2.9, and 22.0.0-next.8.
📍 영향받는 시스템
@angular/platform-server (19.2.21, 20.3.19, 21.2.9, 22.0.0-next.8 미만 버전)
⚔️ 공격 벡터
역슬래시(\)를 포함한 조작된 URL(예: /\\evil.com/)을 서버에 전송하여 URL 파싱 로직을 악용
🛡️ 대응 방법
Angular를 패치된 버전(19.2.21, 20.3.19, 21.2.9, 22.0.0-next.8 이상)으로 업데이트
🔧 검증 코드
출력된 버전이 취약점이 해결된 패치 버전보다 낮은지 확인
npm list @angular/platform-server
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
💻 영향받는 소프트웨어
IBM WebSphere Application Server