🇰🇷 한글 설명
Angular SSR의 URL 해석 메커니즘에서 발생하는 서버 측 요청 위조(SSRF) 취약점입니다. 공격자가 URL 경로를 '//' 또는 '\'로 시작하도록 조작하면, 서버가 의도된 베이스 URL 대신 공격자가 지정한 외부 도메인을 사용하여 요청을 처리하게 됩니다. 이로 인해 서버가 공격자의 엔드포인트와 통신하도록 유도할 수 있습니다.
💡 쉬운 설명
웹사이트가 서버에서 페이지를 미리 만들 때, 주소를 잘못 해석하여 공격자가 원하는 엉뚱한 사이트로 접속하게 만드는 보안 결함입니다. 이를 통해 공격자는 서버가 내부적으로 외부의 위험한 사이트에 데이터를 보내도록 조작할 수 있습니다.
🇺🇸 원문 (English)
The Angular SSR is a server-rise rendering tool for Angular applications. The vulnerability is a Server-Side Request Forgery (SSRF) flaw within the URL resolution mechanism of Angular's Server-Side Rendering package (@angular/ssr) before 19.2.18, 20.3.6, and 21.0.0-next.8. The function createRequestUrl uses the native URL constructor. When an incoming request path (e.g., originalUrl or url) begins with a double forward slash (//) or backslash (\\), the URL constructor treats it as a schema-relative URL. This behavior overrides the security-intended base URL (protocol, host, and port) supplied as the second argument, instead resolving the URL against the scheme of the base URL but adopting the attacker-controlled hostname. This allows an attacker to specify an external domain in the URL path, tricking the Angular SSR environment into setting the page's virtual location (accessible via DOCUMENT or PlatformLocation tokens) to this attacker-controlled domain. Any subsequent relative HTTP requests made during the SSR process (e.g., using HttpClient.get('assets/data.json')) will be incorrectly resolved against the attacker's domain, forcing the server to communicate with an arbitrary external endpoint. This vulnerability is fixed in 19.2.18, 20.3.6, and 21.0.0-next.8.
📍 영향받는 시스템
@angular/ssr < 19.2.18, < 20.3.6, < 21.0.0-next.8
⚔️ 공격 벡터
URL 경로에 '//' 또는 '\'를 포함시켜 서버의 URL 해석 로직을 우회하고 외부 도메인으로 요청을 유도함
🛡️ 대응 방법
@angular/ssr 패키지를 19.2.18, 20.3.6 또는 21.0.0-next.8 이상의 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 @angular/ssr의 버전이 취약점이 해결된 버전(19.2.18, 20.3.6, 21.0.0-next.8 이상)인지 확인합니다.
💻 영향받는 소프트웨어
IBM WebSphere Application Server