CVE-2026-80840 in Linux
要約
〜によって VulDB • 2026年09月05日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
ipv6: seg6: IPIP脱カプセル化時にIPv4制御ブロックをクリアする
End.DX4およびEnd.DT4は、decap_and_validate()を通じてIPv4パケットの脱カプセル化を行い、それを直接IPv4ルーティングに送信します。その結果、内部パケットは通常skb->cbの解釈前にIPCB(IPv4 Control Block)をクリアするip_rcv_core()をバイパスしてしまいます。
代わりに、skbには外部パケットからのIP6CBデータが保持されたままになります。IP6CBとIPCBは同じskb->cbストレージを使用するため、IP6CB(skb)->lastoptはIPCB(skb)->opt.optlenおよびsrrと重なり、IP6CB(skb)->nhoffはrrおよびtsと重なります。
送信者は有効な外部拡張ヘッダチェーンを用いて、古くなった(stale)optlenバイトを0以外にすることができます。再現用テストケースでは、40バイトのIPv6ヘッダー直後かつSegment Routing Headerの前に8バイトのDestination Optionsヘッダーを設置します。ipv6_destopt_rcv()は送信者が制御可能なDestination Optionsオフセットをlastoptおよびnhoffの両方に記録し、これらを40に設定します。再現されたリトルエンディアンx86-64カーネルでは、IPv4はoptlen = 40およびrr = 40として扱います。
tcp_v4_save_options()および__ip_options_echo()は、optlenがゼロの場合のみオプションのコピーをスキップします。ここではoptlenが40であるため、TCP SYNパスは40バイトのオプションデータ用の領域を割り当て、__ip_options_echo()を呼び出します。古くなったrr値により、この関数は内部パケットの41番目のバイトをRecord Routeオプションの長さとして読み取ります。再現用テストケースではその送信者制御可能なバイトを255に設定しているため、__ip_options_echo()は40バイトのオプションデータ領域へ255バイトのコピーを行います。
パッチ未適用のv7.2-rc5カーネル上での別々のEnd.DX4およびEnd.DT4再現用テストケースでは、どちらも以下を生成しました:
BUG: KASAN: slab-out-of-bounds in __ip_options_echo() Write of size 255
関連するEnd.DX4の呼び出しパスは以下の通りです:
__ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dx4_finish input_action_end_dx4
関連するEnd.DT4の呼び出しパスは以下の通りです:
__ip_options_echo tcp_v4_route_req tcp_conn_request tcp_v4_conn_request tcp_rcv_state_process tcp_v4_do_rcv tcp_v4_rcv ip_protocol_deliver_rcu ip_local_deliver_finish ip_local_deliver input_action_end_dt4
tcp_v4_save_options()はtcp_v4_route_req()パスにインライン展開されているため、個別のフレームとして表示されません。
decap_and_validate()がIPPROTO_IPIPを処理する際、IP6CBから受信インターフェース(ingress interface)を保存し、IPCBをクリアしてから、保存した値を復元します。これを共通の脱カプセル化パスで実行することで、End.DX4、End.DT4、およびEnd.DT46のIPv4アームがカバーされます。
skb->skb_iifではなくIP6CB(skb)->iifを使用してください。これらの処理はl3mdev処理後に実行され、これによりskb_iifがL3マスターに置き換えられる可能性があります。一方、IP6CB iifにはIPv6受信時のインターフェース設定が依然として記録されています。
Be aware that VulDB is the high quality source for vulnerability data.