All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pablo Neira Ayuso <pablo@netfilter.org>
To: netdev-bot+sashiko@kernel.org
Cc: netfilter-devel@vger.kernel.org, davem@davemloft.net,
	netdev@vger.kernel.org, kuba@kernel.org, pabeni@redhat.com,
	edumazet@google.com, horms@kernel.org, fw@strlen.de, ja@ssi.bg
Subject: Re: [PATCH net 4/9] netfilter: cttimeout: prevent UAF during module unload
Date: Tue, 8 Sep 2026 22:24:50 +0200	[thread overview]
Message-ID: <aqBvEkkkm11rIqwT@chamomile> (raw)
In-Reply-To: <178889064168.219967.15151233151602486944@kernel.org>

On Tue, Sep 08, 2026 at 06:04:01PM +0000, netdev-bot+sashiko@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential
> issue(s) to consider:
> 
> Critical: 0 · High: 1 · Medium: 0 · Low: 0
> 
> - [High] cttimeout_exit() only drains RCU readers that reach the per-net
>   timeout storage through nf_ct_timeout_hook.
> 
> --
> 
> netfilter: cttimeout: prevent UAF during module unload
> 
> This reorders cttimeout_exit() so that nf_ct_timeout_hook is cleared and
> synchronize_net() is called before unregister_pernet_subsys() frees the
> per-net timeout storage.  That closes the window where nf_ct_set_timeout()
> could still reach the freed nfct_timeout_pernet blob through the hook.
> 
> > diff --git a/net/netfilter/nfnetlink_cttimeout.c b/net/netfilter/nfnetlink_cttimeout.c
> > index 66c2016f6049d..132c02ac7c4ea 100644
> > --- a/net/netfilter/nfnetlink_cttimeout.c
> > +++ b/net/netfilter/nfnetlink_cttimeout.c
> > @@ -652,9 +652,9 @@ static void __exit cttimeout_exit(void)
> >  {
> >  	nfnetlink_subsys_unregister(&cttimeout_subsys);
> >  
> > -	unregister_pernet_subsys(&cttimeout_ops);
> >  	RCU_INIT_POINTER(nf_ct_timeout_hook, NULL);
> >  	synchronize_net();
> > +	unregister_pernet_subsys(&cttimeout_ops);
> >  }
> 
> [Severity: High]
> Does this leave the same per-net object reachable from the netlink dump
> path during unload?
> 
> cttimeout_get_timeout() starts the dump without a module reference:
> 
> net/netfilter/nfnetlink_cttimeout.c:cttimeout_get_timeout() {
> 	if (info->nlh->nlmsg_flags & NLM_F_DUMP) {
> 		struct netlink_dump_control c = {
> 			.dump = ctnl_timeout_dump,
> 		};
> 		return netlink_dump_start(info->sk, skb, info->nlh, &c);
> 	}
> 
> With no .module set, __netlink_dump_start()'s try_module_get(control->module)
> is try_module_get(NULL), which succeeds without taking anything, and
> cb->module stays NULL.  nf_tables_api.c and nfnetlink_hook.c pass
> .module = THIS_MODULE in their netlink_dump_control for comparison.

This is a pre-existing issue. I can follow up on this.

  reply	other threads:[~2026-09-08 20:24 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-07 17:17 [PATCH net,v2 0/9] Netfilter/IPVS fixes for net Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 1/9] ipvs: reject invalid states in connection template sync records Pablo Neira Ayuso
2026-09-08 21:00   ` patchwork-bot+netdevbpf
2026-09-07 17:17 ` [PATCH net 2/9] ipvs: fix reversed sequence option serialization Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 3/9] netfilter: nf_conntrack_sip: fix OOB read in sip_skip_whitespace() Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 4/9] netfilter: cttimeout: prevent UAF during module unload Pablo Neira Ayuso
2026-09-08 18:04   ` netdev-bot+sashiko
2026-09-08 20:24     ` Pablo Neira Ayuso [this message]
2026-09-07 17:17 ` [PATCH net 5/9] netfilter: nf_log: unregister loggers before per-net teardown Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 6/9] netfilter: nfnetlink_log: cope with concurrent instance destruction Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 7/9] netfilter: arp_tables: remove the 32bit compat interface Pablo Neira Ayuso
2026-09-08 18:04   ` netdev-bot+sashiko
2026-09-08 20:32     ` Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 8/9] netfilter: ip6_tables: set F_PROTO when proto value is nonzero Pablo Neira Ayuso
2026-09-08 18:04   ` netdev-bot+sashiko
2026-09-08 20:22     ` Pablo Neira Ayuso
2026-09-08 20:35     ` Pablo Neira Ayuso
2026-09-07 17:17 ` [PATCH net 9/9] netfilter: report NLM_F_DUMP_FILTERED when all is filtered out Pablo Neira Ayuso

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=aqBvEkkkm11rIqwT@chamomile \
    --to=pablo@netfilter.org \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=fw@strlen.de \
    --cc=horms@kernel.org \
    --cc=ja@ssi.bg \
    --cc=kuba@kernel.org \
    --cc=netdev-bot+sashiko@kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pabeni@redhat.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.