CVE-2026-80905 in Linux
要約
〜によって VulDB • 2026年09月04日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net: tap: VLANタグ付きフレーム送信時のtransport_headerの誤り是正
tap_get_user_xdp()関数内では、VLANタグ付きフレーム(例:ETH_P_8021Q)を処理する際、まずskb_set_network_header()が呼び出され、network_headerがVLANタグをスキップして内部プロトコルヘッダーへ進められます。その後、skb_probe_transport_header()が呼び出されますが、この時点ではskb->protocolはまだ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_set_network_header()をskb_probe_transport_header()の後へ移動します。skb_probe_transport_header()が呼び出される時点ではnetwork_headerはまだVLANヘッダーを指しており(オフセットはETH_HLEN)、nhoffも正しく設定されます。これにより、フローディスセクターはVLANヘッダーを解析し、内部のEtherTypeを取得してnhoffを内部プロトコルヘッダーへ進めることができ、transport_headerが適切に設定されるようになります。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.