🔍 CVE-2026-97994

0.0
CVSS Score
UNKNOWN
2026-09-25
2026-10-19 10:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 vhost/vdpa 구성 요소에서 장치가 지원하는 최대 큐 크기보다 큰 VRING_NUM을 허용하는 취약점이 발견되었습니다. 이로 인해 공격자가 장치에 설정된 범위를 벗어난 메모리에 접근하여 16바이트 크기의 Out-of-bounds Read를 유발할 수 있습니다.

💡 쉬운 설명

장치가 처리할 수 있는 데이터 양보다 더 많은 양을 처리하라고 명령을 내릴 수 있는 오류입니다. 이로 인해 시스템이 허용되지 않은 메모리 영역을 읽으려 시도하여 오류가 발생하거나 보안 문제가 생길 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: vhost/vdpa: reject VRING_NUM larger than device max vhost_vring_set_num() accepts any non-zero power-of-two queue size that fits in 16 bits. vhost-vdpa then passes that value to set_vq_num() without comparing it with get_vq_num_max(). A process with access to /dev/vhost-vdpa-* can therefore configure a queue larger than the device advertises. With vdpa_sim, the worker can walk descriptors beyond the mapped descriptor ring. KASAN reports a 16-byte out-of-bounds read, corresponding to one vring_desc, in the vringh IOTLB path: BUG: KASAN: out-of-bounds in _copy_from_iter Read of size 16 copy_from_iotlb copydesc_iotlb vringh_getdesc_iotlb vdpasim_net_work Cache get_vq_num_max() immediately after reset. Some backends derive it from writable queue-size state, so querying it after SET_NUM may return the current size instead of the device capability. Invalidate the cached value before reset so a failed reset leaves SET_NUM disabled. For VHOST_SET_VRING_NUM, copy the complete vring state once and use the same index and size for validation, vq->num, and set_vq_num(). This ensures that validation and use operate on the same copied values.

📍 영향받는 시스템

vhost/vdpa를 사용하는 Linux 커널 버전

⚔️ 공격 벡터

/dev/vhost-vdpa-* 장치에 접근 권한이 있는 프로세스를 통한 비정상적인 VRING_NUM 설정

🛡️ 대응 방법

vhost/vdpa의 큐 크기 검증 로직이 포함된 최신 Linux 커널로 업데이트

🔧 검증 코드

출력된 커널 버전이 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel