CVE-2024-41006CWE-401

CVE-2024-41006

Medium · published July 12, 2024

CVSS v3.1
5.5
EPSS
0%
Percentile
14.5
In the wild
Unconfirmed
What it is

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

netrom: Fix a memory leak in nr_heartbeat_expiry()

syzbot reported a memory leak in nr_create() [0].

Commit 409db27e3a2e ("netrom: Fix use-after-free of a listening socket.")

added sock_hold() to the nr_heartbeat_expiry() function, where

a) a socket has a SOCK_DESTROY flag or

b) a listening socket has a SOCK_DEAD flag.

But in the case "a," when the SOCK_DESTROY flag is set, the file descriptor

has already been closed and the nr_release() function has been called.

So it makes no sense to hold the reference count because no one will

call another nr_destroy_socket() and put it as in the case "b."

nr_connect

nr_establish_data_link

nr_start_heartbeat

nr_release

switch (nr->state)

case NR_STATE_3

nr->state = NR_STATE_2

sock_set_flag(sk, SOCK_DESTROY);

nr_rx_frame

nr_process_rx_frame

switch (nr->state)

case NR_STATE_2

nr_state2_machine()

nr_disconnect()

nr_sk(sk)->state = NR_STATE_0

sock_set_flag(sk, SOCK_DEAD)

nr_heartbeat_expiry

switch (nr->state)

case NR_STATE_0

if (sock_flag(sk, SOCK_DESTROY) ||

(sk->sk_state == TCP_LISTEN

&& sock_flag(sk, SOCK_DEAD)))

sock_hold() // ( !!! )

nr_destroy_socket()

To fix the memory leak, let's call sock_hold() only for a listening socket.

Found by InfoTeCS on behalf of Linux Verification Center

(linuxtesting.org) with Syzkaller.

[0]: https://syzkaller.appspot.com/bug?extid=d327a1f3b12e1e206c16

The record
Technical detail
CVSS v3.1
5.5 · MEDIUM
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H
CVSS v4.0
Not supplied
EPSS
0.00242 · 14.5th percentile
Weakness
CWE-401 · Missing Release of Memory after Effective Lifetime
Published
2024-07-12T17:15Z
Affected products (11)
ProductVersionsFixed in
linux/linux_kernel≥ 4.19.272, < 4.19.3174.19.317
linux/linux_kernel≥ 5.4.231, < 5.4.2795.4.279
linux/linux_kernel≥ 5.10.166, < 5.10.2215.10.221
linux/linux_kernel≥ 5.15.91, < 5.15.1625.15.162
linux/linux_kernel≥ 6.1.9, < 6.1.966.1.96
linux/linux_kernel≥ 6.2, < 6.6.366.6.36
linux/linux_kernel≥ 6.7, < 6.9.76.9.7
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (20)
https://git.kernel.org/stable/c/0b9130247f3b6a1122478471ff0e014ea96bb735 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/280cf1173726a7059b628c610c71050d5c0b6937 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/5391f9db2cab5ef1cb411be1ab7dbec728078fba · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/a02fd5d775cf9787ee7698c797e20f2fa13d2e2b · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/b6ebe4fed73eedeb73f4540f8edc4871945474c8 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/d377f5a28332954b19e373d36823e59830ab1712 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/d616876256b38ecf9a1a1c7d674192c5346bc69c · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/e07a9c2a850cdebf625e7a1b8171bd23a8554313 · 416baaa9-dc9f-4396-8d5f-8c081fb06d67https://git.kernel.org/stable/c/0b9130247f3b6a1122478471ff0e014ea96bb735 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/280cf1173726a7059b628c610c71050d5c0b6937 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/5391f9db2cab5ef1cb411be1ab7dbec728078fba · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/a02fd5d775cf9787ee7698c797e20f2fa13d2e2b · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/b6ebe4fed73eedeb73f4540f8edc4871945474c8 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/d377f5a28332954b19e373d36823e59830ab1712 · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/d616876256b38ecf9a1a1c7d674192c5346bc69c · af854a3a-2127-422b-91ae-364da2661108https://git.kernel.org/stable/c/e07a9c2a850cdebf625e7a1b8171bd23a8554313 · af854a3a-2127-422b-91ae-364da2661108https://lists.debian.org/debian-lts-announce/2025/01/msg00001.html · af854a3a-2127-422b-91ae-364da2661108https://cert-portal.siemens.com/productcert/html/ssa-265688.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5ehttps://cert-portal.siemens.com/productcert/html/ssa-355557.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5ehttps://cert-portal.siemens.com/productcert/html/ssa-613116.html · 0b142b55-0307-4c5a-b3c9-f314f3fb7c5e
EPSS history
Timeline
  • 12 JUL 12:44Z
    netrom: Fix a memory leak in nr_heartbeat_expiry()
    cvelistv5