🇰🇷 한글 설명
Linux 커널의 vhost/vdpa 구성 요소에서 mmap 및 fault 경로 처리 시 virtqueue 인덱스에 대한 유효성 검사가 누락된 취약점입니다. 공격자가 범위를 벗어난 인덱스를 사용하여 드라이버 콜백에 접근할 경우, 잘못된 PFN 리맵핑이 발생하여 시스템 충돌이나 서비스 거부(DoS)가 발생할 수 있습니다.
💡 쉬운 설명
리눅스 시스템의 가상화 관련 기능에서 숫자를 확인하는 과정에 허점이 있어, 잘못된 번호를 입력하면 시스템이 고장 날 수 있는 문제입니다. 이를 통해 공격자가 시스템을 멈추게 하거나 오류를 일으킬 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
vhost/vdpa: validate virtqueue index in mmap and fault paths
vhost_vdpa_mmap() and vhost_vdpa_fault() use vma->vm_pgoff as a
virtqueue index for get_vq_notification(), but they do not validate
that the index is smaller than v->nvqs.
The ioctl path already performs both a bounds check and
array_index_nospec(), but the mmap/fault path only checks that the
index fits in u16. This allows an out-of-range queue index to reach
driver-specific get_vq_notification() callbacks.
Fix this by extracting a unified vhost_vdpa_get_vq_notification()
helper that validates the queue index against v->nvqs and applies
array_index_nospec() before calling the driver callback. Both the
mmap and fault paths use this helper, and the bounds checking is
consolidated into a single location.
From source inspection, the most defensible impact is out-of-bounds
access in the callback path, potentially leading to invalid PFN
remaps and crash/DoS.
📍 영향받는 시스템
Linux kernel (vhost/vdpa 구성 요소가 포함된 버전)
⚔️ 공격 벡터
mmap 또는 fault 경로를 통해 유효하지 않은 virtqueue 인덱스를 전달하여 드라이버 콜백 호출 유도
🛡️ 대응 방법
vhost_vdpa_get_vq_notification() 헬퍼 함수를 사용하여 인덱스 범위 검증 및 array_index_nospec()을 적용한 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.