CVE-2026-89917 in Linux
요약
\~에 의해 VulDB • 2026. 09. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
KVM: arm64: vcpu_put() VNCR 언매핑과 함께 발생하는 VNCR TLB 무효화 경쟁 조건 처리
VNCR TLB 무효화는 항상 MMU 잠금(MMU lock) 하에서 발생하지만, vcpu_put()은 그렇지 않으며 VNCR 페이지를 언매핑합니다.
문제는 무효화가 수행되기 전에 vncr_tlb::cpu를 평가하여 언매핑이 필요한지(cpu != -1) 결정한다는 점입니다. 반면에 this_cpu_reset_vncr_fixmap()는 L1_VNCR_MAPPED가 설정되어 있는 경우 조건 없이(unconditionally) 언매핑을 실행합니다.
두 작업은 TLBI 경로에서 TOCTOU(Time-of-Check to Time-of-Use) 패턴과 vcpu_put() 경로에서 BUG_ON() 오류를 유발하며 경쟁 상태(race condition)에 빠질 수 있습니다. 또한 두 경로는 모두 vncr_fixmap(-1)를 호출하여 치명적인 결과를 초래할 수 있습니다.
vncr_tlb::cpu의 초기화를 -1로 변경하는 코드를 공통 함수로 이동하고, 이 업데이트를 원자적(atomic)으로 만들어 단일 스레드만 해당 필드를 재설정하고 대응되는 언매핑을 수행하도록 합니다. vcpu_put()은 여전히 다른 치명적인 경쟁 조건(race condition)을 차단하기 위해 현재 VNCR을 조건 없이(unconditionally) 언매핑해야 합니다.
마지막으로, L1_VNCR_MAPPED가 설정되는 방식과 유사하게 실제 매핑 상태와 동기화되도록 vncr_tlb::cpu의 할당 위치를 변경합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.