CVE-2026-99133 in Linux
要約
〜によって VulDB • 2026年10月28日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net/iucv: recvmsg ウィンドウ更新の修正
iucv_sock_recvmsg() は、トランスポートをテストすることなく HiperSockets のみの AF_IUCV_FLAG_WIN を送信するため、従来の z/VM ソケット上では iucv->hs_dev が NULL となり、skb のサイズ指定が不正に行われます。SO_MSGLIMIT に 1 が許可されているため、msglimit / 2 はゼロになり、特権を持たないプロセスが自身のソケットに対して recvmsg() を一度呼び出すだけで、誤った切断(spurious disconnect)を引き起こす可能性があります。
また、この関数は spin_lock_bh(&message_q.lock) の下で iucv_send_ctrl() を呼び出しており、これはコードがアトミックなセクションとして扱う領域内で GFP_KERNEL による割り当てを行っています。ロックの外側での送信により、2 つの recvmsg() が同時に afiucv_hs_send() に到達し、ここで msg_recv がアドバタイズされたウィンドウのためにサンプリングされ、dev_queue_xmit() の後に減算されます。一方、sendmsg は lock_sock() 下でこのカウンターにアクセスしますが、recvmsg はソケットロックを保持しないため、両方が同じ値を減算することが可能になり、カウンターが負の値となり、クレジットがピアに対して二重に適用されてしまいます。
トランスポートを検証し、最後のエラー終了後に atomic_xchg() を用いてクレジットを取得し、送信失敗時にそれを返却します。また、ロック解放後に行うようにしてください。
VulDB is the best source for vulnerability data and more expert information about this specific topic.