脆弱性・CVE速報深刻度: 中

Perl の CGI モジュール 5.00 より前の CVE-2026-120631〜120651(20 件): 細工したリクエストでの停止・オープンリダイレクト・ヘッダー注入・XSS・アップロード名のパス混入など。5.00 で修正

目次(4)

CVE-2026-120631

CVE-2026-120632

CVE-2026-120633

CVE-2026-120634

CVE-2026-120635

CVE-2026-120636

CVE-2026-120637

CVE-2026-120638

CVE-2026-120639

CVE-2026-120640

CVE-2026-120641

CVE-2026-120642

CVE-2026-120643

CVE-2026-120644

CVE-2026-120645

CVE-2026-120646

CVE-2026-120647

CVE-2026-120648

CVE-2026-120650

CVE-2026-120651

Perl の定番 Web 部品 CGI モジュール(CGI.pm) に、20 件の CVE が 2026-11-04 に NVD へ登録されました。登録元は CPAN Security Group(9b29abf9…)で、NVD の状態は Deferred(後回し)、CVSS の点数はまだ付いていません。修正は CGI 5.00 に入っており、NVD の記述は「5.00 より前」を影響範囲としています(一部は 4.62・4.67・4.71 以降)。

何が起きるか

20 件の多くは、アプリが請求データ(URL・Cookie・ファイル名・ヘッダー値)を CGI.pm の関数に渡したときに、想定外の結果になるものです。種類は大きく 3 つです。

  • サービス停止(6 件): 細工した Cookie・Content-Type・アップロード指定などで、リクエストが異常終了する、CPU を使い切る、無限ループになる。120632 は本体なしのヘッダーだけで起こせると記載されています。
  • 出力への注入(8 件): オープンリダイレクト、HTTP ヘッダー注入、Cookie 属性の注入、XSS、HTML 注入など。多くは「アプリが請求データを該当の関数に渡している」場合に限られます。
  • その他(6 件): アップロード名のパス混入、プロキシ・WAF をすり抜けるフォーム項目、本体用の名前のなりすまし、taint 検査の抜け、他の利用者への警告の混入。

20 件の一覧

CVE場所内容種類
CVE-2026-120631CGI::Cookie(4.67〜5.00 未満)Cookie の expires を正規表現にそのまま埋め込む。細工した Cookie でリクエストが異常終了、または処理が止まるほど遅くなるサービス停止
CVE-2026-120632CGI(XForms の multipart/related)Content-Type の正規表現が最悪ケースで立方時間かかる。本体なしのヘッダーだけで CPU を使い切れるサービス停止
CVE-2026-120633url / self_url などX-Forwarded-Host を検証せず使う。共有キャッシュや保存・送信される URL を攻撃者のホストに向けられるURL・キャッシュの汚染
CVE-2026-120634CGI::Carp の warningsToBrowser警告のバッファが次のリクエストまで消えず、mod_perl・FastCGI・PSGI で他の利用者のデータを含む警告が混ざる情報の混入
CVE-2026-120635multipart/form-data の解析RFC と違う解釈(境界の位置・User-Agent 次第の扱い・引用符内の name など)で、プロキシや WAF をすり抜けるフォーム項目を送れるリクエスト・スマグリング
CVE-2026-120636url / start_formREQUEST_URI をそのまま使い、//evil.example や javascript: 形式の URL ができるオープンリダイレクト・スクリプト注入
CVE-2026-120637REQUEST_METHOD が未知の場合OPTIONS などでオフライン用デバッグモード(既定で有効)に落ち、プロセスのコマンドライン引数から値を作る意図しない入力経路
CVE-2026-120638redirectLocation に書く前に HTML エンティティを戻す。検証済みの URL が別ホストを指すものに変わるオープンリダイレクト
CVE-2026-120639header / multipart_start / do_push改行チェックの後でエンティティを戻すため、CR・LF が通る。応答にヘッダーを足せる(アプリが請求データを渡す場合)HTTP ヘッダー注入
CVE-2026-120640POSTDATA / PUTDATA / PATCHDATA / XForms:Model本体用の名前をクエリや通常の項目からも設定できる。クロスサイトのフォームから JSON 風の値を送る偽造が可能リクエスト偽造
CVE-2026-120641アップロード名クライアントが送ったパス(../・Windows パス含む)がそのまま返る。そのまま保存するアプリはディレクトリ外へ書けるパストラバーサル
CVE-2026-120642taint モードアップロード名・一部の path_info・Accept の結果などの taint が外れ、-T の検査をすり抜けるtaint 検査の抜け
CVE-2026-120643url / self_url(4.62〜5.00 未満)URL に含まれるアポストロフィがそのまま残る。一重引用符の属性や JavaScript 文字列に置くアプリで XSSXSS
CVE-2026-120644CGI::Cookiepath・domain・expires にセミコロンや制御文字が通り、Domain や SameSite など別の属性を足されるCookie 属性の注入
CVE-2026-120645scrolling_listリクエスト値を正規表現に埋め込んで選択状態を決める。細工値で異常終了や遅延サービス停止
CVE-2026-120646uploadInfo(4.71〜5.00 未満)?upload=0 のような文字列を参照として扱い、例外で落ちるサービス停止
CVE-2026-120647header(-attachment)ファイル名の二重引用符を無害化せず、2 つ目の filename を差し込めるContent-Disposition の注入
CVE-2026-120648comment--> を含む文字列でコメントが途中で閉じ、HTML を差し込めるHTML 注入
CVE-2026-120650サイズ制限POST_MAX が既定で無制限。チャンク形式などでは制限が効かず、メモリ・CPU・ディスクを使い切れるサービス停止
CVE-2026-120651DISABLE_UPLOADS 設定時Content-Length より短い本体を受けると読み取りが終わらず無限ループ。1 リクエストでプロセスが占有されるサービス停止

使っている人は

  • CGI.pm を使う Perl アプリ(古い CGI スクリプト、mod_perl、FastCGI、PSGI の下でも)が対象です。Perl 本体に同梱される版の更新は、OS・ディストリビューションごとに遅れる場合があります。
  • 影響はアプリの書き方次第です。例えば redirect や header に外部入力を渡していなければ、注入系は起きません。一方で 120631・120632・120650・120651 のような受信処理そのものの欠陥は、アプリ側の工夫では防ぎにくい形です。
  • 対策は CGI 5.00 以降への更新です。すぐ更新できない場合は、POST_MAX の設定、リバースプロキシでのヘッダー・本文サイズの制限、アップロード名を自前で basename 化する、リダイレクト先を許可リストで確認する、が当面の緩和になります。

まだ分かっていないこと

  • 点数(CVSS)は NVD にまだありません。severity は暫定で medium としています(受信処理の停止系は認証不要だが影響は可用性のみ、注入系はアプリ依存のため)。
  • 実際に悪用された報告は確認できていません。CISA KEV に掲載はなく、EPSS は 20 件とも最大 0.39%(取得時点)です。
  • 修正コミット 20 本と CGI 5.00 の変更点の中身は読んでいません。NVD の記述のみにもとづきます。
  • Perl 本体や各ディストリビューションの更新状況、5.00 の公開日は未確認です。

この記事について

AI の利用
本記事は AI が NVD などの公開情報をもとに作成しました。数値は取得時点(2026-11-06)のもので、未確認の点は本文に明記しています。

出典

この記事を共有