不正なURLが原因で、認証を回避される脆弱性がFastifyに存在します。これは、特定のプラグインのプレフィックスの下で不正なURLが、別のプラグインのカスタムの「ページが見つかりません」ハンドラに到達することで発生します。

### 影響

Fastifyでは、不正なURLが、あるプラグインのプレフィックスの下で、別のプラグインのカスタムの「ページが見つかりません」ハンドラにルーティングされます。これにより、最後に登録されたハンドラが呼び出され、`setNotFoundHandler()`で宣言された`preHandler`がスキップされます。メインのルーティングに該当するルートがない場合、不正なリクエストターゲットがURLデコードの前にFastifyの内部の「ページが見つかりません」ルーティングに到達し、プレフィックスに関係なく、通常の要求ライフサイクルをバイパスして、単一の共有ハンドラポインタを通じて処理されます。したがって、パブリックプレフィックスへの認証されていないリクエストが、別のプレフィックスで登録された認証保護された「ページが見つかりません」ハンドラに到達し、その完全なレスポンスを受け取る可能性があります。これにより、プレフィックスの分離が破綻し、認証の仕組みが回避されます。プライベートまたはテナントのフォールバックとして、保護されたデータを「ページが見つかりません」ハンドラから返すアプリケーションに影響があります。

### 修正

fastify 5.12.2で修正されました。不正なURLは、設定された`onBadUrl`および`onMaxParamLength`ハンドラを通じてルーティングされるようになり、アプリケーションの「ページが見つかりません」ハンドラが実行される前にエラーが発生します。また、共有の「ページが見つかりません」ハンドラポインタが削除されました。

### 対策

アプリケーションに到達する前に、不正なリクエストターゲットを拒否してください。例えば、アップストリームプロキシやゲートウェイで拒否します。また、「ページが見つかりません」ハンドラを保護されたデータを返すために使用しないでください。グローバルな`onRequest`認証フックは、この問題を軽減できません。なぜなら、不正なURLのパスはそれをバイパスするからです。

影響を受けるパッケージ:
- npm (JavaScript) fastify: 影響あり >= 4.0.0, < 5.12.2、5.12.2で修正済み。