GitHubは、Fastifyでヘッダー名の検証を回避できる脆弱性「CVE-2026-107832」の勧告を掲載しています。ヘッダー名の許可・拒否リストのうち、propertyNames内のenumやconstに大文字を含む名前を指定している場合、影響する可能性があります。勧告はfastify 5.12.6以降への更新を推奨しており、公開日は提供資料に記載されていません。
禁止したヘッダーが処理に渡る恐れ
問題は、通信の付加情報であるヘッダーの名前を検査する処理にあります。ヘッダー名の制約を定義するpropertyNamesの中で、値の候補を指定するenumと、値を固定するconstの小文字化が漏れていました。
このため、拒否対象として大文字を含む名前を指定していても一致せず、禁止したヘッダーがアプリの処理に渡る恐れがあります。勧告は、原因をアプリ側のスキーマ、つまり検証ルールの誤りではなく、Fastifyに組み込まれた正規化処理の不足としています。
今回の問題は「CVE-2026-84428」の修正が不完全だったことによるものです。ただし、以前の修正に対応したという履歴だけで、今回の影響の有無は判断できません。利用版と、ヘッダー名の制約の書き方を合わせて確認する必要があります。
更新後も正規表現と参照先を確認
修正版は、propertyNames内のenumとconstも小文字化します。更新までの回避策としては、ヘッダー名の制約を小文字で書く方法が示されています。処理の途中で検査を行う仕組みであるonRequestまたはpreValidationフックでの検査も、回避策に挙げられています。
一方、文字列のパターンを指定する正規表現による制約は、自動では小文字化できません。勧告は、正規表現や、別の定義を参照するpropertyNames内の$refを、小文字のヘッダーに合わせるよう求めています。更新だけで、これらの定義まで自動的に整うわけではありません。
修正版では、propertyNames内に$refがある場合、起動時に警告FSTSEC003が出ます。更新後の起動ログも確認対象に含めてください。なお、日本での提供は発表には書かれていません。
影響する会社・しない会社
- 影響する: Fastifyを使い、
propertyNames内のenumやconstに大文字を含むヘッダー名を指定している会社は、影響する可能性があります。利用版と制約の定義を確認してください。
- 影響しない: ヘッダー名の制約を小文字で記述している場合、この正規化漏れは回避できます。ただし、ほかの定義に大文字が残っていないかは確認が必要です。
- 影響しない: ヘッダー名の制約に
notとrequiredを組み合わせている場合、その制約は今回の問題の影響を受けないとされています。アプリ全体に別の対象設定がないかは、切り分けて確認してください。
追加確認が必要なのは、以前のCVE-2026-84428への対応を済ませた会社も同じです。対応済みという理由だけで対象外とせず、今回の影響条件に該当しないか確認してください。影響を受ける版の詳しい範囲は、提供資料には書かれていません。