⚠️Next.jsのSSRF脆弱性 CVE-2024-343512024/05/18に公開2024/05/225件Next.jsReacttechDiscussionazu2024/05/18 redirect()に渡したパスにしかリクエストが行えない 攻撃用のサーバを用意して、hostで攻撃用のサーバを指定しておいて、 攻撃用のサーバはgetに対して、302 redirectをレスポンスを返せば、 Fetch APIはredirectがfollowがデフォルトなので、任意のウェブサイトのコンテンツを取得して、攻撃者はレスポンスとしてそのコンテンツを取得できると思います。 Digging for SSRF in NextJS apps azu/nextjs-CVE-2024-34351: poc なので、Metadataを取得するとかの攻撃ができるかもしれないですね(別のヘッダが必要で通らない場合も多そうですが) Tutorial on privilege escalation and post exploitation tactics in Google Cloud Platform environments (GCPの例. Metadata-Flavor: Googleが必要になってるので多分今はできない) akfm_sato2024/05/18なんと、、、不勉強でした。 ご指摘ありがとうございます、修正しました! 返信を追加mizdra2024/05/22 今回のNext.jsの脆弱性はhttpヘッダーのHostを書き換えることで、self hostingなNext.jsサーバーからhttpリクエストを送信できてしまうというものです。 この文面だと、Next.jsサーバーから HTTP リクエストが送信できることが悪いことかのような書きぶりになってしまっていますが、そうではなくて、攻撃者が意図した任意の HTTP リクエストが送れてしまうことが悪いと言いたいのかなと想像しています。それがより正確に伝わるよう、「self hostingなNext.jsサーバーから任意のhttpリクエストを送信できてしまう」などと書き換えてはどうかと思ったのですが、いかがでしょうか? akfm_sato2024/05/22ご指摘ありがとうございます。ごもっともです。 修正しました! mizdra2024/05/22対応ありがとうございます! 返信を追加
azu2024/05/18 redirect()に渡したパスにしかリクエストが行えない 攻撃用のサーバを用意して、hostで攻撃用のサーバを指定しておいて、 攻撃用のサーバはgetに対して、302 redirectをレスポンスを返せば、 Fetch APIはredirectがfollowがデフォルトなので、任意のウェブサイトのコンテンツを取得して、攻撃者はレスポンスとしてそのコンテンツを取得できると思います。 Digging for SSRF in NextJS apps azu/nextjs-CVE-2024-34351: poc なので、Metadataを取得するとかの攻撃ができるかもしれないですね(別のヘッダが必要で通らない場合も多そうですが) Tutorial on privilege escalation and post exploitation tactics in Google Cloud Platform environments (GCPの例. Metadata-Flavor: Googleが必要になってるので多分今はできない) akfm_sato2024/05/18なんと、、、不勉強でした。 ご指摘ありがとうございます、修正しました! 返信を追加
mizdra2024/05/22 今回のNext.jsの脆弱性はhttpヘッダーのHostを書き換えることで、self hostingなNext.jsサーバーからhttpリクエストを送信できてしまうというものです。 この文面だと、Next.jsサーバーから HTTP リクエストが送信できることが悪いことかのような書きぶりになってしまっていますが、そうではなくて、攻撃者が意図した任意の HTTP リクエストが送れてしまうことが悪いと言いたいのかなと想像しています。それがより正確に伝わるよう、「self hostingなNext.jsサーバーから任意のhttpリクエストを送信できてしまう」などと書き換えてはどうかと思ったのですが、いかがでしょうか? akfm_sato2024/05/22ご指摘ありがとうございます。ごもっともです。 修正しました! mizdra2024/05/22対応ありがとうございます! 返信を追加
Discussion
攻撃用のサーバを用意して、hostで攻撃用のサーバを指定しておいて、
攻撃用のサーバはgetに対して、302 redirectをレスポンスを返せば、
Fetch APIはredirectがfollowがデフォルトなので、任意のウェブサイトのコンテンツを取得して、攻撃者はレスポンスとしてそのコンテンツを取得できると思います。
なので、Metadataを取得するとかの攻撃ができるかもしれないですね(別のヘッダが必要で通らない場合も多そうですが)
なんと、、、不勉強でした。
ご指摘ありがとうございます、修正しました!
この文面だと、Next.jsサーバーから HTTP リクエストが送信できることが悪いことかのような書きぶりになってしまっていますが、そうではなくて、攻撃者が意図した任意の HTTP リクエストが送れてしまうことが悪いと言いたいのかなと想像しています。それがより正確に伝わるよう、「self hostingなNext.jsサーバーから任意のhttpリクエストを送信できてしまう」などと書き換えてはどうかと思ったのですが、いかがでしょうか?
ご指摘ありがとうございます。ごもっともです。
修正しました!
対応ありがとうございます!