CVE-2026-23192: linkwatch: use __dev_put() in callers to prevent UAF
In the Linux kernel, the following vulnerability has been resolved:
linkwatch: use __dev_put() in callers to prevent UAF
After linkwatch_do_dev() calls __dev_put() to release the linkwatch
reference, the device refcount may drop to 1. At this point,
netdev_run_todo() can proceed (since linkwatch_sync_dev() sees an
empty list and returns without blocking), wait for the refcount to
become 1 via netdev_wait_allrefs_any(), and then free the device
via kobject_put().
This creates a use-after-free when __linkwatch_run_queue() tries to
call netdev_unlock_ops() on the already-freed device.
Note that adding netdev_lock_ops()/netdev_unlock_ops() pair in
netdev_run_todo() before kobject_put() would not work, because
netdev_lock_ops() is conditional - it only locks when
netdev_need_ops_lock() returns true. If the device doesn't require
ops_lock, linkwatch won't hold any lock, and netdev_run_todo()
acquiring the lock won't provide synchronization.
Fix this by moving __dev_put() from linkwatch_do_dev() to its
callers. The device reference logically pairs with de-listing the
device, so it's reasonable for the caller that did the de-listing
to release it. This allows placing __dev_put() after all device
accesses are complete, preventing UAF.
The bug can be reproduced by adding mdelay(2000) after
linkwatch_do_dev() in __linkwatch_run_queue(), then running:
ip tuntap add mode tun name tun_test
ip link set tun_test up
ip link set tun_test carrier off
ip link set tun_test carrier on
sleep 0.5
ip tuntap del mode tun name tun_test
KASAN report:
==================================================================
BUG: KASAN: use-after-free in netdev_need_ops_lock include/net/netdev_lock.h:33 [inline]
BUG: KASAN: use-after-free in netdev_unlock_ops include/net/netdev_lock.h:47 [inline]
BUG: KASAN: use-after-free in __linkwatch_run_queue+0x865/0x8a0 net/core/link_watch.c:245
Read of size 8 at addr ffff88804de5c008 by task kworker/u32:10/8123
CPU: 0 UID: 0 PID: 8123 Comm: kworker/u32:10 Not tainted syzkaller #0 PREEMPT(full)
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014
Workqueue: events_unbound linkwatch_event
Call Trace:
<TASK>
__dump_stack lib/dump_stack.c:94 [inline]
dump_stack_lvl+0x100/0x190 lib/dump_stack.c:120
print_address_description mm/kasan/report.c:378 [inline]
print_report+0x156/0x4c9 mm/kasan/report.c:482
kasan_report+0xdf/0x1a0 mm/kasan/report.c:595
netdev_need_ops_lock include/net/netdev_lock.h:33 [inline]
netdev_unlock_ops include/net/netdev_lock.h:47 [inline]
__linkwatch_run_queue+0x865/0x8a0 net/core/link_watch.c:245
linkwatch_event+0x8f/0xc0 net/core/link_watch.c:304
process_one_work+0x9c2/0x1840 kernel/workqueue.c:3257
process_scheduled_works kernel/workqueue.c:3340 [inline]
worker_thread+0x5da/0xe40 kernel/workqueue.c:3421
kthread+0x3b3/0x730 kernel/kthread.c:463
ret_from_fork+0x754/0xaf0 arch/x86/kernel/process.c:158
ret_from_fork_asm+0x1a/0x30 arch/x86/entry/entry_64.S:246
</TASK>
==================================================================
Security readout for executives and security teams
Plain-English summary
A race in Linux network-device cleanup can access a device after its memory has been freed. A successful local attack could compromise confidentiality, integrity, and availability. The flaw is serious, but the supplied evidence does not establish remote reachability or real-world exploitation.
Executive priority
Treat as a high-priority kernel update, especially on shared or locally accessible Linux systems. It is not supported as an internet-wide emergency because exploitation is local and no active exploitation is documented. Resolve version ambiguity through vendor advisories before setting compliance deadlines.
Technical view
The linkwatch queue released a network-device reference before completing all device accesses. Concurrent cleanup could then free the device, causing netdev_unlock_ops() to read freed memory. The kernel fix moves __dev_put() into callers so the reference is released only after access finishes.
Likely exposure
Exposure is limited to affected Linux kernels and requires local access with sufficient ability to manipulate network-device state. The bundle lists 6.15, 6.18.10, 6.19, and an ambiguous โ0โ as affected; administrators should verify exact ranges with their distribution.
Exploitation context
The CVSS vector is local, low-complexity, low-privilege, and requires no user interaction. A KASAN-confirmed reproducer exists in the disclosure. CISA KEV status is false, and the supplied sources provide no evidence of active exploitation or a public weaponized exploit.
Researcher notes
The documented failure is a reference-lifetime race between linkwatch processing and net-device teardown. The source describes moving __dev_put() after all accesses rather than adding conditional ops locking. Exact affected and fixed release ranges are incomplete or ambiguous in the supplied bundle, so commit ancestry and vendor backports require confirmation.
Mitigation direction
Apply a vendor kernel update containing the published linkwatch fix.
Confirm fixed packages with the Linux distribution or appliance vendor.
Prioritize multi-user systems where untrusted users can manipulate network devices.
Restrict unnecessary local access and network-device administration until patched.
Validation and detection
Inventory running kernel versions across Linux hosts and appliances.
Compare vendor package advisories against both referenced stable-kernel commits.
Verify the patched kernel is running after installation and reboot.
Use safe staging tests or sanitizers to check for regression symptoms.
Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.
Potential ATT&CK relevance
Conservative CVE-to-ATT&CK context
These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.
ATT&CK lookup starting points
Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.
cve ยท low confidence lookup
CVE-2026-23192 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.
1CVSS vectors
3Timeline events
0ADP providers
3Source links
CVSS vector scores
1 official score
We collect every scored CVSS vector available in the official CNA and ADP containers. When more than one version is present, the table keeps the source vectors side by side instead of collapsing them into the highest score.