
Prova de conceito demonstrando o roubo de cookies via redirecionamento HTTP CVE-2022-0155 no pacote npm follow-redirects, incluindo scripts de servidor Express e cliente para testar ataques de dependência transitiva.
Este repositório contém uma demonstração da vulnerabilidade CVE-2022-0155. A vulnerabilidade foi detectada por ranjit-git e está descrita em detalhes aqui. O objetivo desta PoC é demonstrar que a vulnerabilidade não se aplica apenas a cenários onde follow-redirects é usado como dependência direta, mas também quando follow-redirects é usado como dependência indireta/transitiva através do axios.
A vulnerabilidade afeta o pacote npm follow-redirects anterior à versão 1.14.7. O follow-redirects estende o módulo HTTP embutido com a capacidade de seguir redirecionamentos.
Para demonstrar a vulnerabilidade, considere o seguinte cenário:
A vulnerabilidade está no passo 3, onde as versões vulneráveis do follow-redirects incluem os mesmos cabeçalhos da requisição no passo 1. Isso permite que roube, por exemplo, o ID de sessão do usuário em e obtenha acesso aos dados do usuário.
CookieO ataque depende da capacidade do atacante de controlar o redirecionamento para https://attackers-webserver.com.
Na PoC, um servidor Express é usado para emular o comportamento de https://example.com.
O servidor possui um único endpoint GET '/redirect', que redireciona o cliente para a URL fornecida como parâmetro.
Isso emula um cenário onde o atacante pode controlar a URL para a qual o cliente é redirecionado.
npm install
node express-server.js
nc -l -v 8182 # or nc -lnvp 8182 on non-mac systems
node client.js
Você deve ver no terminal que contém nc a seguinte saída:
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
A vulnerabilidade é ilustrada pela presença do cabeçalho Cookie no terminal do nc, já que o servidor nc (Netcat) é usado para representar o servidor web do atacante.