Linux vulnerability

In the Linux kernel, the following vulnerability has been resolved: netfilter: bridge: make ebt_snat ARP rewrite writable The ebtables SNAT target keeps the Ethernet source address rewrite behind skb_ensure_writable(skb, 0). This is intentional: at the bridge ebtables hooks the Ethernet header is addressed through skb_mac_header()/eth_hdr(), while skb->data points at the Ethernet payload. Asking skb_ensure_writable() for ETH_HLEN bytes would check the payload, not the Ethernet header, and would reintroduce the small packet regression fixed by commit 63137bc5882a. However, the optional ARP sender hardware address rewrite is different. It writes through skb_store_bits() at an offset relative to skb->data: skb_store_bits(skb, sizeof(struct arphdr), info->mac, ETH_ALEN) skb_header_pointer() only safely reads the ARP header; it does not make the later sender hardware address range writable. If that range is still held in a nonlinear skb fragment backed by a splice-imported file page, skb_store_bits() maps the frag page and copies the new MAC address directly into it. Ensure the ARP SHA range is writable before reading the ARP header and before calling skb_store_bits().

Published 25 Jun 2026Updated 18 Sep 202610 sources
CVSS 8.8 △ CISA KEV

What happened

In the Linux kernel, the following vulnerability has been resolved: netfilter: bridge: make ebt_snat ARP rewrite writable The ebtables SNAT target keeps the Ethernet source address rewrite behind skb_ensure_writable(skb, 0). This is intentional: at the bridge ebtables hooks the Ethernet header is addressed through skb_mac_header()/eth_hdr(), while skb->data points at the Ethernet payload. Asking skb_ensure_writable() for ETH_HLEN bytes would check the payload, not the Ethernet header, and would reintroduce the small packet regression fixed by commit 63137bc5882a. However, the optional ARP sender hardware address rewrite is different. It writes through skb_store_bits() at an offset relative to skb->data: skb_store_bits(skb, sizeof(struct arphdr), info->mac, ETH_ALEN) skb_header_pointer() only safely reads the ARP header; it does not make the later sender hardware address range writable. If that range is still held in a nonlinear skb fragment backed by a splice-imported file page, skb_store_bits() maps the frag page and copies the new MAC address directly into it. Ensure the ARP SHA range is writable before reading the ARP header and before calling skb_store_bits().

Affected versions

Linux: 63137bc5882a1882c553d389fdeeeace86ee1741 through before bf84ad7c7a9ede46e31afaa41a1ba06a159e8c87 (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before 76280b78cc9f23bdc6438e10ad6dff148ef8375b (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before b7e91939ba9be805a62a257fa4e227dffbb88fa0 (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before afd64b59c3de9bbbdd3759e834fdc55cda716e0b (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before 153ea96c806aea395daba907a4f88480b6ad5093 (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before b18675263db1147c8e1cab625400c13a0d87bd2d (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before c9b5ff59feffb92a147a84a5aa28acd2cb8ff4c5 (git); 63137bc5882a1882c553d389fdeeeace86ee1741 through before 67ba971ae02514d85818fe0c32549ab4bfa3bf49 (git); 2f3839075a5f8dcf116c1abe35b36b018ac62445 (git); 51ba2945a8ef65ae437c8f9ba05f0343aa82ae5b (git); b7d23c2c87584eb429f115c078ed511be8b18e29 (git); 5.4.73 through before 5.5 (semver); 5.8.17 through before 5.9 (semver); 5.9.2 through before 5.10 (semver); 5.10 Fixed: See vendor advisory.

Why it matters

Review the vendor advisory and exposure of the affected product to determine operational impact.

Detection & mitigation

  • Apply vendor-provided updates or mitigations.
  • Review affected product exposure and access logs.

Public PoC references

No public PoC reference has passed the current publication threshold.