CVE-2026-23194

rust_binder: correctly handle FDA objects of length zero

published February 14, 2026

CVSS
—
EPSS
0%
Percentile
2.5
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

rust_binder: correctly handle FDA objects of length zero

Fix a bug where an empty FDA (fd array) object with 0 fds would cause an

out-of-bounds error. The previous implementation used `skip == 0` to

mean "this is a pointer fixup", but 0 is also the correct skip length

for an empty FDA. If the FDA is at the end of the buffer, then this

results in an attempt to write 8-bytes out of bounds. This is caught and

results in an EINVAL error being returned to userspace.

The pattern of using `skip == 0` as a special value originates from the

C-implementation of Binder. As part of fixing this bug, this pattern is

replaced with a Rust enum.

I considered the alternate option of not pushing a fixup when the length

is zero, but I think it's cleaner to just get rid of the zero-is-special

stuff.

The root cause of this bug was diagnosed by Gemini CLI on first try. I

used the following prompt:

> There appears to be a bug in @drivers/android/binder/thread.rs where

> the Fixups oob bug is triggered with 316 304 316 324. This implies

> that we somehow ended up with a fixup where buffer A has a pointer to

> buffer B, but the pointer is located at an index in buffer A that is

> out of bounds. Please investigate the code to find the bug. You may

> compare with @drivers/android/binder.c that implements this correctly.

The record
Technical detail
CVSS
Not scored
CVSS v4.0
Not supplied
EPSS
0.00131 · 2.5th percentile
Published
2026-02-14T16:27Z
EPSS history
Timeline
  • 14 FEB 16:27Z
    rust_binder: correctly handle FDA objects of length zero
    cvelistv5