情報取得日: 2026/07/13/最終確認: 2026/08/01・本ページは公開情報の非公式まとめです
| CVE ID | CVE-2026-13221 |
|---|---|
| 製品 | Perl / Perl 5.43.9 以前 |
| CVSS | 9.1(Critical) CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H |
| 種別 (CWE) | CWE-190(整数オーバーフローまたはラップアラウンド) |
| 登録/公開日 | 2026/07/13 |
| 出典 | https://nvd.nist.gov/vuln/detail/CVE-2026-13221 |
Perl の正規表現コンパイラに整数オーバーフローがある。`regcomp_study.c` の `Perl_study_chunk` が、選択(|)の分岐が非常に多いパターンを trie に変換する際、分岐数が 65,535 を超えると内部のカウンタがラップアラウンドする。 この欠陥のたちが悪いところは、クラッシュではなく**黙って誤った一致を返す**点にある。マッチするはずのない入力がマッチしたり(偽陽性)、マッチするはずの入力がマッチしなかったり(偽陰性)する。例外も警告も出ないため、アプリケーション側からは正常動作と区別できない。 NVD の CVSS 3.1 基本値は 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H)である。機密性への影響は無し(C:N)だが、完全性と可用性が高い(I:H/A:H)という配分になっている。正規表現が入力検証やフィルタリングに使われている場合、その判定が信用できなくなるためである。 影響を受けるのは 5.43.9 までの Perl である。分岐が 65,535 を超える巨大な選択パターンは手書きでは書かないが、**辞書や設定ファイルからパターンを組み立てる**コードでは実際に到達しうる。禁止語リスト、URL の許可リスト、ログのパターンマッチなどが典型である。 NVD の公開日は 2026年7月13日、最終更新は 2026年7月14日。2026年8月2日時点で CISA KEV カタログには収載されていない。
各ベンダー公式アドバイザリで確認できた事実に基づき整理しています。確認できていない項目は「情報確認中」と明記し、存在しないパッチ番号・バージョンは記載しません。
| 環境 | 対応状況 | 対応方法・備考 |
|---|---|---|
| AWS (ECS/EC2) | パッチあり(アプリ更新) |
EC2/ECS 等で使う Perl を、修正コミットを取り込んだパッケージへ更新する
AWS 固有の対応は無い。Amazon Linux のパッケージ更新状況を確認する。
参照リンク
|
| GCP | パッチあり(アプリ更新) |
GCE/GKE 上の Perl を、修正コミットを取り込んだパッケージへ更新する
GCP 固有の対応は無い。ベースイメージのディストリ側の更新に従う。
参照リンク
|
| Azure | パッチあり(アプリ更新) |
VM/App Service 上の Perl を、修正コミットを取り込んだパッケージへ更新する
Azure 固有の対応は無い。
参照リンク
|
| Linux | パッチあり(アプリ更新) |
ディストリビューションの perl パッケージを更新する。修正コミット 03f74bb の取り込み状況をディストリのトラッカーで確認する
NVD には修正版の版番号が示されていないため、ディストリのセキュリティトラッカーで判断する。
参照リンク
|
まず、自分のコードが「実行時に組み立てた巨大な選択パターン」を使っているかを切り分ける。固定の正規表現しか使っていないなら、分岐が 65,535 を超えることはまずない。 該当しうるのは、リストから `join("|", @words)` のようにパターンを生成している箇所である。`@words` の要素数が数万規模になるコードを探す。要素数が入力や設定次第で増える設計なら、上限が保証されていない時点で対象と考えるべきである。 恒久対応は、修正コミットを取り込んだ Perl へ更新することである。NVD のエントリには修正版の版番号が示されておらず、参照されているのは GitHub の修正コミット(`03f74bbbd3a68350d926ee93d56ee4808c28c4c7`)と issue #23388、および oss-security への投稿である。したがって本記事では「修正版は X.Y.Z」と断定しない。**利用しているディストリビューションの Perl パッケージが、このコミットを取り込んだかどうかで判断する**のが実務的である。 更新前の緩和策としては、生成するパターンの分岐数に明示的な上限を設け、超える場合はパターンを分割して複数回マッチさせる方法がある。65,535 という境界が分かっているので、たとえば 10,000 分岐ごとに区切れば安全側に倒せる。 検知については、この欠陥は例外を出さないため、ログからの検知は期待できない。代わりに、既知の一致すべき/すべきでない入力を用意した回帰テストを、パターン生成箇所に対して置くのが確実である。
Critical(CVSS 9.1)に分類されるPerl Perl 5.43.9 以前の脆弱性です。Perl の正規表現コンパイラに整数オーバーフローがある。`regcomp_study.c` の `Perl_study_chunk` が、選択(|)の分岐が非常に多いパターンを trie に変換する際、分岐数が 65,535 を超えると内部のカウンタがラップアラウンドする。 この欠陥のたちが悪いところは、クラッシュではなく**黙って誤った一致を返す**点にある。マッチするはずのない入力がマッチしたり(偽陽性)、マッチするはずの入力がマッチしなかったり(偽陰性)する。例外も警告も出ないため、アプリケーション側からは正常動作と区別できない。 NVD の CVSS 3.1 基本値は 9.1(AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H)である。機密性への影響は無し(C:N)だが、完全性と可用性が高い(I:H/A:H)という配分になっている。正規表現が入力検証やフィルタリングに使われている場合、その判定が信用できなくなるためである。 影響を受けるのは 5.43.9 までの Perl である。分岐が 65,535 を超える巨大な選択パターンは手書きでは書かないが、**辞書や設定ファイルからパターンを組み立てる**コードでは実際に到達しうる。禁止語リスト、URL の許可リスト、ログのパターンマッチなどが典型である。 NVD の公開日は 2026年7月13日、最終更新は 2026年7月14日。2026年8月2日時点で CISA KEV カタログには収載されていない。
まず、自分のコードが「実行時に組み立てた巨大な選択パターン」を使っているかを切り分ける。固定の正規表現しか使っていないなら、分岐が 65,535 を超えることはまずない。 該当しうるのは、リストから `join("|", @words)` のようにパターンを生成している箇所である。`@words` の要素数が数万規模になるコードを探す。要素数が入力や設定次第で増える設計なら、上限が保証されていない時点で対象と考えるべきである。 恒久対応は、修正コミットを取り込んだ Perl へ更新することである。NVD のエントリには修正版の版番号が示されておらず、参照されているのは GitHub の修正コミット(`03f74bbbd3a68350d926ee93d56ee4808c28c4c7`)と issue #23388、および oss-security への投稿である。したがって本記事では「修正版は X.Y.Z」と断定しない。**利用しているディストリビューションの Perl パッケージが、このコミットを取り込んだかどうかで判断する**のが実務的である。 更新前の緩和策としては、生成するパターンの分岐数に明示的な上限を設け、超える場合はパターンを分割して複数回マッチさせる方法がある。65,535 という境界が分かっているので、たとえば 10,000 分岐ごとに区切れば安全側に倒せる。 検知については、この欠陥は例外を出さないため、ログからの検知は期待できない。代わりに、既知の一致すべき/すべきでない入力を用意した回帰テストを、パターン生成箇所に対して置くのが確実である。
Perl Perl 5.43.9 以前 を利用している場合、稼働バージョンが影響範囲に含まれるかを一次情報(https://nvd.nist.gov/vuln/detail/CVE-2026-13221)で確認してください。AWS・GCP・Azure・Linux それぞれの対応状況は本ページの「クラウド/OS 別の対応状況」表にまとめています。確認できていない項目は「情報確認中」と明記しており、存在しないパッチ番号・バージョンは記載していません。
本ページの記載は下記の一次情報に基づく非公式まとめです。数値・対応状況は各出典元で最終確認してください(最終確認: 2026/08/01)。