🇰🇷 한글 설명
리눅스 커널의 loop 장치 드라이버에서 use-after-free 취약점이 발견되었습니다. 비동기 I/O 사용 시 do_req_filebacked() 함수가 요청을 완료한 후에도 cmd 또는 rq를 참조하여 커널 크래시를 유발할 수 있는 문제입니다.
💡 쉬운 설명
컴퓨터가 이미 사용이 끝난 메모리 공간을 다시 사용하려고 시도할 때 발생하는 오류입니다. 이로 인해 시스템이 갑자기 멈추거나 꺼지는 현상이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
loop: Fix use-after-free issues
do_req_filebacked() calls blk_mq_complete_request() synchronously or
asynchronously when using asynchronous I/O unless memory allocation fails.
Hence, modify loop_handle_cmd() such that it does not dereference 'cmd' nor
'rq' after do_req_filebacked() finished unless we are sure that the request
has not yet been completed. This patch fixes the following kernel crash:
Unable to handle kernel NULL pointer dereference at virtual address 0000000000000054
Call trace:
css_put.42938+0x1c/0x1ac
loop_process_work+0xc8c/0xfd4
loop_rootcg_workfn+0x24/0x34
process_one_work+0x244/0x558
worker_thread+0x400/0x8fc
kthread+0x16c/0x1e0
ret_from_fork+0x10/0x20
📍 영향받는 시스템
Linux kernel (loop device driver 관련 버전)
⚔️ 공격 벡터
비동기 I/O를 사용하는 특정 루프 장치 조작을 통한 커널 메모리 오염
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.