🇰🇷 한글 설명
Angular의 @angular/router URL 파서가 Node.js 서버 사이드 렌더링(SSR) 시 숫자 형태의 매트릭스 파라미터와 아울렛 이름을 처리하는 과정에서 메모리 할당 결함이 발생합니다. 공격자가 특수하게 조작된 URL을 반복적으로 요청하면 V8 엔진이 이를 배열 인덱스로 오인하여 과도한 힙 메모리를 할당하게 되며, 결과적으로 SSR 워커가 종료될 수 있습니다.
💡 쉬운 설명
웹사이트의 주소창에 특정 숫자 패턴을 반복해서 넣은 요청을 보내면, 서버의 메모리를 순식간에 가득 채워 서버를 멈추게 만들 수 있는 취약점입니다. 서버가 주소를 해석하는 과정에서 숫자를 배열의 크기로 착각하여 발생하는 문제입니다.
🇺🇸 원문 (English)
Angular is a development platform for building mobile and desktop web applications using TypeScript/JavaScript and other languages. Prior to 20.3.32, 21.2.24, and 22.2.0, the @angular/router URL parser stores numeric matrix parameter names and numeric outlet names as properties on initially empty JavaScript objects during Node.js server-side rendering. V8 can interpret these URL-derived keys as array indices and allocate dense backing stores sized to high numeric values, so repeated small path segments cause disproportionate per-segment heap consumption. An unauthenticated attacker can send overlapping requests containing repeated numeric matrix parameters when SSR is enabled, the router directly parses the request URL, and upstream proxies allow semicolons and multiple path segments, eventually exhausting the Node.js old-space heap and terminating the SSR worker. Pure client-side Angular applications are not affected. This issue is fixed in versions 20.3.32, 21.2.24, and 22.2.0.
📍 영향받는 시스템
Angular versions prior to 20.3.32, 21.2.24, and 22.2.0 (SSR enabled)
⚔️ 공격 벡터
SSR이 활성화된 상태에서 세미콜론과 숫자 매트릭스 파라미터가 포함된 조작된 URL을 반복적으로 전송
🛡️ 대응 방법
Angular를 최신 패치 버전(20.3.32, 21.2.24, 22.2.0 이상)으로 업데이트
🔧 검증 코드
출력된 @angular/router의 버전이 취약한 버전 범위에 포함되는지 확인
💻 영향받는 소프트웨어
IBM WebSphere Application Server