CVE-2026-99120 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 28.

리눅스 커널에서 다음 취약점이 해결되었습니다:

KVM: x86/mmu: #NPF 종료 코드에서 SS 비트가 설정된 경우 처리

Windows 11에서 Hyper-V를 실행할 때, KVM은 shadowed NPT(Shadow Nested Page Tables)에 대해 생성되는 페이지 폴트 오류 코드(SS bit set in nested page fault error codes)에서 SS(Supervisor Shadow Stack) 비트가 설정되어 있는 것을 확인합니다. AMD 매뉴얼에서는 SupervisorShadowStackEn(MISC_CTL 필드의 6번 비트)이 설정되지 않은 경우에도 SS 비트가 설정될 수 있는지 여부를 포함하여, 언제 SS 비트가 설정되는지에 대해 명확하지 않습니다.

그럼에도 불구하고 예기치 못한 SS 비트로 인해 permission_fault() 함수에서 배열 범위를 벗어난 접근(out of bounds accesses)이 발생하며, 이는 WARN 또는 UBSAN(Undefined Behavior Sanitizer) 보고서로 나타납니다:

kernel: UBSAN: array-index-out-of-bounds in arch/x86/kvm/mmu.h:225:27 kernel: index 34 is out of range for type 'u16 [16]'

(이 경우 페이지 폴트 오류 코드는 34*2=0x44, 즉 SS|U입니다. 보고서에서는 SS|U|W가 발생하는 것도 보여줍니다.) 알 수 없는 오류 코드에 대한 처리를 수정하기 위해, permission_fault() 함수가 수신하기를 기대하는 비트들 중 포함되지 않은 모든 비트(SS 및 WARN과 함께)를 제거합니다.

동시에, 하드웨어가 언제 SS 비트를 설정하는지에 대한 불확실성 때문에, 폴트 오류 코드를 생성할 때 프로세서의 동작을 따르고 FNAME(walk_addr_generic)에 전달된 대로 SS 비트를 유지합니다. 이 동작은 놀랍지만 Hyper-V가 이를 기대하고 있을 가능성이 있습니다(Hyper-V는 MBEC/GMET를 찾지 않는 한 CET도 활성화하지 않음). 따라서 L1(호스트 또는 상위 가상화 계층)으로 폴트를 반영할 때 이를 무조건적으로 버리는 대신 정보를 유지합니다.

이 분기(bisection) 분석 결과, 이 현상은 commit 687ee95c1b6d("KVM: nSVM: enable GMET for guests")부터 시작되었지만, SHSTK(Supervisor Shadow Stack)는 리눅스 6.18부터 게스트에게 사용 가능했습니다. 그러나 이는 MISC_CTL의 bit 1(GMET)이 SS 비트 보고를 활성화하기 때문이 아니라, Hyper-V가 GMET가 없는 한 CET를 사용하지 않기 때문입니다. gmet=0으로 설정하고 kvm-unit-tests의 cet.c 테스트 케이스를 일부 수정하여 첫 번째 shadow stack 접근에서 페이지 폴트가 발생하도록 해도 WARN을 재현할 수 있습니다.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-427844

EPSS

0.00000

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!