CVE-2024-27012
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
01/05/2024
Last modified:
04/11/2025
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
netfilter: nf_tables: restore set elements when delete set fails<br />
<br />
From abort path, nft_mapelem_activate() needs to restore refcounters to<br />
the original state. Currently, it uses the set->ops->walk() to iterate<br />
over these set elements. The existing set iterator skips inactive<br />
elements in the next generation, this does not work from the abort path<br />
to restore the original state since it has to skip active elements<br />
instead (not inactive ones).<br />
<br />
This patch moves the check for inactive elements to the set iterator<br />
callback, then it reverses the logic for the .activate case which<br />
needs to skip active elements.<br />
<br />
Toggle next generation bit for elements when delete set command is<br />
invoked and call nft_clear() from .activate (abort) path to restore the<br />
next generation bit.<br />
<br />
The splat below shows an object in mappings memleak:<br />
<br />
[43929.457523] ------------[ cut here ]------------<br />
[43929.457532] WARNING: CPU: 0 PID: 1139 at include/net/netfilter/nf_tables.h:1237 nft_setelem_data_deactivate+0xe4/0xf0 [nf_tables]<br />
[...]<br />
[43929.458014] RIP: 0010:nft_setelem_data_deactivate+0xe4/0xf0 [nf_tables]<br />
[43929.458076] Code: 83 f8 01 77 ab 49 8d 7c 24 08 e8 37 5e d0 de 49 8b 6c 24 08 48 8d 7d 50 e8 e9 5c d0 de 8b 45 50 8d 50 ff 89 55 50 85 c0 75 86 0b eb 82 0f 0b eb b3 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90<br />
[43929.458081] RSP: 0018:ffff888140f9f4b0 EFLAGS: 00010246<br />
[43929.458086] RAX: 0000000000000000 RBX: ffff8881434f5288 RCX: dffffc0000000000<br />
[43929.458090] RDX: 00000000ffffffff RSI: ffffffffa26d28a7 RDI: ffff88810ecc9550<br />
[43929.458093] RBP: ffff88810ecc9500 R08: 0000000000000001 R09: ffffed10281f3e8f<br />
[43929.458096] R10: 0000000000000003 R11: ffff0000ffff0000 R12: ffff8881434f52a0<br />
[43929.458100] R13: ffff888140f9f5f4 R14: ffff888151c7a800 R15: 0000000000000002<br />
[43929.458103] FS: 00007f0c687c4740(0000) GS:ffff888390800000(0000) knlGS:0000000000000000<br />
[43929.458107] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br />
[43929.458111] CR2: 00007f58dbe5b008 CR3: 0000000123602005 CR4: 00000000001706f0<br />
[43929.458114] Call Trace:<br />
[43929.458118] <br />
[43929.458121] ? __warn+0x9f/0x1a0<br />
[43929.458127] ? nft_setelem_data_deactivate+0xe4/0xf0 [nf_tables]<br />
[43929.458188] ? report_bug+0x1b1/0x1e0<br />
[43929.458196] ? handle_bug+0x3c/0x70<br />
[43929.458200] ? exc_invalid_op+0x17/0x40<br />
[43929.458211] ? nft_setelem_data_deactivate+0xd7/0xf0 [nf_tables]<br />
[43929.458271] ? nft_setelem_data_deactivate+0xe4/0xf0 [nf_tables]<br />
[43929.458332] nft_mapelem_deactivate+0x24/0x30 [nf_tables]<br />
[43929.458392] nft_rhash_walk+0xdd/0x180 [nf_tables]<br />
[43929.458453] ? __pfx_nft_rhash_walk+0x10/0x10 [nf_tables]<br />
[43929.458512] ? rb_insert_color+0x2e/0x280<br />
[43929.458520] nft_map_deactivate+0xdc/0x1e0 [nf_tables]<br />
[43929.458582] ? __pfx_nft_map_deactivate+0x10/0x10 [nf_tables]<br />
[43929.458642] ? __pfx_nft_mapelem_deactivate+0x10/0x10 [nf_tables]<br />
[43929.458701] ? __rcu_read_unlock+0x46/0x70<br />
[43929.458709] nft_delset+0xff/0x110 [nf_tables]<br />
[43929.458769] nft_flush_table+0x16f/0x460 [nf_tables]<br />
[43929.458830] nf_tables_deltable+0x501/0x580 [nf_tables]
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.4 (including) | 6.8.8 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:fedoraproject:fedora:38:*:*:*:*:*:*:* | ||
| cpe:2.3:o:fedoraproject:fedora:39:*:*:*:*:*:*:* | ||
| cpe:2.3:o:fedoraproject:fedora:40:*:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/86658fc7414d4b9e25c2699d751034537503d637
- https://git.kernel.org/stable/c/e79b47a8615d42c68aaeb68971593333667382ed
- https://git.kernel.org/stable/c/86658fc7414d4b9e25c2699d751034537503d637
- https://git.kernel.org/stable/c/e79b47a8615d42c68aaeb68971593333667382ed
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/4EZ6PJW7VOZ224TD7N4JZNU6KV32ZJ53/
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/DAMSOZXJEPUOXW33WZYWCVAY7Z5S7OOY/
- https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/GCBZZEC7L7KTWWAS2NLJK6SO3IZIL4WW/



