CVE-2021-47459CWE-416

CVE-2021-47459

High · published May 22, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
12.6
In the wild
Unconfirmed
What it is

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

can: j1939: j1939_netdev_start(): fix UAF for rx_kref of j1939_priv

It will trigger UAF for rx_kref of j1939_priv as following.

cpu0 cpu1

j1939_sk_bind(socket0, ndev0, ...)

j1939_netdev_start

j1939_sk_bind(socket1, ndev0, ...)

j1939_netdev_start

j1939_priv_set

j1939_priv_get_by_ndev_locked

j1939_jsk_add

.....

j1939_netdev_stop

kref_put_lock(&priv->rx_kref, ...)

kref_get(&priv->rx_kref, ...)

REFCOUNT_WARN("addition on 0;...")

====================================================

refcount_t: addition on 0; use-after-free.

WARNING: CPU: 1 PID: 20874 at lib/refcount.c:25 refcount_warn_saturate+0x169/0x1e0

RIP: 0010:refcount_warn_saturate+0x169/0x1e0

Call Trace:

j1939_netdev_start+0x68b/0x920

j1939_sk_bind+0x426/0xeb0

? security_socket_bind+0x83/0xb0

The rx_kref's kref_get() and kref_put() should use j1939_netdev_lock to

protect.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00226 · 12.6th percentile
Weakness
CWE-416 · Use After Free
Published
2024-05-22T11:15Z
Affected products (9)
ProductVersionsFixed in
linux/linux_kernel≥ 5.4, < 5.4.1565.4.156
linux/linux_kernel≥ 5.5, < 5.10.765.10.76
linux/linux_kernel≥ 5.11, < 5.14.155.14.15
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (8)
EPSS history
Timeline
  • 22 MAY 06:23Z
    can: j1939: j1939_netdev_start(): fix UAF for rx_kref of j1939_priv
    cvelistv5