😈

Next.js 12はCVE-2023–46298の影響を受けるのか

2024/03/02に公開

Next.js 12のプロジェクトにdependabotの警告が出たので調査したメモ。

SeverityはLowだが、Affected versionsが>= 0.9.9, < 13.4.20-canary.13と非常に広い範囲になっている。
https://github.com/advisories/GHSA-c59h-r6p8-q9wc

まず、下記で詳細な解説がされているのでありがたく読む。
https://blog.cateiru.com/entry/2023/08/11/005212
https://medium.com/@mares.viktor/deep-diving-into-cve-2023-46298-resource-exhaustion-in-next-js-7f4312d0cb3f

この脆弱性の影響を受けるのは、下記の条件を全て満たす場合のみであることが分かった。

  • SSRを使用している
  • CDNを使用している

つまり、サービスをSPAでしか運用していなかったり、SSRでもCDNを使用していなければ影響を受けない。

そして、脆弱性の要因となった「リクエストヘッダーにx-middleware-prefetchがある場合、getServerSidePropsを実行せずに空オブジェクトを返す」という挙動は、2022年のこのPRで追加されたものだった。リリースバージョンだとv13.0.4で入ったもので、それ以前は影響を受けないはずであることが分かる。

その後、本来必要だった「prefetchのリクエストがCDNにキャッシュされないよう、cache-controlヘッダーでno-cache等をレスポンスする」という対応がこのPRで導入され、めでたく脆弱性が修正された状態になっている。

結論

Next.js 12以前を含む、v13.0.4より前のバージョンは影響を受けないはず。

Discussion