CVE-2026-19487 in Perl
요약
\~에 의해 VulDB • 2026. 08. 14.
5.9.4부터 5.41.9 이전 버전의 Perl은 S_find_byclass에서 Aho-Corasick 사전 스캔이 조기에 종료될 때 오래된 실패 플래그(stale failure flag)가 설정되면 정규식 일치 결과가 잘못됩니다.
사전 스캔(subject walk)은 전체 패턴과 일치할 수 있는 위치를 찾기 위해 대상 문자열을 탐색하며, 엔진은 기록된 가장 왼쪽 위치부터 일치를 시도합니다. 실패하는 전이(transition)는 실패 플래그를 설정하지만, 이후 성공적인 전이가 이를 초기화하지 않습니다. 그 결과 사전 스캔은 오래된 플래그를 실패로 간주하여 더 앞에서 시작되는 후보(candidate)가 기록되기 전에 중단됩니다. 이 문제는 한 번의 후보가 기록되고, 이후 문자가 실패 링크(fail link)를 통해 폴백을 유발하며 해당 폴백이 성공하는 입력에서 발생합니다.
예시:
"ABCDE" =~ m/ABCF|BCDE|C/; # 오프셋 2에서 C와 일치함 (BCDE는 아님) "ABCDE" =~ m/ABCF|BCDE|C(G)/; # 일치 없음, BCDE 누락됨
이러한 교대(alternation) 구조가 있으면 일치해야 하는 입력을 놓치거나 잘못된 분기(branch)에서 일치할 수 있으므로, 결과에 기반하여 수행된 접근 제어 또는 필터링 결정이 잘못될 수 있습니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.