Description

A newly fixed vulnerability, tracked as CVE-2025-68260, marks a historic milestone as the first formally assigned CVE affecting Rust code in the mainline Linux kernel. The flaw was reported by Linux kernel maintainer Greg Kroah-Hartman and impacts the Android Binder driver rewritten in Rust, specifically the file drivers/android/binder/node.rs. While Rust is widely adopted in the kernel for its strong memory safety guarantees, this issue demonstrates that unsafe code blocks and concurrency assumptions can still introduce serious risks. In worst-case scenarios, the vulnerability could trigger kernel crashes, leading to system instability and denial-of-service conditions, particularly on systems relying heavily on Binder-based inter-process communication. At the technical level, the vulnerability arises from a race condition in the Node::release function. The implementation assumed that a NodeDeath object would never be present in a “foreign” linked list. However, under certain concurrent execution paths, the same list element could be manipulated simultaneously by multiple threads. The original logic acquired a lock, moved list elements into a temporary stack-based list, released the lock, and then processed the local list. If another thread performed an unsafe removal from the original list during this window, the prev/next pointers could become corrupted, resulting in memory corruption. One documented failure manifested as an “Unable to handle kernel paging request” error originating from the rust_binder module, clearly demonstrating the kernel-level impact of the bug. The Linux kernel CVE team confirmed that the vulnerability was introduced in Linux kernel version 6.18 and has been fixed in versions 6.18.1 and 6.19-rc1. The remediation involved rewriting the Node::release logic to extract elements directly from the original list while maintaining proper synchronization, completely removing the unsafe intermediate list handling. Kernel maintainers strongly recommend upgrading to a current stable kernel release, as individual patches are not tested in isolation and selective backporting is not officially supported. This incident underscores that while Rust significantly reduces entire classes of memory safety issues, kernel-level concurrency and unsafe operations still require rigorous design, review, and testing, especially in performance-critical subsystems like Android Binder.