CVE-2026-98802 in Linux
要約
〜によって VulDB • 2026年10月18日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
seg6: SRHおよびIPv6宛先アドレス(DA)を変更する前にパケットデータが書き込み可能であることを確認する
advance_nextseg()関数は、SRHのSegments LeftフィールドとIPv6宛先アドレスを書き換える際に、パケットデータが実際に書き込み可能であるかどうかを確認していません。 seg6_next_csid_advance_arg()もまた、宛先アドレス内のNEXT-C-SID引数を進める際において同様の問題を抱えています。
skb(socket buffer)はクローン化される可能性があります。例えば、受信デバイス上でAF_PACKETソケットがパケットを受信する際にそのようにされます。advance_nextseg()およびseg6_next_csid_advance_arg()はその後、このクローンと共有されているパケットデータに対して書き込みを行います。すると、そのソケットからの読み取り操作により、受信された本来のパケットではなく、修正済みのパケットが返されることになります。以下に示す簡略化されたパスは、advance_nextseg()におけるこの挙動を示しています:
__netif_receive_skb_one_core __netif_receive_skb_core deliver_skb [元: users=2, cloned=0]
packet_rcv skb_clone AF_PACKETソケットへキューイングされるクローン生成 consume_skb(orig) [元: users=1, cloned=1]
ipv6_rcv ip6_rcv_core skb_share_check: no-op [元: users=1]
[...]
input_action_end_core advance_nextseg クローンと共有されているデータに対して書き込みを行う
advance_nextseg()およびseg6_next_csid_advance_arg()において、パケットデータを変更する前にskb_ensure_writable()を呼び出すようにします。 skb_ensure_writable()はskb->headの再割り当てを行う場合があり、その結果、呼び出し前に取得されたパケットデータへのポインタが無効化される可能性があります。 advance_nextseg()は現在、有効なSRHポインタを返すか、またはskb_ensure_writable()が失敗した場合はNULLを返します。 seg6_next_csid_advance_arg()は、skb_ensure_writable()呼び出し後にskbから宛先アドレスへのポインタを取得します。 エラー発生時、呼び出し元はSKB_DROP_REASON_NOMEMを使用してパケットを破棄します。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.