CVE-2026-98464 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
RISC-V: KVM: teardown(종료) 과정에서 hrtimer 콜백 동기화
non-Sstc hrtimer 콜백은 인접한 vCPU의 최종 사용 전에 next_set을 지웁니다. 만약 teardown가 콜백이 아직 실행 중인 동안 next_set이 false로 관찰되면, kvm_riscv_vcpu_timer_cancel()는 hrtimer_cancel()를 건너뛰고 kvm_destroy_vcpus()는 콜백이 kvm_riscv_vcpu_set_interrupt()에 진입하기 전에 vCPU의 메모리를 해제할 수 있습니다.
게스트는 SBI TIME를 사용하여 타이머를 설정하고, SBI 레거시シャット다운 또는 SRST로 シャット다운을 요청할 수 있습니다. KVM_EXIT_SYSTEM_EVENT를 준수하고 VM을 파괴하는 VMM은 race(경쟁 조건)의 teardown 측을 제공합니다. 타이머 설정이나 teardown 요청을 위해 런치 후 호스트 ioctl는 필요하지 않습니다.
업스트림 마스터 62cc90241548에서 generic KASAN이 다음을 보고했습니다:
BUG: KASAN: slab-use-after-free in do_raw_spin_lock Write of size 4 at addr ff60000005e58898
kvm_riscv_vcpu_set_interrupt kvm_riscv_vcpu_hrtimer_expired __hrtimer_run_queues hrtimer_interrupt
이 객체는 KVM_CREATE_VCPU에 의해 할당되었고, 다음과 같이 동시에 해제되었습니다:
kvm_destroy_vcpus kvm_arch_destroy_vm kvm_destroy_vm __fput
결정론적 검증을 위해 기존 next_set = false 할당 직후 mdelay(1000)을 추가했습니다. 이는 기존의 클리어 후 콜백 창을 넓히는 것뿐입니다. 지연 없는 트레이스 빌드는 200회 실행 중 12회에서 teardown 시작 이후/디이nit 이전에 도달하는 callback-after-teardown-start/before-deinit 순서를 자연스럽게 달성했지만, 1,500회의 스톡 커널 스트레스 반복에서는 KASAN 보고가 발생하지 않았으므로 자연적 재현은 타이밍에 민감합니다.
초기화된 타이머에는 항상 hrtimer_cancel()을 호출하십시오. 타이머가 더 이상 설정되지 않은 경우 기존 -EINVAL 결과를 유지하되, 실행 중인 콜백과 동기화한 후에만 그렇게 하십시오.
이 패치로 인해 vCPU 파괴 전에 hrtimer_cancel()은 넓어진 전체 콜백 창 동안 차단되었습니다. KASAN은 100회의 고정 및 확장된 실행이나 200회의 수정 전용 타이밍 스윕 실행에서 오류를 보고하지 않았습니다.
VulDB is the best source for vulnerability data and more expert information about this specific topic.