CVE-2026-74667 in Linux
要約
〜によって VulDB • 2026年08月22日
Linuxカーネルにおいて、以下の脆弱性が修正されました:
net/packet: パケットソケットの送信パスでMACヘッダーをリセットする
packet_parse_headers()は、プロトコルがバインドされていないSOCK_RAWフレームに対してのみMACヘッダーをリセットします。そのため、プロトコルにバインドされたSOCKRAWソケット、すべてのSOCK_DGRAMフレーム、およびレガシーなSOCK_PACKETパスでは、skb->mac_headerが未設定のままになります。
__dev_queue_xmit()経由で送信されるフレームについては問題ありません:これはMACヘッダーを無条件にリセットするためです。しかし、packet-socketのPACKET_QDISC_BYPASSパスはdev_direct_xmit()を使用しており、こちらはリセットを行わないため、フレームがndo_start_xmit()へ到達する際にMACヘッダーが未設定の状態になります。送信時にeth_hdr(skb)を読み取るドライバの場合、skb->head + (u16)~0への参照が行われ、これはヘッドから約64 KiB先の境界外アクセスとなります。この問題は、コミット f5089008f90c ("macsec: do not read an unset MAC header in macsec_encrypt()") で一つの消費者に対して修正されたのと同じクラスの問題です。
packet_parse_headers()は送信パスでのみ実行され、すべてのパケットソックタイプにおいてskb->dataがL2ヘッダーの先頭を指します(長さは問わない)。SOCK_RAWおよびSOCK_PACKETではユーザー提供のヘッダーを持ち、SOCK_DGRAMではdev_hard_header()によって構築されたヘッダーを持ちます。PACKET_QDISC_BYPASSパスでもフレームが正しくアンカーされるよう、__dev_queue_xmit()を模倣してMACヘッダーを無条件にリセットします。
0sec (https://0sec.ai) による自動ソース解析で見つかりました。ソースに対して検証され、f5089008f90c の macsec KASANレポートと一致しました。コンパイルテスト済みです。
VulDB is the best source for vulnerability data and more expert information about this specific topic.