🔍 CVE-2026-97989

0.0
CVSS Score
UNKNOWN
2026-09-25
2026-10-21 13:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 vduse 구성 요소에서 virtqueue 정렬 값을 검증할 때 상한선만 확인하여 발생하는 취약점입니다. 정렬 값이 0인 경우 잘못된 메모리 주소가 할당되어 NULL 포인터 역참조(Null-pointer dereference)를 유발하고 시스템 충돌을 일으킬 수 있습니다.

💡 쉬운 설명

가상 장치를 설정할 때 정렬 규칙을 어기는 잘못된 값을 입력하면 컴퓨터 시스템이 갑자기 멈추거나 오류가 발생할 수 있는 문제입니다. 정렬 값이 0이 될 경우 시스템이 엉뚱한 메모리 위치를 참조하게 되어 문제가 생깁니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: vduse: validate virtqueue alignment vduse_validate_config() only checks the upper bound of vq_align. Invalid values can therefore reach vring_create_virtqueue_map(). The split-ring helpers use align - 1 as a bit mask, so the alignment must be a non-zero power of two. A zero value makes vring_size() drop the descriptor and available-ring part and vring_init() leave the used ring pointer NULL. The VIRTIO spec requires the used ring to start at an address aligned to at least 4 bytes. Reject values below VRING_USED_ALIGN_SIZE as well as non-power-of-two values before they reach the virtio ring helpers. Opening a virtio-net device created with vq_align=0 triggered: BUG: KASAN: null-ptr-deref in virtqueue_kick_prepare_split+0xe3/0x100 Read of size 2 at addr 0000000000000000 by task systemd-network/1062 Call Trace (relevant frames): dump_stack_lvl print_report kasan_report __asan_load2 virtqueue_kick_prepare_split+0xe3/0x100 virtqueue_kick_prepare+0x40/0x60 try_fill_recv+0x857/0x1250 virtnet_open+0x189/0x460 __dev_open+0x225/0x390 __dev_change_flags+0x368/0x3b0 netif_change_flags+0x56/0xc0 do_setlink.isra.0+0x68c/0x1e30 Validate the value before it reaches the virtio ring helpers.

📍 영향받는 시스템

vduse 모듈을 사용하는 Linux 커널 버전

⚔️ 공격 벡터

vduse 장치를 생성할 때 vq_align 값을 0으로 설정하여 커널의 NULL 포인터 역참조 유도

🛡️ 대응 방법

vduse_validate_config() 함수를 통해 vq_align 값이 2의 거듭제곱이며 최소 정렬 크기 이상인지 검증하도록 커널 패치 적용

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 보안 패치 버전인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

Linux Kernel