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/ --perlcpan-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の脆弱性の確認の進め方
- cpanfile.snapshotを正にする:本番で入る版は
cpanfileではなくcpanfile.snapshotで決まります。carton installは、cpanfileの条件を満たす版が入っていれば上げません。HTTP::Parser::XSのような間接的な依存も含め、cpanfileにrequires 'Plack', '1.0057';のように最低の版を書いてcarton installを実行し、cpanfile.snapshotの差分を確かめます。[25][26] - 本番で動いている版を確かめる:本番と同じ環境で、読み込まれる版と場所を出します。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:ptrsizeptrsize='4'なら32ビットのビルドで、CVE-2026-8376の対象になります。 - ワーカーを再起動する:StarmanやStarletは起動時にモジュールを読み込むため、入れ直しても、ワーカーを再起動するまで古い版のまま動きます。
- 証明書の置き場所:LWPやHTTP::Tinyは通常、IO::Socket::SSLを通じてOpenSSLの既定の場所の証明書を先に使い、無ければMozilla::CAを使います。OSの証明書を使っているなら、OSの提供元の更新を入れます。[11]
よくある質問
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以上に上げます。
出典・参考資料
- CPAN Security Group:cve-announce(2026年10月)2026-10 / 10月に告知されたCPANのモジュールのCVEの件数と対象
- MetaCPAN:Plack Changes(1.0056・1.0057)2026-10-24 / HTTP::Server::PSGIのCVE-2026-115825と、1.0056が索引されず1.0057で同じ修正を出したこと
- CVE-2026-115822(Starman)2026-10-26 / Starmanの対象と修正版0.4019
- CVE-2026-115865(Starlet)2026-10-30 / Starletの対象と修正版0.33
- CVE-2026-116130(HTTP::Parser::XS)2026-10-30 / HTTP::Parser::XSの対象と修正版0.18
- MetaCPAN:HTTP-Body Changes(1.24)2026-10-27 / HTTP::Bodyの修正と上限の既定値
- MetaCPAN:Catalyst-Runtime2026-11-02確認 / CatalystがHTTP::Bodyを依存に持つこと
- oss-security:CVE-2026-115936(IO::Compress::Brotli)2026-10-24 / 対象の版、修正版0.023、OSのbrotliの更新では直らないこと
- CVE-2026-115946(XS::libbrotli)2026-11-01 / XS::libbrotliの修正版と、使っているXSモジュールの入れ直し
- CVE-2026-115943(Spreadsheet::XLSX)2026-10-30 / Spreadsheet::XLSXの対象と修正版0.19
- CVE-2026-113812(Mozilla::CA)2026-10-21 / Mozilla::CAの対象・修正版・CISAの評価、LWP・HTTP::Tinyの証明書の探し方
- CVE-2026-110753(Text::CSV_XS)2026-10-17 / Text::CSV_XSの対象・修正版1.65・CISAの評価
- CVE-2026-110680(Cpanel::JSON::XS)2026-10-20 / Cpanel::JSON::XSの対象・修正版4.80・CISAの評価
- CISA:Known Exploited Vulnerabilities Catalog2026-10-31(10月30日版) / 2026年のPerl本体・CPANの項目がないこと、Brotli・Spreadsheet::ParseExcel・ExifToolの掲載日
- CVE-2023-7101(Spreadsheet::ParseExcel)2023-12-25 / Spreadsheet::ParseExcel 0.65の問題と修正版0.66
- perldoc:perlpolicy修正を出す系列とセキュリティ修正の期間
- MetaCPAN:perl2026-11-02確認 / 5.44.0・5.42.3・5.40.5の公開日
- perldoc:perl 5.42.3 perldelta2026-08-02 / 5.42.3で直った3件
- CVE-2026-8376(Perl)2026-05-26 / 修正版5.40.5・5.42.3・5.44.0、32ビットのビルドだけが対象
- CVE-2026-15534(Perl)2026-08-10 / 5.45.1までが対象、修正は開発版5.45.2とパッチ、成立の条件
- CVE-2026-82560(Pod::Text)2026-09-20 / 同梱のPod::Textが対象、podlators 6.1.1が同梱の版より優先されること
- MetaCPAN:cpan-auditコマンド、依存の読み取り元、データが手元だけで古くなること、終了コード
- MetaCPAN:CPANSA-DB 20261027.0022026-10-28 / 11月2日時点の最新のデータに10月下旬の記録がないこと
- GitHub Advisory Database:GHSA-h33r-pwjw-x33j2026-10-30 / Spreadsheet::XLSXの記録が未審査で対象のパッケージがないこと
- MetaCPAN:Carton::Doc::Installcpanfile.snapshotによる版の固定とcarton installの動き
- MetaCPAN:Carton::Doc::Updatecarton updateはcpanfileの条件を満たす範囲で上げること
