ZeroHour

CVE-2026-89441

niche

Use-After-Free in Linux Kernel via-sdmmc Driver on Device Removal

CVSS 3.1
7.8 high
EPSS
Published
()
Modified
AI analysis

A use-after-free exists in the Linux kernel's VIA SD/MMC host controller driver (drivers/mmc/host/via-sdmmc.c): card-detect work (carddet_work) already queued by the interrupt handler can still run after via_sd_remove() returns, at which point the host structure and its MMIO base may have been freed, so the callback dereferences freed memory. The flaw is triggered by device removal or driver unbind on VIA-chipset hardware while a card-detect interrupt is pending, which requires local access with low privileges. Successful exploitation can yield kernel memory corruption with high impact on confidentiality, integrity, and availability (CVSS 3.1: 7.8). Only systems actually built on the affected VIA SD/MMC controller hardware are exposed by this code path; the flaw was found by static analysis and confirmed by code review, with no public PoC, no KEV listing, and no known exploitation.

What to do: Apply kernel security updates once your distro backports the fix, which cancels carddet_work after freeing the IRQ and before cancelling finish_bh_work, then re-masks the interrupt after via_reset_pcictrl(). Check whether VIA SD/MMC host controller hardware is present (e.g., via lspci) — systems without the device are not reachable through this code path. As a mitigation on affected hosts, restrict local privileged access and the ability to unbind the driver or unload modules.

Affected
Linux kernel (VIA SD/MMC host controller driver, via-sdmmc)All kernel versions containing the vulnerable card-detect work handling prior to the fixing commit; no specific affected or fixed version numbers were provided
Estimated exposure
nicheLikely on the order of thousands to low tens of thousands of systems (aging VIA-chipset netbooks and industrial/embedded PCs still running vulnerable kernels) — The driver binds only to VIA VX800/VX855-era PCI IDs, hardware that shipped mainly in 2008–2012 netbooks and embedded boards and is now largely retired; no reliable install counts or internet-exposed scan data exist for this device class.

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: mmc: via-sdmmc: cancel card-detect work on remove Disabling the device interrupt and freeing the IRQ prevents new card-detect work from being queued, but carddet_work already queued by the handler can still run after via_sd_remove() returns. via_sdc_card_detect() recovers the host through container_of() and dereferences its MMIO base; once remove() returns the host can be freed, so that work would touch freed memory. Cancel carddet_work after freeing the IRQ and before cancelling finish_bh_work, which the card-detect handler can also queue. carddet_work can re-enable the interrupt through via_reset_pcictrl(); mask it again afterwards. This issue was found by an in-house static analysis tool and confirmed by manual code review.

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.