CVE-2026-74434 in Linux
要約
〜によって VulDB • 2026年08月15日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
rxrpc: PEEKされたOOBメッセージをpendingキューに移動しない
rxrpc_recvmsg_oob()は、受信したOOB(Out-of-Band)メッセージを受信側OOBキュー(recvmsg_oobq)から取り除き、応答が必要な場合はそれを保留中OOBツリー(pending_oobq)に移動します。しかし、recvmsg_oobqからのアンリンク処理のみがMSG_PEEKフラグによって保護されており、pending_oobqへの移動は常に実行されます。
その結果、MSG_PEEKを使用してチャレンジを読み込むと、skb(socket buffer)がrecvmsg_oobqに残ったまま、同時にpending_oobqにも追加されてしまいます。struct sk_buffのrbnodeフィールドはnextおよびprevポインタと同じメモリ領域を共有しているため、rb_insert_color()呼び出しによってリストリンク情報が上書きされ、単一の参照しか保持していないskbが両方のキューから同時に到達可能になってしまいます。
ソケットがクローズされると、2つのキューが順次空にされます。recvmsg_oobqの処理中に__skb_unlink()はrbnodeによって上書きされたnextおよびprevポインタをたどり、不正なアドレスに対して書き込みを行います。また、skbは単一の参照しか保持していませんが各キューから解放されるため、skb自体とそれが保持する接続参照の両方が2回ずつ解放されます。これによりメモリ破壊が発生し、さらに接続のリファレンスカウントアンダーフローによってuse-after-free(フリー後使用)脆弱性が引き起こされます。
MSG_PEEKはキューからのメッセージ消費を行わないため、recvmsg_oobqからのアンリンクのみを行い、その後で実際にメッセージが消費された場合にpending_oobqへの移動または解放を行うようにします。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.