🇰🇷 한글 설명
리눅스 커널의 md(Multiple Device) 드라이버에서 발생하는 Use-After-Free(UAF) 취약점입니다. rdev 제거 경로와 md 중지 경로 사이의 레이스 컨디션으로 인해 del_gendisk 함수가 중복 호출되어 시스템 오류를 유발할 수 있습니다.
💡 쉬운 설명
두 가지 작업이 동시에 일어날 때, 이미 삭제된 데이터를 다시 삭제하려고 시도하여 컴퓨터 시스템이 멈추거나 오류가 발생하는 문제입니다. 이를 방지하기 위해 작업 순서를 조절하는 안전장치가 추가되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
md: avoid repeated calls to del_gendisk
There is a uaf problem which is found by case 23rdev-lifetime:
Oops: general protection fault, probably for non-canonical address 0xdead000000000122
RIP: 0010:bdi_unregister+0x4b/0x170
Call Trace:
<TASK>
__del_gendisk+0x356/0x3e0
mddev_unlock+0x351/0x360
rdev_attr_store+0x217/0x280
kernfs_fop_write_iter+0x14a/0x210
vfs_write+0x29e/0x550
ksys_write+0x74/0xf0
do_syscall_64+0xbb/0x380
entry_SYSCALL_64_after_hwframe+0x77/0x7f
RIP: 0033:0x7ff5250a177e
The sequence is:
1. rdev remove path gets reconfig_mutex
2. rdev remove path release reconfig_mutex in mddev_unlock
3. md stop calls do_md_stop and sets MD_DELETED
4. rdev remove path calls del_gendisk because MD_DELETED is set
5. md stop path release reconfig_mutex and calls del_gendisk again
So there is a race condition we should resolve. This patch adds a
flag MD_DO_DELETE to avoid the race condition.
📍 영향받는 시스템
Linux kernel (md driver component)
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 특정 레이스 컨디션 조건을 유도하여 시스템 오류(Kernel Oops)를 발생시킴
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.