概要
@fastify/express v4.0.4 以前において、Fastifyルーターのオプション設定と Express ミドルウェアのパスマッチングが乖離する脆弱性が存在します。
Fastify が ignoreDuplicateSlashes(重複スラッシュを無視)または useSemicolonDelimiter(セミコロンをデリミタとして扱う)を有効にしている場合、Fastifyルーターは URL を正規化してルートにマッチさせます。しかし @fastify/express は正規化前の元の URL を Express ミドルウェアに渡すため、ミドルウェアのパスマッチングが失敗します。
攻撃者は //admin や /admin;x のような細工された URL で、認証ミドルウェアを回避して保護されたエンドポイントに到達できます。
CVSSベクトル
| 要素 | 値 |
|---|---|
| Attack Vector | Network |
| Attack Complexity | Low |
| Privileges Required | None |
| User Interaction | None |
| Scope | Changed |
| Confidentiality | High |
| Integrity | High |
| Availability | None |
| CVSSスコア | 9.1 (Critical) |
影響を受けるソフトウェア
| 製品 | 影響バージョン | 修正バージョン |
|---|---|---|
| @fastify/express | v4.0.4 以前 | v4.0.5 以降 |
影響を受ける条件
以下のいずれかの Fastify オプションを有効にしている場合に影響を受けます:
ignoreDuplicateSlashes: trueuseSemicolonDelimiter: true
これらのオプションを使用していない場合でも、念のためアップデートを推奨します。
修正バージョンと回避策
推奨対応: @fastify/express を v4.0.5 以降にアップデートしてください。
npm install @fastify/express@latest
暫定回避策(アップデートが困難な場合):
ignoreDuplicateSlashesおよびuseSemicolonDelimiterオプションを無効にする- 認証ロジックを Fastify ネイティブの
onRequestフックに移行する
関連リンク
データソース: NVD (NIST), GitHub Advisory Database AI解説は Claude API により自動生成されています。正確性については原文をご確認ください。
