CVE-2026-23004

Source
https://cve.org/CVERecord?id=CVE-2026-23004
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23004.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2026-23004
Downstream
Related
Published
2026-01-25T14:36:18.233Z
Modified
2026-04-02T17:30:17.067342363Z
Summary
dst: fix races in rt6_uncached_list_del() and rt_del_uncached_list()
Details

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

dst: fix races in rt6uncachedlistdel() and rtdeluncachedlist()

syzbot was able to crash the kernel in rt6uncachedlistflushdev() in an interesting way [1]

Crash happens in listdelinit()/INITLISTHEAD() while writing list->prev, while the prior write on list->next went well.

static inline void INITLISTHEAD(struct listhead *list) { WRITEONCE(list->next, list); // This went well WRITE_ONCE(list->prev, list); // Crash, @list has been freed. }

Issue here is that rt6uncachedlistdel() did not attempt to lock ul->lock, as listempty(&rt->dst.rtuncached) returned true because the WRITEONCE(list->next, list) happened on the other CPU.

We might use listdelinitcareful() and listemptycareful(), or make sure rt6uncachedlistdel() always grabs the spinlock whenever rt->dst.rtuncachedlist has been set.

A similar fix is neeed for IPv4.

[1]

BUG: KASAN: slab-use-after-free in INITLISTHEAD include/linux/list.h:46 [inline] BUG: KASAN: slab-use-after-free in listdelinit include/linux/list.h:296 [inline] BUG: KASAN: slab-use-after-free in rt6uncachedlistflushdev net/ipv6/route.c:191 [inline] BUG: KASAN: slab-use-after-free in rt6disableip+0x633/0x730 net/ipv6/route.c:5020 Write of size 8 at addr ffff8880294cfa78 by task kworker/u8:14/3450

CPU: 0 UID: 0 PID: 3450 Comm: kworker/u8:14 Tainted: G L syzkaller #0 PREEMPT_{RT,(full)} Tainted: [L]=SOFTLOCKUP Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 10/25/2025 Workqueue: netns cleanupnet Call Trace: <TASK> dumpstacklvl+0xe8/0x150 lib/dumpstack.c:120 printaddressdescription mm/kasan/report.c:378 [inline] printreport+0xca/0x240 mm/kasan/report.c:482 kasanreport+0x118/0x150 mm/kasan/report.c:595 INITLISTHEAD include/linux/list.h:46 [inline] listdelinit include/linux/list.h:296 [inline] rt6uncachedlistflushdev net/ipv6/route.c:191 [inline] rt6disableip+0x633/0x730 net/ipv6/route.c:5020 addrconfifdown+0x143/0x18a0 net/ipv6/addrconf.c:3853 addrconfnotify+0x1bc/0x1050 net/ipv6/addrconf.c:-1 notifiercallchain+0x19d/0x3a0 kernel/notifier.c:85 callnetdevicenotifiersextack net/core/dev.c:2268 [inline] callnetdevicenotifiers net/core/dev.c:2282 [inline] netifclosemany+0x29c/0x410 net/core/dev.c:1785 unregisternetdevicemanynotify+0xb50/0x2330 net/core/dev.c:12353 opsexitrtnllist net/core/netnamespace.c:187 [inline] opsundolist+0x3dc/0x990 net/core/netnamespace.c:248 cleanupnet+0x4de/0x7b0 net/core/netnamespace.c:696 processonework kernel/workqueue.c:3257 [inline] processscheduledworks+0xad1/0x1770 kernel/workqueue.c:3340 workerthread+0x8a0/0xda0 kernel/workqueue.c:3421 kthread+0x711/0x8a0 kernel/kthread.c:463 retfromfork+0x510/0xa50 arch/x86/kernel/process.c:158 retfromforkasm+0x1a/0x30 arch/x86/entry/entry64.S:246 </TASK>

Allocated by task 803: kasansavestack mm/kasan/common.c:57 [inline] kasansavetrack+0x3e/0x80 mm/kasan/common.c:78 unpoisonslabobject mm/kasan/common.c:340 [inline] __kasanslaballoc+0x6c/0x80 mm/kasan/common.c:366 kasanslaballoc include/linux/kasan.h:253 [inline] slabpostallochook mm/slub.c:4953 [inline] slaballocnode mm/slub.c:5263 [inline] kmemcacheallocnoprof+0x18d/0x6c0 mm/slub.c:5270 dstalloc+0x105/0x170 net/core/dst.c:89 ip6dstalloc net/ipv6/route.c:342 [inline] icmp6dstalloc+0x75/0x460 net/ipv6/route.c:3333 mldsendpack+0x683/0xe60 net/ipv6/mcast.c:1844 mldsendcr net/ipv6/mcast.c:2154 [inline] mldifcwork+0x83e/0xd60 net/ipv6/mcast.c:2693 processonework kernel/workqueue.c:3257 [inline] processscheduledworks+0xad1/0x1770 kernel/workqueue.c:3340 workerthread+0x8a0/0xda0 kernel/workqueue.c:3421 kthread+0x711/0x8a0 kernel/kthread.c:463 retfromfork+0x510/0xa50 arch/x86/kernel/process.c:158 retfromforkasm+0x1a/0x30 arch/x86/entry/entr ---truncated---

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/23xxx/CVE-2026-23004.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
78df76a065ae3b5dbcb9a29912adc02f697de498
Fixed
815db2363e51f0ef416947492d4dac5b7a520f56
Fixed
f24a52948c95e02facbca2b3b6eb5a225e27eb01
Fixed
722de945216144af7cd4d39bdeb936108d2595a7
Fixed
9a6f0c4d5796ab89b5a28a890ce542344d58bd69

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23004.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
3.6.0
Fixed
6.6.130
Type
ECOSYSTEM
Events
Introduced
6.7.0
Fixed
6.12.78
Type
ECOSYSTEM
Events
Introduced
6.13.0
Fixed
6.18.7

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2026-23004.json"