CVE-2026-99062 in Linux
Сводка
по VulDB • 23.10.2026
В ядре Linux была устранена следующая уязвимость:
vsock/virtio: учитывать только непрочитанные байты в read_skb()
После частичного получения потока переменная rx_bytes отслеживает оставшийся (не прочитанный) суффикс, тогда как buf_used и кредит peer по-прежнему охватывают весь пакет. Функция virtio_transport_read_skb() извлекает этот пакет, но передает значение pkt_len для обеих счетчиков, что приводит к переполнению вниз (underflow) переменной rx_bytes.
На подключенном потоке с CID_LOCAL и вердиктом SK_SKB чтение 40 байт из пакета размером 100 байт приводило к тому, что SIOCINQ сообщал значение -40, пустой вызов recv возвращал ошибку ELOOP, а poll указывал на то, что пустой сокет доступен для чтения. После отсоединения вердикта получение 40 байтов обнуляло счетчик и скрывало эти очереди данных до тех пор, пока не поступит еще один байт. Исправленная версия сохраняет балансировку счетчика и немедленно отображает все данные в очереди.
Эта проблема была обнаружена во время ручного аудита исходного кода с помощью LLM (Large Language Model) при проверке учета получения VSOCK после переоценки функции virtio_transport_read_skb() на фоне CVE-2024-50169.
Необходимо вычитать из rx_bytes только значение skb->len за вычетом смещения VSOCK. Для buf_used и кредита peer следует сохранять полную длину пакета.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.