🇰🇷 한글 설명
리눅스 커널의 RDMA/ucma 구성 요소에서 멀티캐스트 그룹 탈퇴가 동시에 발생할 때 멀티캐스트 구조체를 적절히 보호하지 못하는 취약점입니다. 이로 인해 메모리 해제 후 접근하는 Use-After-Free(UAF) 오류가 발생하여 시스템 불안정성이나 권한 상승을 초래할 수 있습니다.
💡 쉬운 설명
여러 작업이 동시에 멀티캐스트 그룹에서 나가려고 할 때, 이미 삭제된 메모리 영역을 다시 사용하려고 시도하는 오류가 발생합니다. 이로 인해 컴퓨터 시스템이 갑자기 멈추거나 해킹 공격에 이용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
RDMA/ucma: Protect mc during concurrent multicast leaves
Partially revert the commit mentioned in the Fixes line to make sure that
allocation and erasing multicast struct are locked.
BUG: KASAN: use-after-free in ucma_cleanup_multicast drivers/infiniband/core/ucma.c:491 [inline]
BUG: KASAN: use-after-free in ucma_destroy_private_ctx+0x914/0xb70 drivers/infiniband/core/ucma.c:579
Read of size 8 at addr ffff88801bb74b00 by task syz-executor.1/25529
CPU: 0 PID: 25529 Comm: syz-executor.1 Not tainted 5.16.0-rc7-syzkaller #0
Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 01/01/2011
Call Trace:
__dump_stack lib/dump_stack.c:88 [inline]
dump_stack_lvl+0xcd/0x134 lib/dump_stack.c:106
print_address_description.constprop.0.cold+0x8d/0x320 mm/kasan/report.c:247
__kasan_report mm/kasan/report.c:433 [inline]
kasan_report.cold+0x83/0xdf mm/kasan/report.c:450
ucma_cleanup_multicast drivers/infiniband/core/ucma.c:491 [inline]
ucma_destroy_private_ctx+0x914/0xb70 drivers/infiniband/core/ucma.c:579
ucma_destroy_id+0x1e6/0x280 drivers/infiniband/core/ucma.c:614
ucma_write+0x25c/0x350 drivers/infiniband/core/ucma.c:1732
vfs_write+0x28e/0xae0 fs/read_write.c:588
ksys_write+0x1ee/0x250 fs/read_write.c:643
do_syscall_x64 arch/x86/entry/common.c:50 [inline]
do_syscall_64+0x35/0xb0 arch/x86/entry/common.c:80
entry_SYSCALL_64_after_hwframe+0x44/0xae
Currently the xarray search can touch a concurrently freeing mc as the
xa_for_each() is not surrounded by any lock. Rather than hold the lock for
a full scan hold it only for the effected items, which is usually an empty
list.
📍 영향받는 시스템
Linux kernel (specifically versions around 5.16.0-rc7 and related RDMA/ucma components)
⚔️ 공격 벡터
로컬 사용자가 특수하게 조작된 RDMA/ucma 관련 시스템 호출을 통해 동시성 오류를 유도하여 메모리 취약점 공격
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 멀티캐스트 구조체 할당 및 삭제 시 잠금(Locking) 메커니즘을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 패치 버전 이후인지 확인합니다.