CVE-2023-53186 skbuff: Fix a race between coalescing and releasing SKBs

High 8.1 Published Updated

A race condition in Linux kernel SKB coalescing can lead to use-after-free or double-free errors, potentially allowing code execution or system crashes.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2023-53186?

CVE-2023-53186 is a high-severity use after free vulnerability in Linux kernel, published on 15 Sep 2025. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

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

skbuff: Fix a race between coalescing and releasing SKBs

Commit 1effe8ca4e34 ("skbuff: fix coalescing for page_pool fragment recycling") allowed coalescing to proceed with non page pool page and page pool page when @from is cloned, i.e.

to->pp_recycle --> false from->pp_recycle --> true skb_cloned(from) --> true

However, it actually requires skb_cloned(@from) to hold true until coalescing finishes in this situation. If the other cloned SKB is released while the merging is in process, from_shinfo->nr_frags will be set to 0 toward the end of the function, causing the increment of frag page _refcount to be unexpectedly skipped resulting in inconsistent reference counts. Later when SKB(@to) is released, it frees the page directly even though the page pool page is still in use, leading to use-after-free or double-free errors. So it should be prohibited.

The double-free error message below prompted us to investigate: BUG: Bad page state in process swapper/1 pfn:0e0d1 page:00000000c6548b28 refcount:-1 mapcount:0 mapping:0000000000000000 index:0x2 pfn:0xe0d1 flags: 0xfffffc0000000(node=0|zone=1|lastcpupid=0x1fffff) raw: 000fffffc0000000 0000000000000000 ffffffff00000101 0000000000000000 raw: 0000000000000002 0000000000000000 ffffffffffffffff 0000000000000000 page dumped because: nonzero _refcount

CPU: 1 PID: 0 Comm: swapper/1 Tainted: G E 6.2.0+ Call Trace: <IRQ> dump_stack_lvl+0x32/0x50 bad_page+0x69/0xf0 free_pcp_prepare+0x260/0x2f0 free_unref_page+0x20/0x1c0 skb_release_data+0x10b/0x1a0 napi_consume_skb+0x56/0x150 net_rx_action+0xf0/0x350 ? __napi_schedule+0x79/0x90 __do_softirq+0xc8/0x2b1 __irq_exit_rcu+0xb9/0xf0 common_interrupt+0x82/0xa0 </IRQ> <TASK> asm_common_interrupt+0x22/0x40 RIP: 0010:default_idle+0xb/0x20

Weakness: CWE-362

Which versions are affected by CVE-2023-53186?

It affects 1 product.

Linux distribution packages (15)
kpatch-patch-5_14_0-284_104_1 Red Hat:rhel_e4s:9.2::baseosAll versions0:1-11.el9_2
kpatch-patch-5_14_0-284_104_1-debuginfo Red Hat:rhel_e4s:9.2::baseosAll versions0:1-11.el9_2
kpatch-patch-5_14_0-284_104_1-debugsource Red Hat:rhel_e4s:9.2::baseosAll versions0:1-11.el9_2
kpatch-patch-5_14_0-284_117_1 Red Hat:rhel_e4s:9.2::baseosAll versions0:1-8.el9_2
kpatch-patch-5_14_0-284_117_1-debuginfo Red Hat:rhel_e4s:9.2::baseosAll versions0:1-8.el9_2
kpatch-patch-5_14_0-284_117_1-debugsource Red Hat:rhel_e4s:9.2::baseosAll versions0:1-8.el9_2
kpatch-patch-5_14_0-284_134_1 Red Hat:rhel_e4s:9.2::baseosAll versions0:1-2.el9_2
kpatch-patch-5_14_0-284_134_1-debuginfo Red Hat:rhel_e4s:9.2::baseosAll versions0:1-2.el9_2
kpatch-patch-5_14_0-284_134_1-debugsource Red Hat:rhel_e4s:9.2::baseosAll versions0:1-2.el9_2
kpatch-patch-5_14_0-284_79_1 Red Hat:rhel_e4s:9.2::baseosAll versions0:1-15.el9_2
kpatch-patch-5_14_0-284_79_1-debuginfo Red Hat:rhel_e4s:9.2::baseosAll versions0:1-15.el9_2
kpatch-patch-5_14_0-284_79_1-debugsource Red Hat:rhel_e4s:9.2::baseosAll versions0:1-15.el9_2
kpatch-patch-5_14_0-284_92_1 Red Hat:rhel_e4s:9.2::baseosAll versions0:1-13.el9_2
kpatch-patch-5_14_0-284_92_1-debuginfo Red Hat:rhel_e4s:9.2::baseosAll versions0:1-13.el9_2
kpatch-patch-5_14_0-284_92_1-debugsource Red Hat:rhel_e4s:9.2::baseosAll versions0:1-13.el9_2

Products include Linux kernel.

How do I fix CVE-2023-53186?

Apply the vendor's patch.

Upgrade to the fixed version. These bugs are found with fuzzing and sanitisers and avoided by memory-safe languages. More about Use after free.

Is CVE-2023-53186 being exploited?

There is no known exploitation of CVE-2023-53186 in the wild and no public exploit code.

All Linux kernel vulnerabilities

Sources

Also known as BELL-CVE-2023-53186, DEBIAN-CVE-2023-53186, GHSA-2937-wfx7-vxfg, RHSA-2025:17896, UBUNTU-CVE-2023-53186.

Is CVE-2023-53186 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free