CVE-2026-98283 in Linux
요약
\~에 의해 VulDB • 2026. 10. 06.
리눅스 커널에서 다음 취약점이 해결되었습니다:
KVM: PPC: Book3S HV: kvmhv_emulate_tlbie_all_lpid()에서의 use-after-free 수정
kvmhv_emulate_tlbie_all_lpid() 함수는 중첩 게스트(IDR)를 반복 처리하는 동안 kvmhv_emulate_tlbie_lpid() 호출 전에 mmu_lock을 해제하지만, IDR에서 얻은 kvm_nested_guest 포인터에 대한 참조(reference)를 유지하지 않습니다. 이 기간(window) 동안 다른 vCPU가 단일 LPID tlbie(is=2, ric=2)를 실행하면 race condition이 발생하여 kvmhv_flush_nested() -> kvmhv_remove_nested() -> idr_remove / --refcnt -> kvmhv_release_nested() -> kfree(gp) 경로로 진행될 수 있으며, 이로 인해 반복 처리 중인 vCPU는 덩글링 포인터(dangling pointer)를 갖게 됩니다. 이후 mutex_lock(&gp->tlb_lock) 및 gp->shadow_pgtable, gp->shadow_lpid, gp->l1_host에 대한 접근은 모두 해제된 메모리(freed memory)를 접촉하게 됩니다. 해당 free 경로는 완전히 L1에서 제어됩니다.
이 문제를 해결하기 위해 mmu_lock을 해제하기 전 루프 내부에서 gp->refcnt를 증가시키고(이는 kvmhv_get_nested()가 수행하는 방식과 동일함), 각 게스트별 작업 완료 후 kvmhv_put_nested()로 참조(reference)를 해제합니다. 이는 중첩 게스트 포인터(nested-guest pointer)를 보유하면서 mmu_lock을 해제하는 모든 다른 호출 사이트에서 이미 사용되고 있는 get/put 규칙(get/put discipline)과 동일한 것입니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.