CVE-2024-42109

CVE-2024-42109

High · published July 30, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
15.4
In the wild
Unconfirmed
What it is

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

netfilter: nf_tables: unconditionally flush pending work before notifier

syzbot reports:

KASAN: slab-uaf in nft_ctx_update include/net/netfilter/nf_tables.h:1831

KASAN: slab-uaf in nft_commit_release net/netfilter/nf_tables_api.c:9530

KASAN: slab-uaf int nf_tables_trans_destroy_work+0x152b/0x1750 net/netfilter/nf_tables_api.c:9597

Read of size 2 at addr ffff88802b0051c4 by task kworker/1:1/45

[..]

Workqueue: events nf_tables_trans_destroy_work

Call Trace:

nft_ctx_update include/net/netfilter/nf_tables.h:1831 [inline]

nft_commit_release net/netfilter/nf_tables_api.c:9530 [inline]

nf_tables_trans_destroy_work+0x152b/0x1750 net/netfilter/nf_tables_api.c:9597

Problem is that the notifier does a conditional flush, but its possible

that the table-to-be-removed is still referenced by transactions being

processed by the worker, so we need to flush unconditionally.

We could make the flush_work depend on whether we found a table to delete

in nf-next to avoid the flush for most cases.

AFAICS this problem is only exposed in nf-next, with

commit e169285f8c56 ("netfilter: nf_tables: do not store nft_ctx in transaction objects"),

with this commit applied there is an unconditional fetch of

table->family which is whats triggering the above splat.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00249 · 15.4th percentile
Published
2024-07-30T12:15Z
Affected products (4)
ProductVersionsFixed in
linux/linux_kernel≥ 5.15.129, < 5.15.1635.15.163
linux/linux_kernel≥ 6.1.50, < 6.1.986.1.98
linux/linux_kernel≥ 6.5, < 6.6.396.6.39
linux/linux_kernel≥ 6.7, < 6.9.96.9.9
References (11)
EPSS history
Timeline
  • 30 JUL 07:46Z
    netfilter: nf_tables: unconditionally flush pending work before notifier
    cvelistv5