CVE Catalog

CVE-2026-90078

Unknown
Published: Translated: NVD NIST

Summary

In the Linux kernel, the net/sched act_skbmod module has header length calculation errors. The tcf_skbmod_act() function calls skb_network_header_len() without guaranteeing transport_header is set and calls skb_mac_header_len() on L3 devices, causing warnings and incorrectly dropping valid short packets.

Risk Assessment

Incorrect length calculations can lead to dropping valid network traffic and generating kernel warnings. In extreme cases this may cause performance and stability issues in the network stack.

Recommendation

Update the Linux kernel to a version containing the fix that uses skb_network_offset() and correctly calculates the required length. Verify that TC rules using act_skbmod work correctly after the update.

Other vulnerabilities in Linux kernel

See all
Original NVD description (English source)

In the Linux kernel, the following vulnerability has been resolved: net/sched: act_skbmod: fix length calculations and avoid invalid header warnings syzbot reported a warning in skb_network_header_len() triggered by tcf_skbmod_act(): !skb_transport_header_was_set(skb) WARNING: CPU: 0 PID: 14949 at include/linux/skbuff.h:3243 skb_network_header_len include/linux/skbuff.h:3243 [inline] WARNING: CPU: 0 PID: 14949 at net/sched/act_skbmod.c:55 tcf_skbmod_act+0xfe8/0x1810 net/sched/act_skbmod.c:55 There are a few issues in tcf_skbmod_act(): 1. Calling skb_network_header_len() assumes skb->transport_header is set, which is not guaranteed when tcf_skbmod_act() runs at TC ingress. 2. Unconditionally calling skb_mac_header_len() at the beginning of tcf_skbmod_act() triggers a warning on L3 devices (e.g. TUN) where the MAC header is unset, evaluating to an underflowed garbage length. 3. On TC ingress, skb->data points to the network header. Adding the MAC header length to the IP header length causes skb_ensure_writable() to request more bytes than the actual IP packet length, dropping valid short packets (e.g. 28-byte UDP/IPv4 packets). Fix these by: - Using skb_network_offset(skb) + sizeof(struct iphdr/ipv6hdr) for SKBMOD_F_ECN so that the required length is correctly calculated on both ingress (offset == 0) and egress (offset == mac_len). - Setting max_edit_len to ETH_HLEN for Ethernet header modifications after validating ARPHRD_ETHER.

Vulnerability data from NVD (NIST) · CISA KEV · EPSS