🇰🇷 한글 설명
Linux 커널의 KVM(Kernel-based Virtual Machine) 내 nSVM 구현에서 NextRIP 처리 로직 오류가 발견되었습니다. L2 가상 머신이 처음 실행된 이후, vmcb02의 NextRIP 값이 현재 RIP 값과 일치하지 않아 상태 복구 시 잘못된 실행 흐름이 발생할 수 있습니다.
💡 쉬운 설명
가상 머신을 실행할 때 다음에 실행할 코드 위치를 기록하는 과정에서 계산 오류가 발생하는 문제입니다. 이로 인해 가상 머신이 다시 시작될 때 프로그램이 엉뚱한 곳을 실행할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
KVM: nSVM: Always use NextRIP as vmcb02's NextRIP after first L2 VMRUN
For guests with NRIPS disabled, L1 does not provide NextRIP when running
an L2 with an injected soft interrupt, instead it advances the current RIP
before running it. KVM uses the current RIP as the NextRIP in vmcb02 to
emulate a CPU without NRIPS.
However, after L2 runs the first time, NextRIP will be updated by the CPU
and/or KVM, and the current RIP is no longer the correct value to use in
vmcb02. Hence, after save/restore, use the current RIP if and only if a
nested run is pending, otherwise use NextRIP. Give soft_int_next_rip the
same treatment, as it's the same logic, just for a narrower use case.
[sean: give soft_int_next_rip the same treatment]
📍 영향받는 시스템
nSVM 기능을 사용하는 Linux 커널 기반 KVM 환경
⚔️ 공격 벡터
중첩 가상화(Nested Virtualization) 환경에서 특정 소프트웨어 인터럽트 주입을 통한 실행 흐름 조작
🛡️ 대응 방법
nSVM의 NextRIP 및 soft_int_next_rip 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인하십시오.