🇰🇷 한글 설명
Linux 커널의 KVM(Kernel-based Virtual Machine) x86 구현에서 발생하는 취약점으로, vCPU가 PV EOI(Para-Virtualization End Of Interrupt)를 비활성화했음에도 불구하고 대기 중인 PV EOI 요청을 무시하지 않아 발생합니다. 이로 인해 커널의 assert 조건이 실패하며 시스템이 중단되는 커널 BUG(Oops)가 발생할 수 있습니다.
💡 쉬운 설명
가상 머신을 관리하는 리눅스 시스템의 핵심 기능에서 오류가 발생하여 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 특정 상황에서 컴퓨터가 처리해야 할 신호를 잘못 처리하여 충돌이 일어나는 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
KVM: x86: Ignore pending PV EOI if the vCPU has since disabled PV EOIs
Ignore KVM's internal "service pending PV EOI" request if the vCPU has
disabled PV EOIs since the request was made. Asserting that PV EOIs are
enabled can fail if reading guest memory in pv_eoi_get_user() fails, i.e.
if pv_eoi_test_and_clr_pending() bails early, *and* the vCPU also disables
PV EOIs.
kernel BUG at arch/x86/kvm/lapic.c:3338!
Oops: invalid opcode: 0000 [#1] SMP
CPU: 4 UID: 1000 PID: 890 Comm: pv_eoi_test Not tainted 7.0.0-d585aa5894d8-vm #337 PREEMPT
Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
RIP: 0010:kvm_lapic_sync_from_vapic+0x12b/0x140 [kvm]
Call Trace:
<TASK>
kvm_arch_vcpu_ioctl_run+0x1075/0x1c30 [kvm]
kvm_vcpu_ioctl+0x2d5/0x980 [kvm]
__x64_sys_ioctl+0x8a/0xd0
do_syscall_64+0xb5/0xb40
entry_SYSCALL_64_after_hwframe+0x4b/0x53
</TASK>
Modules linked in: kvm_intel kvm irqbypass
---[ end trace 0000000000000000 ]---
📍 영향받는 시스템
Linux Kernel (KVM x86 모듈을 사용하는 시스템)
⚔️ 공격 벡터
가상 머신(Guest) 내에서 특정 인터럽트 처리 시퀀스를 조작하여 호스트 커널의 패닉을 유도하는 방식
🛡️ 대응 방법
KVM PV EOI 관련 패치가 적용된 최신 버전의 Linux 커널로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인하십시오.