CVE-2026-80976 in Linux
要約
〜によって VulDB • 2026年09月12日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
seg6: IPv6脱カプセル化後にIP6CBをリセットする
decap_and_validate()関数は外側のSRv6ヘッダを取り除き、内部パケットをskbのネットワークヘッダとして扱います。IPv6制御ブロック(IP6CB)には、外側パケットのパース中に収集された値、特にnhoffおよび拡張ヘッダーフラグが含まれたままになります。
End.DX6およびEnd.DT6は、内部のIPv6パケットを直接IPv6入力パスへルーティングします。特権を持たないユーザーは、ローカルSIDを設置し、Hop-by-HopオプションとDestination Optionsヘッダに続きSRH(Segment Routing Header)および最小限の内部IPv6パケットからなる外側パケットを送信することで、ユーザー名前空間およびネットワーク名前空間からEnd.DT6へ到達できます。
外側の拡張ヘッダーによりIP6CB内に大きなnhoffが残ります。脱カプセル化後、ip6_protocol_deliver_rcu()関数はこの古くなったオフセットを内部パケットに対して使用し、skbの先頭領域を超えて読み取りを行います。KASANは以下のようなレポートを出力します:
BUG: KASAN: slab-out-of-bounds in ip6_protocol_deliver_rcu ip6_protocol_deliver_rcu+0x1118/0x1450 ip6_input_finish+0x11b/0x240 seg6_local_input_core+0xed/0x2e0 lwtunnel_input+0x1e9/0x4e0 ipv6_rthdr_rcv+0x525f/0x6c50 ip6_protocol_deliver_rcu+0xcb7/0x1450
内部IPv6パケットに対してIP6CBをクリアする前に、その受信インターフェースインデックスおよびL3スレーブ状態を保存します。その後、クリア処理後にこれらを復元し、nhoffを内部IPv6基本ヘッダのnexthdrフィールドに設定します。
skb->skb_iifではなくIP6CB(skb)->iifを使用してください。これはVRF(Virtual Routing and Forwarding)処理がskb_iifをL3マスターで置き換える可能性がある一方、IP6CBは受信インターフェースを保持し続けるためです。同様の理由により、IP6SKB_L3SLAVEも維持します。
If you want to get best quality of vulnerability data, you may have to visit VulDB.