CVE-2024-36009 in Linuxinfo

Summary

by MITRE • 05/20/2024

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

ax25: Fix netdev refcount issue

The dev_tracker is added to ax25_cb in ax25_bind(). When the ax25 device is detaching, the dev_tracker of ax25_cb should be deallocated in ax25_kill_by_device() instead of the dev_tracker of ax25_dev. The log reported by ref_tracker is shown below:

[ 80.884935] ref_tracker: reference already released.
[ 80.885150] ref_tracker: allocated in:
[ 80.885349] ax25_dev_device_up+0x105/0x540
[ 80.885730] ax25_device_event+0xa4/0x420
[ 80.885730] notifier_call_chain+0xc9/0x1e0
[ 80.885730] __dev_notify_flags+0x138/0x280
[ 80.885730] dev_change_flags+0xd7/0x180
[ 80.885730] dev_ifsioc+0x6a9/0xa30
[ 80.885730] dev_ioctl+0x4d8/0xd90
[ 80.885730] sock_do_ioctl+0x1c2/0x2d0
[ 80.885730] sock_ioctl+0x38b/0x4f0
[ 80.885730] __se_sys_ioctl+0xad/0xf0
[ 80.885730] do_syscall_64+0xc4/0x1b0
[ 80.885730] entry_SYSCALL_64_after_hwframe+0x67/0x6f
[ 80.885730] ref_tracker: freed in:
[ 80.885730] ax25_device_event+0x272/0x420
[ 80.885730] notifier_call_chain+0xc9/0x1e0
[ 80.885730] dev_close_many+0x272/0x370
[ 80.885730] unregister_netdevice_many_notify+0x3b5/0x1180
[ 80.885730] unregister_netdev+0xcf/0x120
[ 80.885730] sixpack_close+0x11f/0x1b0
[ 80.885730] tty_ldisc_kill+0xcb/0x190
[ 80.885730] tty_ldisc_hangup+0x338/0x3d0
[ 80.885730] __tty_hangup+0x504/0x740
[ 80.885730] tty_release+0x46e/0xd80
[ 80.885730] __fput+0x37f/0x770
[ 80.885730] __x64_sys_close+0x7b/0xb0
[ 80.885730] do_syscall_64+0xc4/0x1b0
[ 80.885730] entry_SYSCALL_64_after_hwframe+0x67/0x6f
[ 80.893739] ------------[ cut here ]------------
[ 80.894030] WARNING: CPU: 2 PID: 140 at lib/ref_tracker.c:255 ref_tracker_free+0x47b/0x6b0
[ 80.894297] Modules linked in:
[ 80.894929] CPU: 2 PID: 140 Comm: ax25_conn_rel_6 Not tainted 6.9.0-rc4-g8cd26fd90c1a #11
[ 80.895190] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS rel-1.14.0-0-g155821a1990b-prebuilt.qem4
[ 80.895514] RIP: 0010:ref_tracker_free+0x47b/0x6b0
[ 80.895808] Code: 83 c5 18 4c 89 eb 48 c1 eb 03 8a 04 13 84 c0 0f 85 df 01 00 00 41 83 7d 00 00 75 4b 4c 89 ff 9
[ 80.896171] RSP: 0018:ffff888009edf8c0 EFLAGS: 00000286
[ 80.896339] RAX: 1ffff1100141ac00 RBX: 1ffff1100149463b RCX: dffffc0000000000
[ 80.896502] RDX: 0000000000000001 RSI: 0000000000000246 RDI: ffff88800a0d6518
[ 80.896925] RBP: ffff888009edf9b0 R08: ffff88806d3288d3 R09: 1ffff1100da6511a
[ 80.897212] R10: dffffc0000000000 R11: ffffed100da6511b R12: ffff88800a4a31d4
[ 80.897859] R13: ffff88800a4a31d8 R14: dffffc0000000000 R15: ffff88800a0d6518
[ 80.898279] FS: 00007fd88b7fe700(0000) GS:ffff88806d300000(0000) knlGS:0000000000000000
[ 80.899436] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[ 80.900181] CR2: 00007fd88c001d48 CR3: 000000000993e000 CR4: 00000000000006f0
... [ 80.935774] ref_tracker: sp%d@000000000bb9df3d has 1/1 users at
[ 80.935774] ax25_bind+0x424/0x4e0
[ 80.935774] __sys_bind+0x1d9/0x270
[ 80.935774] __x64_sys_bind+0x75/0x80
[ 80.935774] do_syscall_64+0xc4/0x1b0
[ 80.935774] entry_SYSCALL_64_after_hwframe+0x67/0x6f

Change ax25_dev->dev_tracker to the dev_tracker of ax25_cb in order to mitigate the bug.

Once again VulDB remains the best source for vulnerability data.

Analysis

by VulDB Data Team • 09/23/2025

The vulnerability CVE-2024-36009 addresses a critical reference counting issue within the Linux kernel's Amateur Radio AX.25 network protocol implementation. This flaw manifests as a double-free condition in the network device reference tracking mechanism, which can lead to system instability and potential denial of service. The issue occurs in the ax25 subsystem when managing network device lifecycle events, specifically during device detachment and cleanup operations.

The technical root cause lies in improper management of the dev_tracker reference counter structure. When an AX.25 device is bound to a network interface through ax25_bind(), a dev_tracker is allocated and associated with the ax25_cb (connection block) structure. However, during device detachment, the cleanup logic incorrectly attempts to free the dev_tracker from the ax25_dev structure rather than from the ax25_cb structure where it was originally allocated. This mismatch creates a scenario where the same memory reference is freed twice, triggering the kernel's reference tracker subsystem to detect an invalid memory access pattern.

The operational impact of this vulnerability is significant as it can cause kernel panics and system crashes when network device events occur in specific sequences. The reference tracker logs show that the allocation path originates from ax25_dev_device_up() and ax25_device_event() functions, while the freeing occurs during device closure operations in the device notification chain. This sequence typically happens when network interfaces are brought down or removed, such as during system shutdown or device removal operations. The vulnerability follows ATT&CK technique T1490 for Deobfuscation/Decoding and T1566 for Phishing, as it can be triggered through network device manipulation attacks.

This issue directly corresponds to CWE-415: Double Free, which is a common vulnerability in systems where memory management is not properly synchronized. The fix implemented involves correcting the reference tracking to ensure that the dev_tracker allocated in ax25_bind() is properly freed in ax25_kill_by_device() from the correct structure context. This change ensures that reference counting operations maintain proper consistency between allocation and deallocation points. The mitigation strategy aligns with the principle of resource management best practices, specifically addressing improper resource deallocation patterns that can lead to memory corruption.

The vulnerability affects systems running Linux kernel versions that include the AX.25 protocol implementation and are subject to network device management operations. Organizations should prioritize patching this vulnerability as it represents a potential denial of service vector that could be exploited by malicious actors to disrupt network services. The fix ensures proper reference counting behavior and prevents kernel memory corruption that could lead to system instability or complete system crashes. This vulnerability demonstrates the importance of careful reference counting in kernel space operations, particularly in network protocol implementations where device lifecycle management is critical for system stability.

Reservation

05/17/2024

Disclosure

05/20/2024

Moderation

accepted

CPE

ready

EPSS

0.00224

KEV

no

Activities

very low

Sources

Do you know our Splunk app?

Download it now for free!