🇰🇷 한글 설명
Linux 커널의 KVM x86/MMU 구성 요소에서 비동기 페이지 폴트(APF) 토큰 값이 0으로 설정될 수 있는 결함이 발견되었습니다. 이로 인해 KVM이 READY 이벤트를 제대로 전달하지 못해 게스트 OS 내의 태스크가 영구적으로 차단(Blocked)되는 현상이 발생할 수 있습니다.
💡 쉬운 설명
가상 머신을 운영하는 시스템에서 데이터 처리 신호가 제대로 전달되지 않아, 가상 머신 안의 프로그램이 멈춰버리는 버그입니다. 이로 인해 가상 머신이 응답하지 않는 상태가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
KVM: x86/mmu: make apf token non-zero to fix bug
In current async pagefault logic, when a page is ready, KVM relies on
kvm_arch_can_dequeue_async_page_present() to determine whether to deliver
a READY event to the Guest. This function test token value of struct
kvm_vcpu_pv_apf_data, which must be reset to zero by Guest kernel when a
READY event is finished by Guest. If value is zero meaning that a READY
event is done, so the KVM can deliver another.
But the kvm_arch_setup_async_pf() may produce a valid token with zero
value, which is confused with previous mention and may lead the loss of
this READY event.
This bug may cause task blocked forever in Guest:
INFO: task stress:7532 blocked for more than 1254 seconds.
Not tainted 5.10.0 #16
"echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
task:stress state:D stack: 0 pid: 7532 ppid: 1409
flags:0x00000080
Call Trace:
__schedule+0x1e7/0x650
schedule+0x46/0xb0
kvm_async_pf_task_wait_schedule+0xad/0xe0
? exit_to_user_mode_prepare+0x60/0x70
__kvm_handle_async_pf+0x4f/0xb0
? asm_exc_page_fault+0x8/0x30
exc_page_fault+0x6f/0x110
? asm_exc_page_fault+0x8/0x30
asm_exc_page_fault+0x1e/0x30
RIP: 0033:0x402d00
RSP: 002b:00007ffd31912500 EFLAGS: 00010206
RAX: 0000000000071000 RBX: ffffffffffffffff RCX: 00000000021a32b0
RDX: 000000000007d011 RSI: 000000000007d000 RDI: 00000000021262b0
RBP: 00000000021262b0 R08: 0000000000000003 R09: 0000000000000086
R10: 00000000000000eb R11: 00007fefbdf2baa0 R12: 0000000000000000
R13: 0000000000000002 R14: 000000000007d000 R15: 0000000000001000
📍 영향받는 시스템
Linux Kernel (KVM x86/MMU 관련 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 조건의 메모리 작업을 유도하여 가상 머신 내 프로세스를 무한 대기 상태로 유도 (DoS)
🛡️ 대응 방법
KVM APF 토큰 관련 패치가 적용된 최신 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.