GitHubのセキュリティ勧告に、@opennextjs/cloudflareの脆弱性「CVE-2026-100409」が掲載されています。特定の設定条件が重なると、未認証の遠隔攻撃者が保護対象のキャッシュ内容を取得する恐れがあり、勧告は1.20.2以降への更新を推奨しています。提示資料では、勧告の公表日は確認できません。
対象は3条件がそろうアプリ
今回の脆弱性は、パッケージを使っているだけで影響が決まるものではありません。勧告が示す対象は、次の3条件を全て満たすアプリです。
enableCacheInterceptionを明示的に有効にしている
- アクセス制御を、要求を途中で処理するミドルウェアに依存している
- 該当するキャッシュ済みルートがある
キャッシュは、処理結果などを保存して再利用する仕組みです。enableCacheInterceptionはデフォルトでは無効のため、まず明示的に有効化しているかを確認する必要があります。そのうえで、保護対象のルートについて、アクセスを許可するかどうかの判断をどこで行っているかを調べます。
「アクセス制御を設けているから安全」とは判断できません。今回の問題では、その制御とキャッシュ検索が、同じ要求を異なるパスとして扱う点が重要です。
パスの解釈のずれで保護を回避
修正前は、ミドルウェアの照合にはエンコード済みのパスを使い、キャッシュ検索の前にはパスを復号していました。エンコードは、文字を別の表記に置き換えることです。
勧告によると、/%61dminへの要求によって、/adminの認可処理を回避する場合があります。さらに、不正な形式のパスも部分的に復号され、キャッシュ検索が続行される問題がありました。
修正では、パスの扱いを統一し、不正な形式のパスを拒否するようにしています。同じパスには複数の符号化表現があるため、特定の表記だけをミドルウェアの照合パターンに追加しても、対策としては不十分とされています。
勧告が推奨する更新先は、@opennextjs/cloudflare@1.20.2以降です。更新できない場合は、enableCacheInterception: trueの削除などが回避策として示されています。日本での提供は発表には書かれていません。
影響する会社・しない会社
- 影響する:
@opennextjs/cloudflareを利用し、明示的なenableCacheInterceptionの有効化、ミドルウェアへのアクセス制御の依存、該当するキャッシュ済みルートという3条件が全てそろうアプリを運用する会社です。
- 影響しない: 同パッケージを利用していても、
enableCacheInterceptionを有効にしていないなど、上記3条件のいずれかを満たさないアプリは、勧告が示す影響条件には該当しません。
利用サービスの名前だけで一括判定せず、アプリごとに設定と保護対象のルートを確認するのが判断の分かれ目です。
情シスが今日やること
- 開発担当者や運用委託先に、利用有無と版の確認を依頼します。 アプリの依存パッケージ一覧で
@opennextjs/cloudflareを確認し、使用中の版を記録してください。資料には、確認に使う管理画面やメニューの指定はありません。
- アプリの設定と認可処理を照合します。
enableCacheInterception: trueの有無を調べ、有効なら、保護対象のルート、キャッシュの有無、認可処理の実装箇所を開発担当者と確認します。3条件の確認結果をアプリごとに残してください。
- 対象アプリの更新日程を決めます。 開発・運用責任者に1.20.2以降への更新を依頼し、実施予定日と担当者を共有します。勧告上の対応期限は資料に書かれていないため、社内の対応期限を決めて管理してください。
- 更新までの回避策を選び、反映を確認します。 勧告では、対象設定の削除、ミドルウェアだけに頼らない保護対象ルートハンドラー内での認可、Worker到達前の信頼できるプロキシによる保護対象のエンコード済みパスの拒否を提示しています。個別の照合パターン追加だけで対応完了とせず、採用した回避策と適用状況を責任者に報告してください。