🇰🇷 한글 설명
Linux 커널의 KVM(Kernel-based Virtual Machine) 내 SVM 구현에서 NMI(Non-Maskable Interrupt) 처리 시 발생하는 취약점입니다. vNMI 지원이 활성화된 상태에서 NMI가 마스킹되어 있을 때 NMI 윈도우를 요청하면 경고(WARN)가 발생하며, 이는 가상 환경과 실제 하드웨어 간의 동작 불일치를 야기할 수 있습니다.
💡 쉬운 설명
컴퓨터가 아주 중요한 신호(NMI)를 처리하는 과정에서, 가상 머신 설정 때문에 시스템이 혼란을 느껴 경고 메시지를 내보내는 문제입니다. 실제 컴퓨터와 가상 컴퓨터의 동작 방식이 달라 생기는 일종의 논리적 불일치 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
KVM: SVM: WARN on vNMI + NMI window iff NMIs are outright masked
When requesting an NMI window, WARN on vNMI support being enabled if and
only if NMIs are actually masked, i.e. if the vCPU is already handling an
NMI. KVM's ABI for NMIs that arrive simultanesouly (from KVM's point of
view) is to inject one NMI and pend the other. When using vNMI, KVM pends
the second NMI simply by setting V_NMI_PENDING, and lets the CPU do the
rest (hardware automatically sets V_NMI_BLOCKING when an NMI is injected).
However, if KVM can't immediately inject an NMI, e.g. because the vCPU is
in an STI shadow or is running with GIF=0, then KVM will request an NMI
window and trigger the WARN (but still function correctly).
Whether or not the GIF=0 case makes sense is debatable, as the intent of
KVM's behavior is to provide functionality that is as close to real
hardware as possible. E.g. if two NMIs are sent in quick succession, the
probability of both NMIs arriving in an STI shadow is infinitesimally low
on real hardware, but significantly larger in a virtual environment, e.g.
if the vCPU is preempted in the STI shadow. For GIF=0, the argument isn't
as clear cut, because the window where two NMIs can collide is much larger
in bare metal (though still small).
That said, KVM should not have divergent behavior for the GIF=0 case based
on whether or not vNMI support is enabled. And KVM has allowed
simultaneous NMIs with GIF=0 for over a decade, since commit 7460fb4a3400
("KVM: Fix simultaneous NMIs"). I.e. KVM's GIF=0 handling shouldn't be
modified without a *really* good reason to do so, and if KVM's behavior
were to be modified, it should be done irrespective of vNMI support.
📍 영향받는 시스템
Linux Kernel (KVM SVM 관련 모듈이 포함된 버전)
⚔️ 공격 벡터
가상화 환경 내에서 특정 타이밍에 NMI를 연속적으로 발생시켜 커널 경고를 유도하는 방식
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.