
このリポジトリは、CVE-2022-0155 脆弱性のデモンストレーションを含んでいます。 脆弱性は ranjit-git によって発見され、詳細は こちら に記述されています。 この PoC の目的は、脆弱性が follow-redirects が直接依存関係として使用されるシナリオだけでなく、axios を介して間接的/推移的依存関係として使用される場合にも適用されることを示すことです。
脆弱性は、バージョン 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 の動作をエミュレートします。
サーバーには単一の GET API エンドポイント '/redirect' があり、パラメーターとして提供された 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 ターミナルに Cookie ヘッダーが存在することによって示されています。nc(Netcat)サーバーは攻撃者のウェブサーバーを表すために使用されています。