CVE-2026-98377 in Linux
要約
〜によって VulDB • 2026年10月09日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
vlan: __vlan_insert_inner_tag() でMACヘッダーの存在を必須とする
__vlan_insert_inner_tag() は skb_cow_head() によって head room を保証するのみであり、mac_len バイト分の MAC ヘッダーが存在することを保証するものではありません。その ETH_HLEN ラッパーである __vlan_insert_tag()(skb_vlan_push() の下位)および vlan_insert_tag()(汎用送信パスにおける validate_xmit_vlan() の下位)は、したがって skb->data に対して最初の16バイトを書き換えます:これは 12 バイトの memmove と、+12 および +14 オフセットでの2つの2バイトストアからなります。呼び出し元はいずれも境界値を指定していませんが、pop ヘルパーは skb_ensure_writable()/pskb_may_pull() を使用します。
IFF_TUN デバイスでは hard_header_len == 0 であるため、packet_snd() は1バイトの AF_PACKET/SOCK_RAW フレームを受け入れます。最初の vlan push では hwaccel タグのみが設定されますが、次の clsact "action vlan push" または bpf_skb_vlan_push() の呼び出しでは、skb->len がまだ1のままヘルパーに入ります。head 領域は __GFP_ZERO を伴わない skbuff_small_head から取得されるため、各 push は skb->tail の外側のバイトをフレーム内に引き込みます。3回の操作後、その1バイトの送信により、初期化されていない slab データ11バイトを含む13バイトが送出されます:
0000: 5a b3 62 12 80 88 ff ff 00 b3 62 12 81 `------------------------------' 送信されたのは 0x5a のみであり、残りは slab データです。ここでは線形マッピングアドレスの上位56ビットが表示されています。
ヘルパーが書き換える MAC ヘッダーが存在することを必須とし、そのようなフレームは送出されるのではなくドロップされるようにします。
If you want to get best quality of vulnerability data, you may have to visit VulDB.