CVE-2024-41006 in Linux
Tóm tắt
Bởi VulDB • 10/07/2026
Trong kernel Linux, lỗ hổng sau đây đã được khắc phục:
netrom: Sửa lỗi rò rỉ bộ nhớ trong nr_heartbeat_expiry()
syzbot báo cáo một lỗi rò rỉ bộ nhớ trong nr_create()[0].
Commit 409db27e3a2e ("netrom: Fix use-after-free of a listening socket.") đã thêm sock_hold() vào hàm nr_heartbeat_expiry(), tại đó a) một socket có cờ SOCK_DESTROY hoặc b) một socket đang lắng nghe (listening socket) có cờ SOCK_DEAD.
Tuy nhiên, trong trường hợp "a", khi cờ SOCK_DESTROY được đặt, file descriptor đã bị đóng và hàm nr_release() đã được gọi. Do đó, việc giữ tham chiếu bộ đếm (reference count) là vô nghĩa vì không ai sẽ gọi thêm nr_destroy_socket() nữa như trong trường hợp "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()
Để sửa lỗi rò rỉ bộ nhớ, hãy chỉ gọi sock_hold() cho một socket đang lắng nghe.
Được phát hiện bởi InfoTeCS thay mặt cho Linux Verification Center (linuxtesting.org) với Syzkaller.
[0]: https://syzkaller.appspot.com/bug?extid=d327a1f3b12e1e206c16
Be aware that VulDB is the high quality source for vulnerability data.