CVE-2025-21756 vsock: Keep the binding until socket destruction
A use-after-free vulnerability in the Linux kernel vsock subsystem allows local attackers to execute arbitrary code or escalate privileges.
- Exploited in the wild
- Not known
- Login needed
- Any signed-in user
- Attackable
- Local or same network only
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2025-21756?
CVE-2025-21756 is a high-severity use after free vulnerability in Linux kernel, published on 27 Feb 2025. It can only be exploited from the same machine or local network, with no action from the victim.
Official description
In the Linux kernel, the following vulnerability has been resolved:
vsock: Keep the binding until socket destruction
Preserve sockets bindings; this includes both resulting from an explicit bind() and those implicitly bound through autobind during connect().
Prevents socket unbinding during a transport reassignment, which fixes a use-after-free:
1. vsock_create() (refcnt=1) calls vsock_insert_unbound() (refcnt=2) 2. transport->release() calls vsock_remove_bound() without checking if sk was bound and moved to bound list (refcnt=1) 3. vsock_bind() assumes sk is in unbound list and before __vsock_insert_bound(vsock_bound_sockets()) calls __vsock_remove_bound() which does: list_del_init(&vsk->bound_table); // nop sock_put(&vsk->sk); // refcnt=0
BUG: KASAN: slab-use-after-free in __vsock_bind+0x62e/0x730 Read of size 4 at addr ffff88816b46a74c by task a.out/2057 dump_stack_lvl+0x68/0x90 print_report+0x174/0x4f6 kasan_report+0xb9/0x190 __vsock_bind+0x62e/0x730 vsock_bind+0x97/0xe0 __sys_bind+0x154/0x1f0 __x64_sys_bind+0x6e/0xb0 do_syscall_64+0x93/0x1b0 entry_SYSCALL_64_after_hwframe+0x76/0x7e
Allocated by task 2057: kasan_save_stack+0x1e/0x40 kasan_save_track+0x10/0x30 __kasan_slab_alloc+0x85/0x90 kmem_cache_alloc_noprof+0x131/0x450 sk_prot_alloc+0x5b/0x220 sk_alloc+0x2c/0x870 __vsock_create.constprop.0+0x2e/0xb60 vsock_create+0xe4/0x420 __sock_create+0x241/0x650 __sys_socket+0xf2/0x1a0 __x64_sys_socket+0x6e/0xb0 do_syscall_64+0x93/0x1b0 entry_SYSCALL_64_after_hwframe+0x76/0x7e
Freed by task 2057: kasan_save_stack+0x1e/0x40 kasan_save_track+0x10/0x30 kasan_save_free_info+0x37/0x60 __kasan_slab_free+0x4b/0x70 kmem_cache_free+0x1a1/0x590 __sk_destruct+0x388/0x5a0 __vsock_bind+0x5e1/0x730 vsock_bind+0x97/0xe0 __sys_bind+0x154/0x1f0 __x64_sys_bind+0x6e/0xb0 do_syscall_64+0x93/0x1b0 entry_SYSCALL_64_after_hwframe+0x76/0x7e
refcount_t: addition on 0; use-after-free. WARNING: CPU: 7 PID: 2057 at lib/refcount.c:25 refcount_warn_saturate+0xce/0x150 RIP: 0010:refcount_warn_saturate+0xce/0x150 __vsock_bind+0x66d/0x730 vsock_bind+0x97/0xe0 __sys_bind+0x154/0x1f0 __x64_sys_bind+0x6e/0xb0 do_syscall_64+0x93/0x1b0 entry_SYSCALL_64_after_hwframe+0x76/0x7e
refcount_t: underflow; use-after-free. WARNING: CPU: 7 PID: 2057 at lib/refcount.c:28 refcount_warn_saturate+0xee/0x150 RIP: 0010:refcount_warn_saturate+0xee/0x150 vsock_remove_bound+0x187/0x1e0 __vsock_release+0x383/0x4a0 vsock_release+0x90/0x120 __sock_release+0xa3/0x250 sock_close+0x14/0x20 __fput+0x359/0xa80 task_work_run+0x107/0x1d0 do_exit+0x847/0x2560 do_group_exit+0xb8/0x250 __x64_sys_exit_group+0x3a/0x50 x64_sys_call+0xfec/0x14f0 do_syscall_64+0x93/0x1b0 entry_SYSCALL_64_after_hwframe+0x76/0x7e
Weakness: CWE-416
Which versions are affected by CVE-2025-21756?
It affects 1 product.
Linux distribution packages (40)
bpftool-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:7.3.0-427.68.2.el9_4 |
kernel-64k-debug-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug-devel Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug-devel-matched Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-devel Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-devel-matched Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debug-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debug-devel Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debug-devel-matched Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debuginfo-common-aarch64 Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debuginfo-common-ppc64le Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debuginfo-common-s390x Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-debuginfo-common-x86_64 Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-devel Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-devel-matched Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-doc Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-rt-debug-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-rt-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-tools-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-zfcpdump-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-zfcpdump-devel Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-zfcpdump-devel-matched Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
libperf-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
perf Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
perf-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
python3-perf-debuginfo Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
rtla Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
rv Red Hat:rhel_eus:9.4::appstream | All versions | 0:5.14.0-427.68.2.el9_4 |
bpftool Red Hat:rhel_eus:9.4::baseos | All versions | 0:7.3.0-427.68.2.el9_4 |
bpftool-debuginfo Red Hat:rhel_eus:9.4::baseos | All versions | 0:7.3.0-427.68.2.el9_4 |
kernel Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-core Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug-core Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug-debuginfo Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug-modules Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
kernel-64k-debug-modules-core Red Hat:rhel_eus:9.4::baseos | All versions | 0:5.14.0-427.68.2.el9_4 |
Products include Linux kernel.
How do I fix CVE-2025-21756?
Apply the vendor's patch.
Upgrade to the fixed version. These bugs are found with fuzzing and sanitisers and avoided by memory-safe languages. More about Use after free.
Is CVE-2025-21756 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2025-21756 exists.
Public exploit code: 4 proofs of concept on GitHub.
Other vulnerabilities in Linux kernel
Sources
Also known as A-396331793, ASB-A-396331793, AZL-58995, AZL-59037, BELL-CVE-2025-21756, DEBIAN-CVE-2025-21756 and 3 more.