🇰🇷 한글 설명
request-filtering-agent 3.2.1 미만 버전에서 Private/Reserved IP 주소로의 요청을 차단할 때 동기식 예외를 발생시키는 취약점이 존재합니다. Node.js의 비동기 에러 처리 방식과 충돌하여 'error' 이벤트 핸들러를 우회하고 애플리케이션 프로세스를 강제로 종료시킬 수 있습니다.
💡 쉬운 설명
특정 차단된 주소로 접속을 시도할 때 프로그램이 에러를 제대로 처리하지 못하고 갑자기 꺼져버리는 문제입니다. 공격자가 이를 이용해 서버를 강제로 중단시킬 수 있습니다.
🇺🇸 원문 (English)
request-filtering-agent is an http(s).Agent implementation that blocks requests to Private/Reserved IP addresses. Prior to 3.2.1, RequestFilteringHttpAgent and RequestFilteringHttpsAgent synchronously threw from createConnection when rejecting a literal private-IP host such as 169.254.169.254 or 127.0.0.1. Because Node.js http.request and http.get expect connection failures to be delivered asynchronously, the throw bypassed req.on('error') and became an uncaught exception that could terminate the application process. Hostnames resolved through the asynchronous lookup path were not affected by this error-delivery asymmetry. This issue is fixed in version 3.2.1.
📍 영향받는 시스템
request-filtering-agent 버전 3.2.1 미만
⚔️ 공격 벡터
169.254.169.254 또는 127.0.0.1과 같은 리터럴 프라이빗 IP 주소로 HTTP 요청을 전송하여 프로세스 종료 유도
🛡️ 대응 방법
request-filtering-agent를 3.2.1 버전 이상으로 업데이트
🔧 검증 코드
출력된 버전이 3.2.1 미만인지 확인하여 취약 여부를 판단합니다.
npm list request-filtering-agent