🇰🇷 한글 설명
리눅스 커널의 binder 구성 요소에서 binder_devices 리스트에서 제거되기 전에 장치가 해제되는 Use-After-Free(UAF) 취약점이 발견되었습니다. binder_free_proc() 함수 내에서 적절한 제거 절차가 누락되어 메모리 손상 및 시스템 불안정을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리에서 사용이 끝난 데이터가 목록에서 완전히 지워지기 전에 먼저 삭제되어 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 해커가 시스템 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
binder: fix yet another UAF in binder_devices
Commit e77aff5528a18 ("binderfs: fix use-after-free in binder_devices")
addressed a use-after-free where devices could be released without first
being removed from the binder_devices list. However, there is a similar
path in binder_free_proc() that was missed:
==================================================================
BUG: KASAN: slab-use-after-free in binder_remove_device+0xd4/0x100
Write of size 8 at addr ffff0000c773b900 by task umount/467
CPU: 12 UID: 0 PID: 467 Comm: umount Not tainted 6.15.0-rc7-00138-g57483a362741 #9 PREEMPT
Hardware name: linux,dummy-virt (DT)
Call trace:
binder_remove_device+0xd4/0x100
binderfs_evict_inode+0x230/0x2f0
evict+0x25c/0x5dc
iput+0x304/0x480
dentry_unlink_inode+0x208/0x46c
__dentry_kill+0x154/0x530
[...]
Allocated by task 463:
__kmalloc_cache_noprof+0x13c/0x324
binderfs_binder_device_create.isra.0+0x138/0xa60
binder_ctl_ioctl+0x1ac/0x230
[...]
Freed by task 215:
kfree+0x184/0x31c
binder_proc_dec_tmpref+0x33c/0x4ac
binder_deferred_func+0xc10/0x1108
process_one_work+0x520/0xba4
[...]
==================================================================
Call binder_remove_device() within binder_free_proc() to ensure the
device is removed from the binder_devices list before being kfreed.
📍 영향받는 시스템
Linux kernel (binderfs 관련 기능이 활성화된 버전)
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 binderfs 장치를 조작하여 메모리 해제 오류를 유도하는 방식
🛡️ 대응 방법
커널 패치를 적용하여 binder_free_proc() 호출 시 binder_remove_device()가 실행되도록 업데이트해야 합니다.
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 패치 버전인지 확인합니다.