CVE-2026-43015
High · 7.8CVSS
7.8
EPSS
0.1%
Published
May 1, 2026
CISA due date
—
Cloudanix analysis
A flaw in a Linux network driver can let someone with local access crash the machine or possibly gain higher privileges if the vulnerable driver is removed or reloaded.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Patch
- Effort
- Low
- Patch risk
- Low
What it actually does
This is a Linux kernel use-after-free in the MACB Ethernet driver PCI glue removal path. During removal of the macb_pci driver or associated platform device, clock objects can be unregistered and freed while later runtime power-management resume logic still dereferences them through clk_prepare(). That stale pointer access can corrupt kernel memory or crash the system. Because the bug occurs in kernel context, successful exploitation could potentially affect confidentiality, integrity, and availability of the host, although exploitation requires local access and the ability to trigger the vulnerable driver/device removal path.
Why it matters to the business
Affected Linux systems using the MACB PCI Ethernet driver may be exposed to local denial-of-service or, in a worst case, local privilege escalation through kernel memory corruption. The highest operational concern is unplanned host crashes or instability during module unload, device removal, driver reload, hardware hotplug, or maintenance workflows. EPSS is very low and there is no known CISA KEV listing or ransomware association, so this should be prioritized based on whether the affected driver is present and reachable in production rather than treated as an internet-scale emergency.
How an attack unfolds
An attacker first needs local access to a system where the vulnerable Linux kernel includes the macb/macb_pci driver and the relevant PCI-backed MACB device or driver path is available. The attacker then triggers driver removal, module unload, or an equivalent device unbind/removal sequence that causes macb_remove() to unregister clock structures. During platform_device_unregister(), runtime power-management callbacks may still execute and call macb_runtime_resume(), which attempts to prepare a clock object that has already been freed. This creates a kernel use-after-free condition. In straightforward cases the result is a kernel oops, panic, or service disruption; a more advanced attacker may try to shape heap state around the freed clock object to convert the stale pointer dereference into controlled kernel memory corruption and potential privilege escalation.
How to fix it
Upgrade to a vendor-supported Linux kernel that includes the upstream fix for the MACB PCI clock-handling use-after-free in the driver removal path. No exact fixed package versions were provided in the input, so use the relevant distribution kernel security advisory, stable kernel release notes, or vendor errata to identify the first patched kernel for each platform. If the MACB PCI driver is not required, mitigate by disabling or blacklisting macb_pci/macb, preventing the module from loading, or removing unused hardware exposure. Also restrict module load/unload and device unbind operations to trusted administrators, enable kernel lockdown where appropriate, and avoid unnecessary driver reload or hotplug workflows on affected systems until patched.
How to confirm the fix worked
Confirm remediation by verifying that the running kernel version matches a vendor build containing the MACB PCI clock lifetime fix, then reboot into that kernel if required. Check whether the affected modules are present with tools such as lsmod and modinfo, and confirm whether macb_pci or macb is loaded on systems where the driver is not expected. On non-production test systems with comparable hardware, validate that controlled driver unload/reload or device unbind/bind operations no longer produce KASAN, kernel oops, panic, or clk_prepare/macb_runtime_resume warnings. For mitigations, confirm module blacklisting or policy controls actually prevent the driver from loading and prevent untrusted users from invoking module-management or driver-unbind actions.
Typical attack path
- Gain local access to an affected Linux system.
- Confirm the vulnerable kernel includes the MACB Ethernet driver and PCI glue component, such as macb and macb_pci.
- Trigger the vulnerable removal path through module unload, driver detach, PCI device unbind, or another local mechanism that invokes the MACB PCI driver removal logic.
- Cause runtime power-management resume handling to run after clock structures have been unregistered and freed.
- Exploit the resulting use-after-free to crash the kernel or attempt controlled kernel memory corruption for privilege escalation.
How to detect it
To assess possible prior exploitation or triggering, review kernel logs from journald, dmesg, syslog, crash dumps, pstore, and kdump/vmcore artifacts for use-after-free, KASAN, oops, panic, or call traces involving macb, macb_pci, clk_prepare, macb_runtime_resume, platform_device_unregister, or pci_device_remove. Review auditd or equivalent EDR telemetry for module-management activity, especially init_module, finit_module, delete_module, modprobe, rmmod, insmod, and writes to PCI driver bind/unbind sysfs paths near the time of crashes. Look for repeated unload/reload attempts of macb_pci, unexpected local users invoking module operations, privileged containers granted CAP_SYS_MODULE, or automation performing driver detach operations. Since no public exploit indicators or threat actors are known from the provided data, detection should focus on behavioral evidence of driver removal followed by kernel memory-safety errors or system crashes rather than fixed malware signatures.
- BUG: KASAN: use-after-free in clk_prepare
- clk_prepare+0x5a/0x60
- macb_runtime_resume
- macb_remove
- macb_probe
- macb_pci
- platform_device_unregister
- pci_device_remove
- __do_sys_delete_module
- delete_module
- rmmod macb_pci
- modprobe -r macb_pci
- rmmod macb
- modprobe -r macb
- /sys/bus/pci/drivers/macb_pci/unbind
- /sys/bus/pci/drivers/macb_pci/bind
- KASAN: use-after-free
- kernel BUG
- kernel panic
- Oops:
What your security team should do
- Inventory Linux systems for loaded or available macb and macb_pci kernel modules, prioritizing systems with matching hardware, virtualization test rigs, embedded platforms, or custom kernels.
- Patch affected systems with vendor-supported kernels containing the MACB PCI removal-path fix; prioritize hosts where local users, containers with elevated privileges, build systems, or device-management automation can influence kernel module or device removal.
- If the driver is unused, blacklist or disable macb_pci/macb and verify it is not loaded after reboot.
- Restrict CAP_SYS_MODULE, module unload, PCI driver unbind, and privileged container access; review sudo rules and automation that can run modprobe, rmmod, insmod, or write to sysfs driver bind/unbind files.
- Monitor kernel logs and audit logs for driver unloads, delete_module syscalls, device unbind activity, kernel oopses, KASAN reports, or crashes involving macb, macb_pci, clk_prepare, or macb_runtime_resume.
- Because EPSS is low, no exploit maturity is reported, and this is not in KEV, handle through normal kernel patch governance unless affected systems expose local multi-user or high-risk administrative surfaces.
The record
In the Linux kernel, the following vulnerability has been resolved: net: macb: fix clk handling on PCI glue driver removal platform_device_unregister() may still want to use the registered clks during runtime resume callback. Note that there is a commit d82d5303c4c5 ("net: macb: fix use after free on rmmod") that addressed the similar problem of clk vs platform device unregistration but just moved the bug to another place. Save the pointers to clks into local variables for reuse after platform device is unregistered. BUG: KASAN: use-after-free in clk_prepare+0x5a/0x60 Read of size 8 at addr ffff888104f85e00 by task modprobe/597 CPU: 2 PID: 597 Comm: modprobe Not tainted 6.1.164+ #114 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS rel-1.16.1-0-g3208b098f51a-prebuilt.qemu.org 04/01/2014 Call Trace: <TASK> dump_stack_lvl+0x8d/0xba print_report+0x17f/0x496 kasan_report+0xd9/0x180 clk_prepare+0x5a/0x60 macb_runtime_resume+0x13d/0x410 [macb] pm_generic_runtime_resume+0x97/0xd0 __rpm_callback+0xc8/0x4d0 rpm_callback+0xf6/0x230 rpm_resume+0xeeb/0x1a70 __pm_runtime_resume+0xb4/0x170 bus_remove_device+0x2e3/0x4b0 device_del+0x5b3/0xdc0 platform_device_del+0x4e/0x280 platform_device_unregister+0x11/0x50 pci_device_remove+0xae/0x210 device_remove+0xcb/0x180 device_release_driver_internal+0x529/0x770 driver_detach+0xd4/0x1a0 bus_remove_driver+0x135/0x260 driver_unregister+0x72/0xb0 pci_unregister_driver+0x26/0x220 __do_sys_delete_module+0x32e/0x550 do_syscall_64+0x35/0x80 entry_SYSCALL_64_after_hwframe+0x6e/0xd8 </TASK> Allocated by task 519: kasan_save_stack+0x2c/0x50 kasan_set_track+0x21/0x30 __kasan_kmalloc+0x8e/0x90 __clk_register+0x458/0x2890 clk_hw_register+0x1a/0x60 __clk_hw_register_fixed_rate+0x255/0x410 clk_register_fixed_rate+0x3c/0xa0 macb_probe+0x1d8/0x42e [macb_pci] local_pci_probe+0xd7/0x190 pci_device_probe+0x252/0x600 really_probe+0x255/0x7f0 __driver_probe_device+0x1ee/0x330 driver_probe_device+0x4c/0x1f0 __driver_attach+0x1df/0x4e0 bus_for_each_dev+0x15d/0x1f0 bus_add_driver+0x486/0x5e0 driver_register+0x23a/0x3d0 do_one_initcall+0xfd/0x4d0 do_init_module+0x18b/0x5a0 load_module+0x5663/0x7950 __do_sys_finit_module+0x101/0x180 do_syscall_64+0x35/0x80 entry_SYSCALL_64_after_hwframe+0x6e/0xd8 Freed by task 597: kasan_save_stack+0x2c/0x50 kasan_set_track+0x21/0x30 kasan_save_free_info+0x2a/0x50 __kasan_slab_free+0x106/0x180 __kmem_cache_free+0xbc/0x320 clk_unregister+0x6de/0x8d0 macb_remove+0x73/0xc0 [macb_pci] pci_device_remove+0xae/0x210 device_remove+0xcb/0x180 device_release_driver_internal+0x529/0x770 driver_detach+0xd4/0x1a0 bus_remove_driver+0x135/0x260 driver_unregister+0x72/0xb0 pci_unregister_driver+0x26/0x220 __do_sys_delete_module+0x32e/0x550 do_syscall_64+0x35/0x80 entry_SYSCALL_64_after_hwframe+0x6e/0xd8
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-119338 Tesseract is an open source OCR engine. CWE-416
- CVE-2026-119332 Ladybird is a truly independent web browser. CWE-416
- CVE-2026-119116 A use-after-free and double-free issue in the SetClient command handler of the… CWE-416
- CVE-2026-119378 SQLite before 3.54.0 contains a use-after-free vulnerability in the R-Tree extension that… CWE-416
- CVE-2026-119372 SQLite before 3.54.0 built with FTS3/FTS4 and SQLITE_ENABLE_FTS3_PARENTHESIS contains a… CWE-416
- CVE-2026-65586 Software installed and run as a non-privileged user may conduct improper GPU system calls… CWE-416
- CVE-2026-15466 Software installed and run as a non-privileged user may conduct improper GPU system calls… CWE-416
- CVE-2026-76031 Use after free in Input in Google Chrome prior to 156.0.8078.79 allowed a remote attacker… CWE-416