From: Julian Anastasov <ja@ssi.bg>
To: Star Chang <starchang@google.com>
Cc: netdev@vger.kernel.org, dsahern@kernel.org, idosch@nvidia.com,
davem@davemloft.net, edumazet@google.com, kuba@kernel.org,
pabeni@redhat.com, horms@kernel.org, johannes@sipsolutions.net,
johannes.berg@intel.com, linux-kernel@vger.kernel.org,
wangroger@google.com
Subject: Re: [PATCH net v4] net: Fix Hole-196 vulnerability by dropping unicast ARP/IP in L2 BMC
Date: Fri, 30 Oct 2026 07:20:05 +0200 (EET) [thread overview]
Message-ID: <553d89ed-8691-45b6-ac98-0faf00b859cd@ssi.bg> (raw)
In-Reply-To: <20261029090241.4070613-1-starchang@google.com>
Hello,
On Thu, 29 Oct 2026, Star Chang wrote:
> Hi Julian,
>
> Thank you for the prompt feedback!
>
> On the ARP side:
> Glad to hear that dropping non-GARP ARP Replies (ar_op == ARPOP_REPLY && sip != tip) in L2 BMC sounds like the right direction.
>
> Regarding the points you raised:
> 1. For GARP: Leaving it to DROP_GRATUITOUS_ARP to decide makes total sense. Legitimate GARP (sip == tip) will bypass our drop check and fall through to the existing IN_DEV_DROP_GRATUITOUS_ARP logic in arp_process().
May be DROP_UNICAST_IN_L2_MULTICAST should drop also
the GARP packets. Why should the GARP packets to be more
privileged than the other broadcast requests?
I see your v5 and it looks like you do not take the
path to stop the broadcast requests from updating the cache.
> 2. For RFC 3927 (169.254.0.0/16): I completely agree with your concern that exempting it opens another door. Given that Hole-196 attacks typically target the subnet gateway rather than link-local addresses, keeping it simple without an exemption seems safer.
As this is a broadcast reply, we should be concerned
if the same IP is locally configured. But what if we send
broadcast request and receive broadcast reply for such address?
I don't know if there is some support for such broadcasts.
As result, IMHO the handling should be:
- broadcast request: do not update cache, send replies as usually.
GARP requests (ARP Announcement) should not update the cache.
- broadcast replies:
- reply for 169.254.0.0/16: one day these should be
validated and then allowed, now dropped
- otherwise, drop, do not update cache
- the ARP traffic on the WLAN will increase because we will not
update the cache from remote requests, only from remote unicast
replies which are in response to our broadcast requests
> Regarding your comment on the IP part ("But not sure for the IP part..."):
> Could you please elaborate on your concerns with the IP changes?
From my notes about DHCPv4, I see broadcasts only for:
- DISCOVER: client_mac->brd, 0.0.0.0:68 -> 255.255.255.255:67
- REQUEST: UNUSED IP, client_mac->brd, 0.0.0.0:68 -> 255.255.255.255:67
But things now may differ.
>
> The motivation for exempting UDP port 68 was that in our lab testing, we noticed certain DHCP servers responding with unicast IP addresses over L2 broadcast, which caused legitimate lease packets to be dropped by drop_unicast_in_l2_multicast.
>
> We would be very glad to adjust, simplify, or rethink the IP logic based on your advice.
>
> Thanks again for your time and guidance!
>
> Best regards,
> Star Chang
Regards
--
Julian Anastasov <ja@ssi.bg>
next prev parent reply other threads:[~2026-10-30 5:20 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 15:05 [PATCH net v3] net: Fix Hole-196 vulnerability by dropping unicast ARP/IP in L2 BMC Star Chang
2026-10-27 1:56 ` [PATCH net v4] " Star Chang
2026-10-27 12:16 ` Julian Anastasov
2026-10-28 6:16 ` Star Chang
2026-10-28 15:22 ` Julian Anastasov
2026-10-29 9:02 ` Star Chang
2026-10-30 5:20 ` Julian Anastasov [this message]
2026-10-30 3:07 ` Star Chang
[not found] ` <65cf2338-7bb4-3151-f3b1-ef171bb5723b@ssi.bg>
2026-10-30 6:52 ` Star Chang
2026-10-29 16:56 ` netdev-bot+sashiko
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=553d89ed-8691-45b6-ac98-0faf00b859cd@ssi.bg \
--to=ja@ssi.bg \
--cc=davem@davemloft.net \
--cc=dsahern@kernel.org \
--cc=edumazet@google.com \
--cc=horms@kernel.org \
--cc=idosch@nvidia.com \
--cc=johannes.berg@intel.com \
--cc=johannes@sipsolutions.net \
--cc=kuba@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=starchang@google.com \
--cc=wangroger@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox