Sentry-Javascript: トンネルルートを使用した場合のミドルウェアのバイパス

### 影響

`tunnelRoute`オプションを使用すると、SDKはブラウザのイベントを、ご自身のNext.jsサーバー上の特定のパス(例:`/monitoring`)に送信します。このパスでリライトが行われ、イベントがSentryに転送されることで、広告ブロッカーによるブロックを防ぎます。この仕組みにより、ミドルウェアがこれらのリクエストを拒否しないように、SDKはこれらのリクエストに対してミドルウェアをスキップします。

しかし、ミドルウェアのスキップ範囲が、リライトの範囲よりも広くなっていました。リライトは、`o`および`p`パラメータが設定された、トンネルパス自体のリクエストのみを対象としています。一方、スキップはトンネルパス以下のすべてのリクエストに適用されます。この範囲の差により、一部のリクエストはSentryではなく、お客様のアプリケーションに直接到達し、その場合、お客様のミドルウェアは実行されません。

ミドルウェアのスキップは、リクエストに特別な権限を与えるものではありません。サーバーサイドでセッションを確認するルートは、依然として保護されます。

以下のすべての条件が満たされている場合にのみ、影響を受ける可能性があります。

1. `tunnelRoute`が設定されている(文字列のパスまたは`true`)。
2. アプリケーションが**webpack**を使用して構築されている(Turbopackで構築されたアプリケーションには影響ありません)。
3. アプリケーションの何らかのルートが、トンネルパス以下に解決される。これは、直接的な衝突(例:`tunnelRoute: '/monitoring'`の場合の`/monitoring/foo`)または、ルートの先頭にある動的なセグメント(例:`app/[locale]/…`)によるものであり、最初のパスセグメントに一致します。
4. お客様のミドルウェアが、これらのルートに対する認証を唯一の方法で強制している。

Sentry自身のサービスや、お客様のSentry組織内のデータは影響を受けません。

### 修正

[9.47.2](https://github.com/getsentry/sentry-javascript/releases/tag/9.47.2)、[10.75.2](https://github.com/getsentry/sentry-javascript/releases/tag/10.75.2)および[11.0.0-rc.1](https://github.com/getsentry/sentry-javascript/releases/tag/11.0.0-rc.1)で修正されました。現在では、実際にトンネルリライトが処理するリクエストのみがスキップされます。設定変更は不要です。

### 対策

- `tunnelRoute` を、自身のルーティングで解決できないパスに設定するか、またはそのオプションを削除してください。
- Turbopack を使用してビルドします(Next.js 16 以降の `next build` のデフォルト)。
- ルート、レイアウト、データアクセスパス、およびミドルウェアで認証を強制します。

影響を受けるパッケージ:
- npm (JavaScript) @sentry/nextjs: 影響範囲は 9.36.0 以上、9.47.2 未満。9.47.2 で修正済み。
- npm (JavaScript) @sentry/nextjs: 影響範囲は 10.0.0-alpha.0 以上、10.75.2 未満。10.75.2 で修正済み。
- npm (JavaScript) @sentry/nextjs: 影響範囲は 11.0.0-alpha.0 以上、11.0.0-rc.1 未満。11.0.0-rc.1 で修正済み。