Perlの脆弱性情報まとめ

2026.11.02 15:02 更新 2026年に公表されたPerl本体とよく使われるCPANのモジュールの脆弱性

Perlの脆弱性対応では、Perl本体、cpanfile.snapshotで固定したCPANのモジュール、本番で動いているワーカーを分けて確かめます。ここでは2026年に公表された主な脆弱性と、自分の環境が対象かを確かめる方法をまとめます。

このページの要点
  • 10月にPlack・Starman・StarletなどPSGIのサーバーで、1件のリクエストでワーカーを止められる脆弱性が相次いで公表され、修正版が出ています。
  • 11月2日時点で、Perl本体のCVE-2026-15534を直した安定版はまだありません。5.38系以前はサポート外です。
  • cpan-auditのデータには10月下旬の公表分がまだ入っていないため、CPANSecの告知とcarton listの版を見比べます。

01Perlで今確かめたい脆弱性

2026年に公表されたもののうち、よく使われるCPANのモジュールで確かめておきたいものです。CPANのモジュールのCVEは、CPANのセキュリティグループ(CPANSec)が採番して告知しています。10月だけで約100件が告知され、PSGIのサーバーと、本文や圧縮データを読むモジュールに集まっています。[1]

脆弱性・問題主な対象・条件修正・対応詳細
Plack(HTTP::Server::PSGI)・Starman・Starlet
CVE-2026-115825・CVE-2026-115822・CVE-2026-115865 ほか
PSGIのアプリを動かすHTTPサーバー。大きなContent-Lengthやチャンク形式の本文を送る1件のリクエストで、ワーカーのメモリやCPUを使い切られるおそれ。HEADへの応答に本文を付けてしまい、持続接続で次の応答が壊れる問題もあるPlack 1.0057以上、Starman 0.4019以上、Starlet 0.33以上。PATH_INFOを切り詰めるHTTP::Parser::XS(CVE-2026-116130)も0.18以上Plackの変更履歴[2][3][4][5]
HTTP::Body
CVE-2026-116131 ほか
フォームとアップロードを読むモジュールで、Catalystが使う。フィールドや部分の数に上限がなく、メモリと一時ファイルを使い切られるおそれなど1.24以上(11月2日時点の最新)HTTP::Bodyの変更履歴[6][7]
IO::Compress::Brotli・XS::libbrotli
CVE-2026-115936・CVE-2026-115946
同梱したbrotliのデコーダに、KEVに載ったCVE-2026-111497の範囲外書き込みがある。細工したbrotliのデータを展開すると、メモリ破壊やクラッシュ、場合によってはコード実行のおそれIO::Compress::Brotli 0.023以上、XS::libbrotli 1.2.1.0以上。OSのbrotliを上げても直らない。XS::libbrotliは、それを使ってビルドしたXSモジュールも入れ直すCPANSecの告知[8][9]
Spreadsheet::XLSX
CVE-2026-115943
0.19未満。数値書式の条件をstring evalで評価するため、細工したXLSXファイルを読み込ませると任意のPerlコードを実行されるおそれ0.19以上(11月2日時点の最新は0.20)CVEの記録[10]
Mozilla::CA
CVE-2026-113812
20261020より前。秘密鍵が公開された中間証明書につながるemSignのルート証明書を含む。通信を傍受できる攻撃者がTLSのサーバーになりすますおそれ。CISAの評価でCVSS 3.1の9.1(緊急)20261020以上。OSの証明書ストアを使う構成は、OSの提供元の更新を確かめるCVEの記録[11]
Text::CSV_XS・Cpanel::JSON::XS
CVE-2026-110753・CVE-2026-110680 ほか
Text::CSV_XSは1.46〜1.65未満でuse-after-free(CISAの評価でCVSS 3.1の9.8)、Cpanel::JSON::XSは4.20〜4.80未満で範囲外書き込み(同7.5)。ほかにも多数Text::CSV_XS 1.65以上、Cpanel::JSON::XS 4.80以上CVEの記録[12][13]

米CISAのKEV(悪用が確認された脆弱性の一覧、10月30日版)に、2026年に公表されたPerl本体・CPANのモジュールの項目はありません。上の表のbrotliの元の脆弱性CVE-2026-111497は、Google Brotliの項目として10月27日に載りました。過去の年では、Spreadsheet::ParseExcel 0.65のCVE-2023-7101(string evalでのコード実行、2024年1月2日掲載)とExifToolのCVE-2021-22204が載っています。[14]Spreadsheet::ParseExcelは0.66で直り[15]、Spreadsheet::XLSXのCVE-2026-115943は同じ型の問題です。

02Perl本体のサポート期限と更新先

Perlの開発元は、重大な問題の修正を直近2つの安定版の系列に、重大なセキュリティ修正を5.x.0の公開から3年以内の系列に出すとしています。修正は各系列の最新の版だけに出ます。[16]11月2日時点の安定版は、7月15日公開の5.44.0と、8月2日公開の5.42.3・5.40.5です。[17]

系列状態今上げる先
5.44系(5.44.0)サポート対象(最新の安定版)5.44.0。CVE-2026-15534とCVE-2026-82560は、下のとおり別に対応する
5.42系(5.42.3)サポート対象5.42.3、または5.44.0へ
5.40系(5.40.5)セキュリティ修正だけ。5.40.0の公開(2024年6月9日)から3年まで5.40.5。早めに5.42系以上へ
5.38系以前サポート外。5.38.0の公開(2023年7月2日)から3年が過ぎた5.42系以上へ。2026年の本体の修正は入らない

5.42.3と5.40.5では、正規表現のコンパイル時のバッファオーバーフロー(CVE-2026-8376、32ビットのビルドだけ)、pack・unpackの整数オーバーフロー(CVE-2026-57432)、6万5千を超える選択肢を持つ正規表現の誤った一致(CVE-2026-13221)が直りました。[18]5.44.0もこの3件を含みます。[19]

次の2件は、11月2日時点で直した安定版が出ていません。正規表現の照合で範囲外の読み書きが起きるCVE-2026-15534(5.45.1までのすべての版)は、開発版の5.45.2にだけ修正が入っています。対象は、攻撃者が送る約2.9億バイトの文字列を特定の形の正規表現と照合する場合で、開発元は公開されたパッチを当てるよう案内しています。[20]同梱のPod::TextがPODの整形で止まらなくなるCVE-2026-82560は、CPANからpodlators 6.1.1以上を入れると、同梱の版より優先して使われます。[21]

OSが配布するPerlは、版の番号を変えずに修正を取り込むことがあります。番号だけで判断せず、OSの提供元のセキュリティ情報で確かめます。

03CPANの依存関係の脆弱性を確かめる方法

定番はcpan-audit(CPAN::Audit)です。Cartonのcpanfile.snapshotかcpanfileから依存を読んで調べます。[22]

ターミナル
cpanm CPAN::Audit CPANSA::DB
cpan-audit deps .
cpan-audit installed local/ --perl

cpan-auditは外部に接続せず、手元に入れた脆弱性のデータ(CPANSA::DB)だけを見るため、毎回これを最新にします。--freshを付けると、データが1か月より古いときに警告が出ます。脆弱性が見つかると終了コードは64に件数を足した値になり、CIで止められます。[22]

11月2日時点の最新のデータ(10月28日公開のCPANSA::DB 20261027.002)にも、Cpanel::JSON::XS・Plack・Starman・Starlet・Spreadsheet::XLSXの2026年10月の記録はまだありません。[23]GitHub Advisory DatabaseのSpreadsheet::XLSXの記録は未審査で、対象のパッケージが書かれていません。[24]上の表とCPANSecの告知を、carton listの版と見比べます。

ターミナル
carton list | grep -E 'Plack|Starman|Starlet|HTTP-Body|HTTP-Parser-XS'

04Perlの脆弱性の確認の進め方

  1. cpanfile.snapshotを正にする:本番で入る版はcpanfileではなくcpanfile.snapshotで決まります。carton installは、cpanfileの条件を満たす版が入っていれば上げません。HTTP::Parser::XSのような間接的な依存も含め、cpanfileにrequires 'Plack', '1.0057';のように最低の版を書いてcarton installを実行し、cpanfile.snapshotの差分を確かめます。[25][26]
  2. 本番で動いている版を確かめる:本番と同じ環境で、読み込まれる版と場所を出します。CPANから入れたpodlatorsが使われているかも分かります。
    ターミナル
    perl -v
    carton exec -- perl -MPlack -E 'say Plack->VERSION'
    carton exec -- perl -MStarlet -E 'say Starlet->VERSION'
    perl -MPod::Text -E 'say Pod::Text->VERSION; say $INC{"Pod/Text.pm"}'
    perl -V:ptrsize
    ptrsize='4'なら32ビットのビルドで、CVE-2026-8376の対象になります。
  3. ワーカーを再起動する:StarmanやStarletは起動時にモジュールを読み込むため、入れ直しても、ワーカーを再起動するまで古い版のまま動きます。
  4. 証明書の置き場所:LWPやHTTP::Tinyは通常、IO::Socket::SSLを通じてOpenSSLの既定の場所の証明書を先に使い、無ければMozilla::CAを使います。OSの証明書を使っているなら、OSの提供元の更新を入れます。[11]
セキュリティ対策サービス一覧AIを悪用した攻撃への対策について、相談、リスクの診断、システムの改修を支援します。必要なものだけを選んで依頼できます。

よくある質問

cpan-auditで何も出なければ、対応は不要ですか?

不要とは言えません。cpan-auditは手元に入れたCPANSA::DBだけを見ます。11月2日時点の最新のデータにも、Plack・Starman・Starlet・Spreadsheet::XLSXなど10月下旬に公表された記録はまだありません。CPANSecの告知とcarton listの版を見比べます。

Perlを5.44.0に上げれば、CPANのモジュールの脆弱性も直りますか?

直りません。本体の更新で直るのは、本体と同梱のモジュールの問題です。PlackやStarletなどCPANから入れたモジュールは、cpanfile.snapshotの版を上げて入れ直し、ワーカーを再起動します。

OSのbrotliを更新しました。IO::Compress::Brotliも直りますか?

直りません。IO::Compress::Brotliは同梱のbrotliを組み込んでビルドされるため、CPANSecはOSのbrotliの更新では直らないとしています。0.023以上に上げます。

出典・参考資料

  1. CPAN Security Group:cve-announce(2026年10月)2026-10 / 10月に告知されたCPANのモジュールのCVEの件数と対象
  2. MetaCPAN:Plack Changes(1.0056・1.0057)2026-10-24 / HTTP::Server::PSGIのCVE-2026-115825と、1.0056が索引されず1.0057で同じ修正を出したこと
  3. CVE-2026-115822(Starman)2026-10-26 / Starmanの対象と修正版0.4019
  4. CVE-2026-115865(Starlet)2026-10-30 / Starletの対象と修正版0.33
  5. CVE-2026-116130(HTTP::Parser::XS)2026-10-30 / HTTP::Parser::XSの対象と修正版0.18
  6. MetaCPAN:HTTP-Body Changes(1.24)2026-10-27 / HTTP::Bodyの修正と上限の既定値
  7. MetaCPAN:Catalyst-Runtime2026-11-02確認 / CatalystがHTTP::Bodyを依存に持つこと
  8. oss-security:CVE-2026-115936(IO::Compress::Brotli)2026-10-24 / 対象の版、修正版0.023、OSのbrotliの更新では直らないこと
  9. CVE-2026-115946(XS::libbrotli)2026-11-01 / XS::libbrotliの修正版と、使っているXSモジュールの入れ直し
  10. CVE-2026-115943(Spreadsheet::XLSX)2026-10-30 / Spreadsheet::XLSXの対象と修正版0.19
  11. CVE-2026-113812(Mozilla::CA)2026-10-21 / Mozilla::CAの対象・修正版・CISAの評価、LWP・HTTP::Tinyの証明書の探し方
  12. CVE-2026-110753(Text::CSV_XS)2026-10-17 / Text::CSV_XSの対象・修正版1.65・CISAの評価
  13. CVE-2026-110680(Cpanel::JSON::XS)2026-10-20 / Cpanel::JSON::XSの対象・修正版4.80・CISAの評価
  14. CISA:Known Exploited Vulnerabilities Catalog2026-10-31(10月30日版) / 2026年のPerl本体・CPANの項目がないこと、Brotli・Spreadsheet::ParseExcel・ExifToolの掲載日
  15. CVE-2023-7101(Spreadsheet::ParseExcel)2023-12-25 / Spreadsheet::ParseExcel 0.65の問題と修正版0.66
  16. perldoc:perlpolicy修正を出す系列とセキュリティ修正の期間
  17. MetaCPAN:perl2026-11-02確認 / 5.44.0・5.42.3・5.40.5の公開日
  18. perldoc:perl 5.42.3 perldelta2026-08-02 / 5.42.3で直った3件
  19. CVE-2026-8376(Perl)2026-05-26 / 修正版5.40.5・5.42.3・5.44.0、32ビットのビルドだけが対象
  20. CVE-2026-15534(Perl)2026-08-10 / 5.45.1までが対象、修正は開発版5.45.2とパッチ、成立の条件
  21. CVE-2026-82560(Pod::Text)2026-09-20 / 同梱のPod::Textが対象、podlators 6.1.1が同梱の版より優先されること
  22. MetaCPAN:cpan-auditコマンド、依存の読み取り元、データが手元だけで古くなること、終了コード
  23. MetaCPAN:CPANSA-DB 20261027.0022026-10-28 / 11月2日時点の最新のデータに10月下旬の記録がないこと
  24. GitHub Advisory Database:GHSA-h33r-pwjw-x33j2026-10-30 / Spreadsheet::XLSXの記録が未審査で対象のパッケージがないこと
  25. MetaCPAN:Carton::Doc::Installcpanfile.snapshotによる版の固定とcarton installの動き
  26. MetaCPAN:Carton::Doc::Updatecarton updateはcpanfileの条件を満たす範囲で上げること