Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-53384

CVE-2026-53384: Linux Kernel Use-After-Free Vulnerability

CVE-2026-53384 is a use-after-free vulnerability in the Linux kernel's 8250_dw serial driver that occurs when clock notifier registration fails. This post covers the technical details, affected versions, impact, and mitigation.

Published:

CVE-2026-53384 Overview

CVE-2026-53384 is a use-after-free vulnerability in the Linux kernel's 8250_dw serial driver. The flaw resides in the dw8250_probe() function, which registers an 8250 port through serial8250_register_8250_port() and subsequently attempts to register a clock notifier. When clk_notifier_register() fails, the probe returns an error but leaves the 8250 port registered. The devm-allocated driver data is freed while the port still references it through the saved private_data and serial_in/serial_out callbacks. Any subsequent access to that port slot before a rebind constitutes a use-after-free condition affecting kernel memory integrity.

Critical Impact

A use-after-free in a registered serial port slot can lead to kernel memory corruption, potential privilege escalation, and system compromise on affected Linux systems.

Affected Products

  • Linux kernel builds including the 8250_dw (Synopsys DesignWare 8250) serial driver
  • Systems using DesignWare UART hardware with clock notifier support
  • Distributions shipping vulnerable kernel versions prior to the referenced stable commits

Discovery Timeline

  • 2026-07-19 - CVE-2026-53384 published to NVD
  • 2026-07-20 - Last updated in NVD database

Technical Details for CVE-2026-53384

Vulnerability Analysis

The vulnerability originates in the probe path of the 8250_dw driver. dw8250_probe() performs two sequential registration steps. First, it registers the serial port with serial8250_register_8250_port(), which stores driver-managed private data referenced through the port's private_data field and its serial_in/serial_out I/O callbacks. Second, if the device has a clock, the probe calls clk_notifier_register() to register a notifier.

When clk_notifier_register() fails, the probe function returns the error code directly without unwinding the earlier port registration. The corresponding serial8250_unregister_port() call exists only in dw8250_remove(), which the kernel does not invoke when probe fails. The port slot therefore remains occupied by a stale registration.

Because the driver data was allocated with the device-managed allocator (devm_*), the kernel automatically frees it once probe returns an error. The still-registered port continues to reference this freed memory through its callback pointers and private data. Subsequent access to the port slot, for example via /dev/ttyS* or /proc/tty/driver/serial, dereferences freed memory and triggers the use-after-free condition.

Root Cause

The root cause is an error-handling omission. The probe function lacks a cleanup step to call serial8250_unregister_port() on the clk_notifier_register() failure path. Combined with devm-managed lifetime of the driver's private data, the mismatch between port registration lifetime and private-data lifetime produces the dangling reference.

Attack Vector

Triggering the flaw requires the clk_notifier_register() call to fail during probe of a 8250_dw device. Any process or subsystem that reads from or writes to the residual port slot can then dereference the freed devm-allocated memory. The upstream fix, distributed across the referenced stable commits including 07ffe414, 10fc708b, 3d205fe8, 511d2b92, 778b9dda, ccdf4510, and d72650a4, calls serial8250_unregister_port() on the error path before returning.

No verified public exploit code is available. See the referenced kernel stable commits for the corrective patches.

Detection Methods for CVE-2026-53384

Indicators of Compromise

  • Kernel log entries showing dw8250 probe failures accompanied by clk_notifier_register errors followed by later oops or panic messages referencing 8250 port callbacks
  • KASAN or KFENCE reports flagging use-after-free reads or writes within serial8250_* or dw8250_* symbols
  • Unexpected kernel crashes when userspace opens or queries serial device nodes on affected hardware

Detection Strategies

  • Enable CONFIG_KASAN on test and staging kernels to surface use-after-free access in the 8250 port slot during boot and device rebind cycles
  • Audit installed kernel package versions against the fixed commit hashes referenced in the vendor advisories to identify unpatched systems
  • Correlate probe-failure log lines with subsequent serial subsystem faults using centralized logging

Monitoring Recommendations

  • Forward dmesg and journald kernel logs to a centralized log platform and alert on dw8250 probe errors
  • Track kernel package inventory across the fleet and flag hosts running versions prior to the fix
  • Monitor for unexpected reboots or kernel panics on hosts with DesignWare UART hardware

How to Mitigate CVE-2026-53384

Immediate Actions Required

  • Update affected Linux systems to a kernel version that includes one of the fix commits: 07ffe414, 10fc708b, 3d205fe8, 511d2b92, 778b9dda, ccdf4510, or d72650a4
  • Prioritize patching on embedded and server platforms that use DesignWare UART controllers and rely on clock notifier registration
  • Restrict access to serial device nodes (/dev/ttyS*) to trusted users until patched kernels are deployed

Patch Information

The upstream fix modifies dw8250_probe() to call serial8250_unregister_port() when clk_notifier_register() returns an error, ensuring the port slot is released before the devm-managed private data is freed. Refer to the Kernel Git Commit 07ffe41 and the additional stable branch backports listed in the CVE references for the exact source changes.

Workarounds

  • Disable the 8250_dw driver module on systems that do not require DesignWare UART support by blacklisting it in /etc/modprobe.d/
  • Restrict permissions on serial character devices to prevent unprivileged access to potentially stale port slots
  • Rebind or reboot affected devices after any observed probe failure to clear the vulnerable port state until a patched kernel is installed
bash
# Blacklist the 8250_dw module until a patched kernel is available
echo "blacklist 8250_dw" | sudo tee /etc/modprobe.d/blacklist-8250_dw.conf
sudo update-initramfs -u

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.