
CVE-2022-0155를 시연하는 개념 증명으로, follow-redirects npm 패키지의 HTTP 리다이렉트를 통한 쿠키 탈취를 보여주며, 전이적 의존성 공격 테스트를 위한 Express 서버 및 클라이언트 스크립트를 포함합니다.
이 저장소는 CVE-2022-0155 취약점에 대한 데모를 포함합니다. 이 취약점은 ranjit-git에 의해 발견되었으며 자세한 내용은 여기에서 확인할 수 있습니다. 이 PoC의 목적은 이 취약점이 follow-redirects를 직접(direct) 의존성으로 사용하는 시나리오에만 적용되는 것이 아니라, axios를 통해 follow-redirects를 간접/전이(transitive) 의존성으로 사용하는 경우에도 적용된다는 것을 입증하는 것입니다.
이 취약점은 버전 1.14.7 이전의 follow-redirects npm 패키지에 영향을 미칩니다. follow-redirects는 기본 제공 HTTP 모듈에 리다이렉트를 따라가는 기능을 추가합니다.
취약점을 설명하기 위해 다음 시나리오를 고려해 보세요.
취약점은 3단계에 있습니다. 취약한 버전의 follow-redirects는 1단계의 요청과 동일한 Cookie 헤더를 포함합니다.
이로 인해 https://attackers-webserver.com은 예를 들어 https://example.com에서 사용자의 세션 ID를 탈취하고 사용자의 데이터에 접근할 수 있습니다.
이 공격은 공격자가 https://attackers-webserver.com으로의 리다이렉트를 제어할 수 있는 능력에 달려 있습니다.
PoC에서는 Express 서버를 사용하여 https://example.com의 동작을 모방합니다.
서버에는 '/redirect'라는 단일 GET API 엔드포인트가 있으며, 클라이언트를 매개변수로 제공된 URL로 리다이렉트합니다.
이는 공격자가 클라이언트가 리다이렉트되는 URL을 제어할 수 있는 시나리오를 모방합니다.
npm install
node express-server.js
nc -l -v 8182 # or nc -lnvp 8182 on non-mac systems
node client.js
nc가 실행 중인 터미널에 다음 출력이 표시되어야 합니다.
GET / HTTP/1.1
Accept: application/json, text/plain, */*
Cookie: session=some-secret-value
User-Agent: axios/0.21.4
Host: localhost:8182
Connection: keep-alive
nc(Netcat) 서버가 공격자의 웹 서버를 나타내는 데 사용되므로, nc 터미널에 Cookie 헤더가 존재한다는 것은 취약점을 보여줍니다.