Subject: CVE-2024-35900: netfilter: nf_tables: reject new basechain after table flag update

From: Greg Kroah-Hartman <[email-masked]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

netfilter: nf_tables: reject new basechain after table flag update

When dormant flag is toggled, hooks are disabled in the commit phase by
iterating over current chains in table (existing and new).

The following configuration allows for an inconsistent state:

  add table x
  add chain x y { type filter hook input priority 0; }
  add table x { flags dormant; }
  add chain x w { type filter hook input priority 1; }

which triggers the following warning when trying to unregister chain w
which is already unregistered.

[  127.322252] WARNING: CPU: 7 PID: 1211 at net/netfilter/core.c:50                                                                     1 __nf_unregister_net_hook+0x21a/0x260
[...]
[  127.322519] Call Trace:
[  127.322521]  <TASK>
[  127.322524]  ? __warn+0x9f/0x1a0
[  127.322531]  ? __nf_unregister_net_hook+0x21a/0x260
[  127.322537]  ? report_bug+0x1b1/0x1e0
[  127.322545]  ? handle_bug+0x3c/0x70
[  127.322552]  ? exc_invalid_op+0x17/0x40
[  127.322556]  ? asm_exc_invalid_op+0x1a/0x20
[  127.322563]  ? kasan_save_free_info+0x3b/0x60
[  127.322570]  ? __nf_unregister_net_hook+0x6a/0x260
[  127.322577]  ? __nf_unregister_net_hook+0x21a/0x260
[  127.322583]  ? __nf_unregister_net_hook+0x6a/0x260
[  127.322590]  ? __nf_tables_unregister_hook+0x8a/0xe0 [nf_tables]
[  127.322655]  nft_table_disable+0x75/0xf0 [nf_tables]
[  127.322717]  nf_tables_commit+0x2571/0x2620 [nf_tables]

The Linux kernel CVE team has assigned CVE-2024-35900 to this issue.

Affected and fixed versions
===========================

	Issue introduced in 5.4.262 with commit e10f661adc55 and fixed in 5.4.274 with commit 41bad13c0e8a
	Issue introduced in 5.10.202 with commit d9c4da8cb74e and fixed in 5.10.215 with commit 7b6fba691871
	Issue introduced in 5.13 with commit 179d9ba5559a and fixed in 5.15.154 with commit 8ba81dca416a
	Issue introduced in 5.13 with commit 179d9ba5559a and fixed in 6.1.85 with commit 745cf6a84389
	Issue introduced in 5.13 with commit 179d9ba5559a and fixed in 6.6.26 with commit 420132bee3d0
	Issue introduced in 5.13 with commit 179d9ba5559a and fixed in 6.8.5 with commit e95bb4cba94c
	Issue introduced in 5.13 with commit 179d9ba5559a and fixed in 6.9 with commit 994209ddf4f4

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2024-35900
will be updated if fixes are backported, please check that for the most
up to date information about this issue.

Affected files
==============

The file(s) affected by this issue are:
	net/netfilter/nf_tables_api.c

Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/6d12f21f8bbe23fde25b77c2bf5973c136b8bef8
	https://git.kernel.org/stable/c/41bad13c0e8a5a2b47a7472cced922555372daab
	https://git.kernel.org/stable/c/7b6fba6918714afee3e17796113ccab636255c7b
	https://git.kernel.org/stable/c/8ba81dca416adf82fc5a2a23abc1a8cc02ad32fb
	https://git.kernel.org/stable/c/745cf6a843896cdac8766c74379300ed73c78830
	https://git.kernel.org/stable/c/420132bee3d0136b7fba253a597b098fe15493a7
	https://git.kernel.org/stable/c/e95bb4cba94c018be24b11f017d1c55dd6cda31a
	https://git.kernel.org/stable/c/994209ddf4f430946f6247616b2e33d179243769