ZeroHour

CVE-2026-81008

mass

Use-After-Free in Linux Kernel Interconnect icc_get()/of_icc_get_by_index() Error Path

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

The Linux kernel's interconnect (ICC) framework contains a slab use-after-free in icc_get() and of_icc_get_by_index(): when the kasprintf() allocation for path->name fails, the error path calls kfree(path) on a path object whose requests were already linked into interconnect nodes' req_list via hlist_add_head(), leaving dangling hlist pointers behind. A later call to icc_get() or icc_set_bw() that traverses or modifies those corrupted lists triggers a kernel slab use-after-free, as confirmed by the KASAN report reproduced via debugfs. Exploitation requires local code execution plus the ability to force the allocation to fail (e.g., through induced kernel memory pressure), but successful corruption of these kernel linked lists could plausibly be developed into privilege escalation — consistent with the CVSS 3.1 score of 7.8 (AV:L/PR:L, high impact to confidentiality, integrity, and availability). Affected systems are those running a kernel containing the buggy interconnect code, which is most relevant to ARM/ARM64 SoC-based platforms (smartphones, tablets, and embedded Linux devices) that actually use the interconnect framework. No public proof of concept is known and the flaw is not listed in CISA's KEV catalog.

What to do: Upgrade to a kernel containing the fix, which replaces kfree(path) with icc_put(path) (safely removing requests from the req_list and dropping provider references) and releases the icc_lock mutex before teardown to avoid deadlock. Android and embedded vendors should pull the fix into their device trees and ship updated kernels. Because exploitation requires local access combined with a forced allocation failure, prioritize patching multi-user or otherwise high-risk hosts, and watch kernel logs for KASAN slab-use-after-free reports in path_find()/icc_get() as an indicator of attempted abuse.

Affected
Linux kernel (interconnect/ICC subsystem, icc_get() and of_icc_get_by_index())
Estimated exposure
masslikely hundreds of millions of devices (Android phones and ARM/ARM64 SoC-based embedded Linux systems running affected kernels) — clearly an estimate — The interconnect framework is compiled in on widely shipped ARM SoC platforms (e.g., Qualcomm-based Android devices and other embedded boards) and the affected Linux kernel code has been distributed across the global Android and…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

In the Linux kernel, the following vulnerability has been resolved: interconnect: Fix use after free in icc_get() and of_icc_get_by_index() In of_icc_get_by_index() and icc_get(), if the dynamic allocation for path->name fails via kasprintf(), the error handling path directly calls kfree(path) to free the path object and returns an error. However, prior to this point, path_find() calls path_init(), which already links the path's requests into the req_list of the respective interconnect nodes via hlist_add_head(). Directly invoking kfree(path) leaves dangling pointers in the hlist. A subsequent call to icc_get() or icc_set_bw() will traverse or modify these corrupted lists, triggering a slab use afterfree. KASAN report showing the vulnerability when reproducing via debugfs: BUG: KASAN: slab-use-after-free in path_find+0x6f8/0xcfc Write of size 8 at addr fff000000d43f748 by task sh/1 ... Call trace: kasan_report+0xac/0xfc path_find+0x6f8/0xcfc icc_get+0x148/0x380 icc_get_set+0xf8/0x2d0 ... Freed by task 1: kfree+0x1a0/0x4a4 icc_get+0x2cc/0x380 icc_get_set+0xf8/0x2d0 Fix this by replacing kfree(path) with the proper teardown function, icc_put(path), which safely removes the requests from the req_list using hlist_del() and drops the provider usage references before freeing the memory. Additionally, in icc_get(), ensure that the icc_lock mutex is released prior to calling icc_put(path) to avoid a deadlock, as icc_put() internally acquires the same lock.

Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

In the news

No ingested article mentions this CVE yet.