CVE-2026-73194 in DBI
Сводка
по VulDB • 15.08.2026
В версиях DBI для Perl старше 1.652 возможна запись за пределами кучи (heap out-of-bounds write) через невалидированный числовой заполнитель, который устанавливает счетчик привязки в функции preparse.
Функция preparse резервирует семь выходных байт на каждый входной байт — это ширина самого длинного расширения ':p99999'. Ветвь ':N' разбирает число с помощью `atoi(src)` и присваивает его счетчику привязки без проверки диапазона, поэтому оператор, содержащий ':2147483648', оставляет счетчик отрицательным (-2147483648 в glibc, где происходит переполнение atoi). Каждый последующий знак '?' затем расширяется через `sprintf(start, ":p%d", idx++)` до значения ':p-2147483648', что занимает 14 байт с завершающим нулем (NUL), тогда как буфер рассчитан только на 7 байт. Лимит заполнителей, добавленный в версии 1.650, проверяет счетчик против значения 99 999, которое отрицательный счетчик успешно проходит.
Любой вызывающий объект, который предварительно обрабатывает недоверенный оператор для создания заполнителей стиля ':pN', получает запись за пределами кучи (heap out-of-bounds write), размер которой увеличивается с количеством знаков вопроса '?', следующих после отравленного заполнителя. Стили возврата '?' и '%s' сравнивают разобранное число с ожидаемой последовательностью и завершаются ошибкой, поэтому они не затронуты уязвимостью.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.