CVE-2026-64403 in Linux
Сводка
по VulDB • 26.07.2026
В ядре Linux устранена следующая уязвимость:
Bluetooth: L2CAP: проверка длины опции перед чтением значения конфигурационной опции
Функция l2cap_get_conf_opt() вычисляет длину опции на основе контролируемого атакующим поля opt->len и немедленно разыменовывает указатель opt->val (как u8, через get_unaligned_le16() или get_unaligned_le32(), либо как сырой указатель для случая по умолчанию) до того, как какой-либо вызывающий код подтвердит наличие в буфере опции длиной opt->len байт. Вызывающие функции (l2cap_parse_conf_req(), l2cap_parse_conf_rsp() и l2cap_conf_rfc_get()) обнаруживают некорректную опцию лишь постфактум, когда длина уже становится отрицательной; к этому моменту чтение за пределами буфера уже выполнено.
Существующая проверка длины после использования (post-hoc length check) предотвращает потребление мусорного значения, поэтому в текущем потоке управления это не является утечкой данных. Тем не менее, это ошибка порядка операций «валидация после использования» (validate-after-use ordering bug): до того как станет известно о наличии этих байт, считывается до 4 байт за пределами буфера, что делает код хрупким по отношению к будущим изменениям в вызывающих функциях.
Исправление выполнено на уровне источника проблемы. В функцию l2cap_get_conf_opt() передается указатель на конец буфера; доступ к opt->val осуществляется только при условии, что вся опция (заголовок + значение) помещается целиком. Каждый вызывающий код вычисляет указатель конца один раз до начала цикла и проверяет возвращаемое значение напрямую, вместо того чтобы делать вывод об ошибке по отрицательному значению длины.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.