影響
欠落しているセキュリティ ヘッダーは、クリックジャッキング、クロスサイト スクリプティング (XSS) の実行、またはサーバー環境 [S2] に関する情報の収集に悪用される可能性があります。 Content-Security-Policy (CSP) や X-Frame-Options などのヘッダーがルート間で一貫性なく適用されると、攻撃者は特定の保護されていないパスをターゲットにして、サイト全体のセキュリティ制御 [S2] をバイパスする可能性があります。
根本原因
Next.js を使用すると、開発者は、headers プロパティ [S2] を使用して、next.config.js で応答ヘッダーを構成できます。この構成では、ワイルドカードと正規表現 [S2] をサポートするパス マッチングを使用します。セキュリティの脆弱性は通常、次のような原因で発生します。
- 不完全なパス カバレッジ: ワイルドカード パターン (例:
/path*) は、意図したすべてのサルートをカバーできない可能性があり、セキュリティ ヘッダー [S2] のないネストされたページが残ります。 - 情報開示: デフォルトでは、Next.js には
X-Powered-Byヘッダーが含まれる場合があります。これにより、poweredByHeader構成 [S2] によって明示的に無効にされない限り、フレームワークのバージョンが明らかになります。 - CORS の構成ミス:
headers配列内のAccess-Control-Allow-Originヘッダーが不適切に定義されているため、機密データ [S2] への不正なクロスオリジン アクセスが許可される可能性があります。
具体的な修正
- 監査パス パターン:
next.config.jsのすべてのsourceパターンで適切なワイルドカード (例:/:path*) が使用されていることを確認し、必要に応じてヘッダーをグローバルに適用します ([S2])。 - フィンガープリンティングを無効にする:
X-Powered-Byヘッダーが [S2] に送信されないようにするには、next.config.jsでpoweredByHeader: falseを設定します。 - CORS を制限:
headers構成 [S2] のワイルドカードではなく、Access-Control-Allow-Originを特定の信頼できるドメインに設定します。
FixVibe がそれをテストする方法
FixVibe は、アプリケーションをクロールし、さまざまなルートのセキュリティ ヘッダーを比較することにより、アクティブ ゲート プローブを実行できます。 X-Powered-By ヘッダーと、さまざまなパス深度にわたる Content-Security-Policy の一貫性を分析することにより、FixVibe は、next.config.js の構成ギャップを特定できます。
