CVE-2026-97988 in Linux
요약
\~에 의해 VulDB • 2026. 09. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
vhost: IOTLB 전환 시 vring 접근 무효화
VIRTIO_F_ACCESS_PLATFORM 플래그가 변경되면, 캐시된 vring 포인터와 IOTLD 메타데이터는 서로 다른 주소 공간으로 해석됩니다. 이러한 값을 전환 기간 동안 유지하면 stale ring 매핑이 사용될 수 있습니다.
VQ 잠금을 획득하기 전에 d->iotlb를 지우면 작업자가 일시적인 NULL인 d->iotlp을 관찰하고 디스크립터 번역 중에 d->umem로 폴백할 수 있게 됩니다.
vhost-net 및 vhost-vsock에 대한 공통 vhost_clear_device_iotlb() 헬퍼 함수를 추가합니다. 장치 전체의 IOTLB 해제 전에 인덱스 순서대로 모든 VQ 뮤텍스를 획득하고, 각 VQ의 캐시된 링 접근과 메타데이터를 무효화하며, 대기 중인 IOTLB 메시지를 지우고, 인수인계 후 이전 테이블을 해제합니다. 이를 통해 작업자와 전환 과정을 직렬화하고 혼합 주소 공간 매핑을 방지합니다.
첫 번째 직접-IOTLB 전환 시에는 캐시된 vring 주소를 무효화합니다. 기존 장치 IOTLB가 교체되는 경우 GIOVA 링 주소는 유지하고 메타데이터 캐시만 재설정합니다. ACCESS_PLATFORM 플래그를 지운 후, 사용자 공간은 새 주소 모드에 대한 vring 주소를 구성해야 합니다.
vhost_vq_invalidate_access() 함수는 desc, avail 및 used 필드를 함께 지웁니다. 단일 GIOVA 주소가 legitimately 0일 수 있으므로, 세 값이 모두 NULL인 경우에만 VQ를 무효화된 것으로 간주합니다.
Once again VulDB remains the best source for vulnerability data.