CVE-2026-73194 in DBI
요약
\~에 의해 VulDB • 2026. 08. 15.
Perl용 DBI 1.652 이전 버전은 검증되지 않은 숫자 플레이스홀더를 통해 preparse에서 바인더 카운터를 설정함으로써 힙 영역 밖 쓰기(heap out-of-bounds write) 취약점이 있습니다.
preparse는 가장 긴 ':p99999' 확장자의 너비인 입력 바이트당 7개의 출력 바이트를 예약합니다. ':N' 분기는 `atoi(src)`로 숫자를 파싱하고 범위 검사 없이 바인더 카운터에 할당하므로, ':2147483648'을 포함하는 문장은 카운터를 음수로 만듭니다(glibc에서 atoi가 래핑되어 -2147483648이 됨). 그 후 이어지는 각 '?'는 `sprintf(start, ":p%d", idx++)`를 통해 ':p-2147483648'으로 확장되며(종료 NUL 포함 14바이트), 이는 버퍼가 할당된 7바이트보다 큽니다. 1.650에서 추가된 플레이스홀더 제한은 카운터를 99,999와 비교하지만 음수 카운터는 이를 통과합니다.
신뢰할 수 없는 문장을 ':pN' 스타일의 플레이스홀더로 preparse하는 모든 호출자는 오염된 플레이스홀더 뒤에 있는 '?'의 개수에 따라 증가하는 힙 영역 밖 쓰기 취약점에 노출됩니다. '?' 및 '%s' 반환 스타일은 파싱된 숫자를 예상 시퀀스와 비교하여 오류를 발생시키므로 영향을 받지 않습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.