From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Florian Westphal <fw@strlen.de>
Cc: Ren Wei <n05ec@lzu.edu.cn>,
netfilter-devel@vger.kernel.org, phil@nwl.cc,
yuantan098@gmail.com, yifanwucs@gmail.com,
tomapufckgml@gmail.com, zcliangcn@gmail.com, bird@lzu.edu.cn,
bronzed_45_vested@icloud.com
Subject: Re: [PATCH nf 1/1] netfilter: xt_nat: reject unsupported target families
Date: Sun, 14 Jun 2026 11:43:58 +0200 [thread overview]
Message-ID: <ai533miYJF9-J3yB@chamomile> (raw)
In-Reply-To: <ai3Y68Fqd-V3cpOS@strlen.de>
On Sun, Jun 14, 2026 at 12:25:47AM +0200, Florian Westphal wrote:
> Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> > > We can only use NFPROTO_BRIDGE targets, never UNSPEC, for NF_BRIDGE
> > > caller.
> >
> > Maybe it is simply this patch:
> >
> > commit b6fe26f86a1649f84e057f3f15605b08eda15497
> > Author: Pablo Neira Ayuso <pablo@netfilter.org>
> > Date: Wed Apr 15 12:21:00 2026 +0200
> >
> > netfilter: xtables: restrict several matches to inet family
> >
> > which was missing xt_nat.c?
>
> No, ebtables targets are incompatible, they return different
> values compared to ip/ip6tables.
>
> We need a nft_target_bridge_validate (or alternative method) that
> rejects all targets that are not NFPROTO_BRIDGE.
Yes, but there are still around 33 match/targets extensions in the
tree that use NFPROTO_UNSPEC as a .family.
And some of these NFPROTO_UNSPEC are supported by ebtables, eg.
xt_string (match), see ebt_string.c in ebtables userspace.
I think NFPROTO_UNSPEC should be replaced by explicit families that
are supported.
> This is wnat ebtables.c already does which is why this poc would
> not work for classic xtables.
Do you refer to targets specifically, correct?
/* Reject UNSPEC, xtables verdicts/return values are incompatible */
if (target->family != NFPROTO_BRIDGE) {
module_put(target->me);
ret = -ENOENT;
goto cleanup_watchers;
}
> That said, this patch (the xt_nat.c patch) might be a good idea
> anyway, but I don't think its enough.
I would probably replace all of the remaining NFPROTO_UNSPEC by
explicit families.
As for xt_nat_target_reg, it does not set NFPROTO_UNSPEC explicitly,
but given that target is allocated in the BSS, it results in an
implicit NFPROTO_UNSPEC, which is the reason why it when uncaught by
b6fe26f86a1649f84e057f3f15605b08eda15497.
next prev parent reply other threads:[~2026-06-14 9:44 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-13 10:27 [PATCH nf 0/1] netfilter: xt_nat: bridge nft_compat rule can trigger NULL-deref Ren Wei
2026-06-13 10:27 ` [PATCH nf 1/1] netfilter: xt_nat: reject unsupported target families Ren Wei
2026-06-13 21:31 ` Florian Westphal
2026-06-13 22:00 ` Florian Westphal
2026-06-13 22:15 ` Pablo Neira Ayuso
2026-06-13 22:25 ` Florian Westphal
2026-06-14 9:43 ` Pablo Neira Ayuso [this message]
2026-06-14 11:11 ` Pablo Neira Ayuso
2026-06-14 11:16 ` Florian Westphal
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=ai533miYJF9-J3yB@chamomile \
--to=pablo@netfilter.org \
--cc=bird@lzu.edu.cn \
--cc=bronzed_45_vested@icloud.com \
--cc=fw@strlen.de \
--cc=n05ec@lzu.edu.cn \
--cc=netfilter-devel@vger.kernel.org \
--cc=phil@nwl.cc \
--cc=tomapufckgml@gmail.com \
--cc=yifanwucs@gmail.com \
--cc=yuantan098@gmail.com \
--cc=zcliangcn@gmail.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.