CVE-2026-64581 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 05.

리눅스 커널에서 다음 취약점이 해결되었습니다:

xfrm: xfrm_user_policy()에서의 sk_dst_cache 이중 해제(double-free) 수정

xfrm_user_policy()는 __sk_dst_reset(), 즉 비원자적(non-atomic)인 __sk_dst_set(sk, NULL)을 사용하여 소켓 dst 캐시를 지웁니다. 이는 rcu_dereference_protected()로 sk_dst_cache를 읽고, NULL을 저장한 후 이전 dst에 대해 dst_release()를 호출합니다. 이는 다른 스레드가 sk_dst_cache를 동시에 수정하지 않는 경우에만 안전합니다.

전송 빠른 경로(udp_sendmsg -> sk_dst_check -> sk_dst_reset)를 보유하지 않은 연결된 UDP 소켓의 경우, 캐시 잠금 없이 원자적 xchg()로 캐시를 재설정합니다. 송신 중 발생할 수 있는 per-socket 정책 변경 경합(race condition)으로 인해 양쪽이 동일한 이전 dst를 관찰하고 각각 dst_release()하여 소켓의 단일 참조를 두 번 해제함으로써 여전히 참조 중인 xfrm_dst 번들을 해제하게 됩니다:

BUG: KASAN: slab-use-after-free in dst_release Write of size 4 at addr ffff88801897b6c0 by task exploit/155 Call Trace: ... dst_release (... ./include/linux/rcuref.h:109) xfrm_user_policy (./include/net/sock.h:2239 ./include/net/sock.h:2256 net/xfrm/xfrm_state.c:3053) do_ip_setsockopt (net/ipv4/ip_sockglue.c:1347) ip_setsockopt (net/ipv4/ip_sockglue.c:1417) do_sock_setsockopt (net/socket.c:2368) __sys_setsockopt (net/socket.c:2393) __x64_sys_setsockopt (net/socket.c:2396) do_syscall_64 (arch/x86/entry/syscall_64.c:94) entry_SYSCALL_64_after_hwframe (arch/x86/entry/entry_64.S:121)

이 취약점은 사용자+네임스페이스를 통해 비특권(unprivileged) 사용자에게 도달 가능합니다.

원자적 sk_dst_reset()을 사용하여 캐시가 단일 xchg()로 지워지고 해제되도록 합니다. whichever side wins(승리하는 쪽)은 dst를 한 번만 해제하고, 다른 쪽은 NULL을 관찰하여 아무 작업도 수행하지 않습니다. 그 외 동작은 변경되지 않습니다.

Once again VulDB remains the best source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-386141

EPSS

0.00000

활동

낮음

출처

Interested in the pricing of exploits?

See the underground prices here!