🔍 CVE-2026-64457

0.0
CVSS Score
UNKNOWN
2026-07-25
2026-08-17 05:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 virtio_pci 드라이버에서 virtio balloon 장치를 언바인딩할 때 NULL 포인터 역참조가 발생하는 취약점입니다. 특정 기능이 비활성화되어 vq 정보 배열에 빈 공간이 생길 경우, 인덱스 불일치로 인해 잘못된 메모리 주소에 접근하게 됩니다.

💡 쉬운 설명

가상 장치를 제거하는 과정에서 컴퓨터가 잘못된 메모리 위치를 참조하여 시스템이 멈추거나 오류가 발생하는 문제입니다. 장치의 기능 설정에 따라 번호표가 꼬이면서 발생하는 현상입니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: virtio_pci: fix vq info pointer lookup via wrong index Unbinding a virtio balloon device: echo virtio0 > /sys/bus/virtio/drivers/virtio_balloon/unbind triggers a NULL pointer dereference. The dmesg says: BUG: kernel NULL pointer dereference, address: 0000000000000008 [...] RIP: 0010:__list_del_entry_valid_or_report+0x5/0xf0 Call Trace: <TASK> vp_del_vqs+0x121/0x230 remove_common+0x135/0x150 virtballoon_remove+0xee/0x100 virtio_dev_remove+0x3b/0x80 device_release_driver_internal+0x187/0x2c0 unbind_store+0xb9/0xe0 kernfs_fop_write_iter.llvm.11660790530567441834+0xf6/0x180 vfs_write+0x2a9/0x3b0 ksys_write+0x5c/0xd0 do_syscall_64+0x54/0x230 entry_SYSCALL_64_after_hwframe+0x29/0x31 [...] </TASK> The virtio_balloon device registers 5 queues (inflate, deflate, stats, free_page, reporting) but only the first two are unconditional. The stats, free_page and reporting queues are each conditional on their respective feature bits. When any of these features are absent, the corresponding vqs_info entry has name == NULL, creating holes in the array. The root cause is an indexing mismatch introduced when vq info storage was changed to be passed as an argument. vp_find_vqs_msix() and vp_find_vqs_intx() store the info pointer at vp_dev->vqs[i], where 'i' is the caller's sparse array index. However, the virtqueue itself gets vq->index assigned from queue_idx, a dense index that skips NULL entries. When holes exist, 'i' and queue_idx diverge. Later, vp_del_vqs() looks up info via vp_dev->vqs[vq->index] using the dense index into the sparsely-populated array, and hits NULL. Fix this by storing info at vp_dev->vqs[queue_idx] instead of vp_dev->vqs[i], so the store index matches the lookup index (vq->index). Apply the fix to both the MSIX and INTX paths.

📍 영향받는 시스템

Linux kernel (virtio_pci driver using virtio_balloon)

⚔️ 공격 벡터

로컬 권한을 가진 사용자가 sysfs를 통해 virtio balloon 장치를 unbind 시도

🛡️ 대응 방법

Linux 커널을 최신 패치가 적용된 버전으로 업데이트하여 vq 인덱스 처리 로직 수정 적용

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel