🔍 CVE-2026-53199

7.5
CVSS Score
HIGH
2026-06-25
2026-10-19 20:19
✅ 완료

🇰🇷 한글 설명

Linux 커널의 hv_netvsc 드라이버에서 32비트 x86 시스템의 HIGHMEM 환경 사용 시 발생하는 취약점입니다. 특정 페이지의 물리 주소를 가상 주소로 변환하는 과정에서 직접 매핑 범위를 벗어난 주소를 참조하여 커널 패닉(Fatal Fault)을 유발할 수 있습니다.

💡 쉬운 설명

컴퓨터의 메모리 주소를 잘못 계산하여 시스템이 갑자기 멈추거나 꺼질 수 있는 오류입니다. 특히 특정 설정의 32비트 운영체제에서 네트워크 데이터를 처리할 때 발생합니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: hv_netvsc: use kmap_local_page in netvsc_copy_to_send_buf netvsc_copy_to_send_buf() copies page buffer entries into the VMBus send buffer using phys_to_virt() on the entry PFN. Entries for the RNDIS header and the skb linear data come from kmalloc'd memory and are always in the kernel direct map, but entries for skb fragments reference page cache or user pages, which on 32-bit x86 with CONFIG_HIGHMEM=y can live above the LOWMEM boundary. For such a page phys_to_virt() returns an address outside the direct map and the subsequent memcpy() faults on the transmit softirq path, which is fatal. Map the pages with kmap_local_page() instead, handling two properties of the page buffer entries: - pb[i].pfn is a Hyper-V PFN at HV_HYP_PAGE_SIZE (4K) granularity, not a native PFN. Reconstruct the physical address first and derive the native page from it, so the mapping stays correct where PAGE_SIZE > HV_HYP_PAGE_SIZE (e.g. arm64 with 64K pages). - Since commit 41a6328b2c55 ("hv_netvsc: Preserve contiguous PFN grouping in the page buffer array"), an entry describes a full physically contiguous fragment and pb[i].len can exceed PAGE_SIZE, while kmap_local_page() maps a single page. Copy page by page, splitting at native page boundaries. The copy path only handles packets smaller than the send section size (6144 bytes by default); larger packets take the cp_partial path where only the RNDIS header is copied. So entries here are bounded by the section size and a copy is split at most once on 4K-page systems. On !CONFIG_HIGHMEM configs kmap_local_page() folds to page_address() and no mapping work is added.

📍 영향받는 시스템

Linux kernel (32-bit x86 with CONFIG_HIGHMEM=y, hv_netvsc driver)

⚔️ 공격 벡터

특수하게 조작된 네트워크 패킷을 전송하여 커널의 메모리 참조 오류를 유도함으로써 시스템 중단(DoS) 유발

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 kmap_local_page() 방식이 적용된 패치를 적용해야 함

🔧 검증 코드

커널 버전과 CONFIG_HIGHMEM 설정이 y로 되어 있는지 확인하여 취약한 환경인지 판단합니다.

Shell / Script
uname -a && grep CONFIG_HIGHMEM /boot/config-$(uname -r) 2>/dev/null

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel