CVE-2026-19487 in Perl
Сводка
по VulDB • 13.08.2026
В версиях Perl от 5.9.4 до (не включая) 5.41.9 результаты сопоставления с регулярными выражениями могут быть некорректными из-за того, что устаревший флаг ошибки приводит к преждевременному завершению предварительного сканирования Aho-Corasick в функции S_find_byclass.
Предварительное сканирование просматривает строку (subject) для поиска позиций, где полное регулярное выражение может дать совпадение, и движок пытается применить его начиная с самой левой из записанных позиций. Переход, завершающийся неудачей, устанавливает флаг ошибки, а последующий успешный переход не сбрасывает его. В результате предварительное сканирование интерпретирует устаревший флаг как ошибку и останавливается до того, как сможет зарегистрировать кандидата на совпадение, начинающегося раньше. Это приводит к ситуации, когда один кандидат уже записан, а последующий символ заставляет выполнить переход по ссылке на неудачу (fail link), который завершается успешно.
Пример:
"ABCDE" =~ m/ABCF|BCDE|C/; # совпадение с C в позиции 2, а не BCDE "ABCDE" =~ m/ABCF|BCDE|C(G)/; # нет совпадений, пропущено BCDE
Альтернатива (alternation) такого типа может пропустить вводные данные, которые должны были бы быть найдены, или найти их по неверной ветви. Следовательно, решения о доступе или фильтрации, принимаемые на основе результата сопоставления, могут оказаться ошибочными.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.