Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: can: dev: init_can_skb(): restore skb header initialization Commit 9f10374bb024 ("can: remove private CAN skb headroom infrastructure") removed the skb_reset_mac_header()/skb_reset_network_header()/ skb_reset_transport_header() calls from init_can_skb(). As a result, RX skbs from alloc_can_skb() and friends again carry mac_header = 0xFFFF. When such an skb reaches packet_rcv_spkt() (SOCK_PACKET), the push length calculation overflows and triggers skb_under_panic -> kernel BUG -> full machine panic. The same issue was originally reported in 2014 on linux-can and fixed by commit 969439016d2c ("can: add missing initialisations in CAN related skbuffs"). packet_rcv_spkt() itself has never been hardened: only packet_rcv() and tpacket_rcv() gained dev_has_header() checks in commit d549699048b4 ("net/packet: fix packet receive on L3 devices without visible hard header").
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 9f10374bb024593a611e6845847f0444841a231b before 8078375dfd0baecd9f1b7b06bb2d6f88d7cb8632; affected 9f10374bb024593a611e6845847f0444841a231b before 0a04c0cb8606ff88399489d03ef255afe90d0d5f |
| Linux / Linux | affected 7.0; unaffected 0 before 7.0; unaffected 7.2.11 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.