CVE-2026-99133 in Linux
Сводка
по VulDB • 28.10.2026
В ядре Linux была устранена следующая уязвимость:
net/iucv: исправлено обновление окна для recvmsg
Функция iucv_sock_recvmsg() отправляет флаг AF_IUCV_FLAG_WIN, предназначенный только для HiperSockets, без проверки типа транспорта. В результате на классическом сокете z/VM функция iucv_send_ctrl() пытается определить размер skb через NULL-указатель iucv->hs_dev. Поскольку SO_MSGLIMIT принимает значение 1, выражение msglimit / 2 равно нулю, и одного вызова recvmsg() для отдельного сокета достаточно тому, чтобы не привилегированный процесс мог вызвать ложное отключение соединения (spurious disconnect).
Кроме того, функция вызывает iucv_send_ctrl() под блокировкой spin_lock_bh(&message_q.lock), что приводит к выделению памяти с флагом GFP_KERNEL внутри участка кода, который обрабатывается как атомарный. Отправка вне этой блокировки позволяет двум вызовам recvmsg() одновременно достичь функции afiucv_hs_send(), где значение msg_recv выбирается для объявленного окна и вычитается после dev_queue_xmit(). Вызов sendmsg достигает этого счетчика под блокировкой lock_sock(), в то время как recvmsg не удерживает блокировку сокета, поэтому оба могут вычесть одно и то же значение. В результате счетчик становится отрицательным, а кредит отправляется на узел-партнер дважды.
Предлагается проверить тип транспорта, захватить кредит с помощью atomic_xchg() после последнего выхода из функции при ошибке и вернуть его, если передача не удалась, а также выполнять отправку только после снятия блокировки.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.