CVE-2026-99082 in Linux정보

요약

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

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

KVM: x86: per-vCPU MMIO 캐시에 활성 메모리 슬롯(memslots) 사용

KVM은 메모리 슬롯 업데이트가 캐시된 MMIO 정보를 무효화하도록 per-vCPU MMIO 캐시를 memslot generation으로 태그합니다. 채우기(fill) 및 검증(validation) 경로 모두 kvm_memslots()를 사용하여, vCPU가 SMM 모드에서 실행 중이고 주소 공간 1을 사용 중인 경우에도 조건 없이 주소 공간 0만 선택합니다.

커밋 56f17dd3fbc4("kvm: x86: fix stale mmio cache bug")는 memslot 업데이트가 유효한 낡은 엔트리를 남기지 않도록 캐시 키에 memslot generation을 추가했습니다. 그러나 커밋 699023e23965("KVM: x86: add SMM to the MMU role, support SMRAM address space")에서 SMM 주소 공간이 추가되었을 때, 해당 헬퍼 함수들은 활성 메모리 슬롯을 사용하도록 변환되지 않았습니다.

결과적으로 SMM memslots의 업데이트는 vCPU가 일반 주소 공간으로 돌아온 후에도 이전 SMM 주소 공간에서의 엔트리가 유효한 것처럼 보이게 할 수 있습니다. 게스트는 동일한 GFN(물리적 프레임 번호)에 대한 접근이 KVM_EXIT_MMIO로 사용자 공간(user space)으로 반환되도록 유발할 수 있습니다.

VMM의 RAM 주소 공간을 통해 해당 종료(exit)를 완료하면, KVM의 쓰기 추적(write-tracking) 경로를 거치지 않고 백킹 페이지(backing page)가 작성됩니다. 만약 이 페이지가 중첩 EPT(Nested EPT) 테이블을 지원한다면, KVM은 이전 콘텐츠에서 파생된 섀지 번역(shadow translations)을 계속 사용할 수 있습니다. kvm_mmu_write_protect_fault()의 WARN_ON_ONCE()는 이러한 잘못된 캐시와 memslot 조합을 포착합니다.

엔트리를 캐싱하고 검증할 때 vCPU의 활성 메모리 슬롯을 사용하십시오. Memslot generation은 주소 공간 전반에 걸쳐 고유하므로, 이 generation은 일반 모드와 SMM 뷰를 구분하는 데에도 사용됩니다. 이는 이미 kvm_vcpu_memslots()를 사용하는 MMIO SPTE 캐시와 일치합니다.

패치되지 않은 현재 메인라인 커널에서는 SMM에서 캐시를 채우고 SMM memslot만 업데이트하는 회귀 테스트(regression test)가 의도된 RAM 쓰기를 실패시키고 kvm_mmu_write_protect_fault() 경고를 트리거합니다. 이 변경 사항으로 인해 동일한 테스트는 경고 없이 RAM 쓰기를 완료합니다. x86/smm_test, set_memory_region_test 및 memslot_modification_stress_test 셀프테스트(selftests) 또한 통과합니다.

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

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-425817

EPSS

0.00000

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!