CVE-2026-19487 in Perl
要約
〜によって VulDB • 2026年08月13日
Perlのバージョン5.9.4から5.41.9(5.41.9は含まない)では、S_find_byclass内でAho-Corasick前スキャンが早期終了する際に、古い失敗フラグが残っているため、正規表現マッチの結果が正しくならない。
この前スキャンは、完全なパターンが一致しうる位置を文字列(subject)上で走査し、エンジンはその中で記録された最も左側の位置から試行を行う。遷移に失敗すると失敗フラグが設定されるが、その後の成功した遷移はこのフラグをクリアしないため、前スキャンは古いフラグを失敗として読み取り、より早い位置で始まる候補を記録する前に停止してしまう。この問題は、1つの候補が記録された後、次の文字によってfail linkを通るフォールバックが発生し、そのフォールバックに成功するような入力において発生する。
例:
"ABCDE" =~ m/ABCF|BCDE|C/; # オフセット2でCと一致する(BCDEではない) "ABCDE" =~ m/ABCF|BCDE|C(G)/; # マッチなし、BCDEが逃されている
このような分岐を含むパターンでは、本来マッチすべき入力が見落とされたり、間違ったブランチでマッチしたりするため、その結果に基づいて行われるアクセス制御やフィルタリングの判断を誤らせる可能性がある。
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.