CVE-2024-40910

CVE-2024-40910

High · published July 12, 2024

CVSS v3.1
8.8
EPSS
0%
Percentile
37.8
In the wild
Unconfirmed
What it is

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

ax25: Fix refcount imbalance on inbound connections

When releasing a socket in ax25_release(), we call netdev_put() to

decrease the refcount on the associated ax.25 device. However, the

execution path for accepting an incoming connection never calls

netdev_hold(). This imbalance leads to refcount errors, and ultimately

to kernel crashes.

A typical call trace for the above situation will start with one of the

following errors:

refcount_t: decrement hit 0; leaking memory.

refcount_t: underflow; use-after-free.

And will then have a trace like:

Call Trace:

<TASK>

? show_regs+0x64/0x70

? __warn+0x83/0x120

? refcount_warn_saturate+0xb2/0x100

? report_bug+0x158/0x190

? prb_read_valid+0x20/0x30

? handle_bug+0x3e/0x70

? exc_invalid_op+0x1c/0x70

? asm_exc_invalid_op+0x1f/0x30

? refcount_warn_saturate+0xb2/0x100

? refcount_warn_saturate+0xb2/0x100

ax25_release+0x2ad/0x360

__sock_release+0x35/0xa0

sock_close+0x19/0x20

[...]

On reboot (or any attempt to remove the interface), the kernel gets

stuck in an infinite loop:

unregister_netdevice: waiting for ax0 to become free. Usage count = 0

This patch corrects these issues by ensuring that we call netdev_hold()

and ax25_dev_hold() for new connections in ax25_accept(). This makes the

logic leading to ax25_accept() match the logic for ax25_bind(): in both

cases we increment the refcount, which is ultimately decremented in

ax25_release().

The record
Technical detail
CVSS v3.1
8.8 · HIGH
Vector
CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00446 · 37.8th percentile
Published
2024-07-12T17:15Z
Affected products (5)
ProductVersionsFixed in
linux/linux_kernel≥ 5.18, < 6.1.956.1.95
linux/linux_kernel≥ 6.2, < 6.6.356.6.35
linux/linux_kernel≥ 6.7, < 6.9.66.9.6
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (9)
EPSS history
Timeline
  • 12 JUL 12:20Z
    ax25: Fix refcount imbalance on inbound connections
    cvelistv5