From: Florian Westphal <fw@strlen.de>
To: Alan Ross <alan@sleuthco.ai>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [PATCH] security: use secure_getenv() to prevent env-var privilege escalation
Date: Thu, 12 Feb 2026 01:18:36 +0100 [thread overview]
Message-ID: <aY0cXHepIpELznWA@strlen.de> (raw)
In-Reply-To: <CAKgz23GWzqiryJwfjJyf7ObTkAnLciFZ6vKXcxACtm-N8xZi-w@mail.gmail.com>
Alan Ross <alan@sleuthco.ai> wrote:
> >> Would you have the cycles to go through all of nf software to make this
> change?
>
> Yes, happy to take this on. I'll work through them in order: nftables,
> ipset, conntrack-tools, ulogd. iproute2 I can
> look at as well, though that's a separate tree/maintainer so I'd send
> those separately.
Sure, iproute2 patches go to netdev@ , not to netfilter-devel.
> >> I think it just needs a rework of the commit message
>
> Will do — v2 will lead with the setcap/container-runtime scenario as the
> motivation.
Thanks!
> >> Any reason for the wrapper to not do getauxval(AT_SECURE)?
>
> No good reason. getauxval is available since glibc 2.16 (one release
> before secure_getenv in 2.17), and since this is
> all Linux-only code there's no portability concern. Your version is
> cleaner — I'll use that for the fallback.
Alright.
> In practice the #ifdef HAVE_SECURE_GETENV path will hit on anything
> remotely modern, but agreed the getauxval fallback
> is simpler than a uid/euid comparison.
Agreed, it should not be hit in practice.
> >> Another option is to alter ef7781eb1437a ("libxtables: exit if called
> by setuid executable") to enforce non-capability
> binary
>
> That would work as a first step for xtables specifically — extend the
> existing getuid() != geteuid() check to also
> bail on getauxval(AT_SECURE). The secure_getenv changes would then be
> belt-and-suspenders on top. Want me to include
> both in v2, or would you prefer the enforcement-first approach across the
> nf suite?
I would prefer enforcement-first, but you are free to followup with
getenv_secure if you want. I mean, the change isn't wrong, I am just
not sure there isn't anything else that we might be missing.
xtables has a plugin architecture, so we don't know what other
extensions that might get shipped by some distros do.
For nftables, thats less of a concern, BUT I don't know what some of the
libraries we link against do with untrusted input. Or what will happen
when nft is invoked with stdin/stdout/stderr closed.
So I would prefer to enforce a no-setcap/setuid approach in any case
and followup with secure_getenv later.
> I'll start with the iptables v2 (reworked message + getauxval fallback)
> and then work through nftables and the others
> as follow-up series.
Thank you, much appreciated.
prev parent reply other threads:[~2026-02-12 0:18 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-11 14:19 [PATCH] security: use secure_getenv() to prevent env-var privilege escalation Alan Ross
2026-02-11 17:06 ` Florian Westphal
[not found] ` <CAKgz23Hendu+Y=rhSwupr30Vf0JuJS5b6D-vp8A0TAC2swA-Bw@mail.gmail.com>
2026-02-11 19:03 ` Florian Westphal
[not found] ` <CAKgz23GWzqiryJwfjJyf7ObTkAnLciFZ6vKXcxACtm-N8xZi-w@mail.gmail.com>
2026-02-12 0:18 ` Florian Westphal [this message]
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=aY0cXHepIpELznWA@strlen.de \
--to=fw@strlen.de \
--cc=alan@sleuthco.ai \
--cc=netfilter-devel@vger.kernel.org \
/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.