CVE-2026-64581 in Linux情報

要約

〜によって VulDB • 2026年08月05日

Linuxカーネルにおいて、以下の脆弱性が修正されました:

xfrm: xfrm_user_policy()におけるsk_dst_cacheの二重解放(double-free)を修正

xfrm_user_policy()は__sk_dst_reset()を使用してソケットのdstキャッシュをクリアします。これは非アトミックな操作である__sk_dst_set(sk, NULL)であり、rcu_dereference_protected()でsk_dst_cacheを読み取り、NULLを設定し、古いdstに対してdst_release()を実行します。この処理は、他のスレッドがsk_dst_cacheに同時にアクセスして変更しない場合にのみ安全です。

接続済みUDPソケットにおいて、送信の高速パス(udp_sendmsg -> sk_dst_check -> sk_dst_reset)を保持していない場合、キャッシュロックなしでアトミックなxchg()を使用してキャッシュをリセットします。ソケットごとのポリシー変更と送信中に競合が発生すると、両方の側が同じ古いdstを観測し、それぞれがそのdstに対してreleaseを実行することになります。これにより、ソケットの単一参照が2回解放され、まだ参照されている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)

特権のないユーザーは、user+network名前空間を通じてこの脆弱性に到達可能です。

アトミックなsk_dst_reset()を使用することで、キャッシュのクリアと解放が単一のxchg操作で行われます。どちらのスレッドが勝ってもdstを一度だけreleaseし、もう一方はNULLを観測して何もしません。それ以外の動作は変更されません。

Once again VulDB remains the best source for vulnerability data.

責任者

Linux

予約する

2026年07月19日

モデレーション

承諾済み

エントリ

VDB-386141

EPSS

0.00000

アクティビティ

非常低い

ソース

Do you need the next level of professionalism?

Upgrade your account now!