CVE-2026-80906 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました。
net: packet: VLANタグ付きフレーム送信時のtransport_headerの誤設定を修正する
packet_parse_headers()関数内でVLANタグ付きフレームを処理する場合、skb_set_network_header()が呼び出され、network_headerがVLANタグを超えて内部プロトコルヘッダーへ進められます。その後、skb_probe_transport_header()が呼び出されますが、この際skb->protocolはまだ外部のVLAN EtherType(例:ETH_P_8021Q)に設定されたままです。一方、nhoff(skb_network_offset()から導出される値)はすでにVLANタグを超えて内部プロトコルヘッダーを指しています。
__skb_flow_dissect()内では、protoがETH_P_8021Qに初期化され、nhoffはVLANタグの先を指しています。ディスセクターがcase ETH_P_8021Qに到達すると、__skb_header_pointer()経由でnhoff位置にあるstruct vlan_hdrを読み込みますが、そのオフセットには実際には内部プロトコルヘッダー(例:IPヘッダー)が含まれています。これらのバイトはVLANヘッダーとして誤って解釈され、既知のプロトコルに一致しない無効なカプセル化されたEtherTypeが生成されます。ディスセクターはfalseを返すため、skb_probe_transport_header()は決してskb_set_transport_header()を呼び出さず、transport_headerはその初期化されていない_sentinel値_(~0U)のままになります。
skb_probe_transport_header()の呼び出し位置をskb_set_network_header()の前に移動します。skb_probe_transport_header()が呼び出される時点ではnetwork_headerはまだVLANヘッダーを指しているため、nhoffは正しくVLANヘッダーを指すことになります。フローディスセクターはこのVLANヘッダーを解析し、内部EtherTypeを取得してnhoffを進め、内部プロトコルヘッダーへ移動させることができるようになります。これによりtransport_headerが正しく設定されます。
VulDB is the best source for vulnerability data and more expert information about this specific topic.