🇰🇷 한글 설명
Linux 커널의 Hyper-V VMBus 모듈에서 중첩되지 않은 루트 파티션 환경일 때 모듈 제거 시 메모리 오류와 커널 패닉이 발생하는 취약점입니다. 초기화되지 않은 모듈을 언로드하려고 시도할 때 정리 프로세스가 잘못된 리소스를 참조하여 시스템이 충돌합니다. 이를 해결하기 위해 모듈 종료 시에도 초기화 여부를 확인하여 불필요한 정리 작업을 건너뛰도록 수정되었습니다.
💡 쉬운 설명
컴퓨터의 특정 기능(VMBus)이 실제로 사용되지 않는데도 켜져 있다가, 이를 끌 때 시스템이 무엇을 꺼야 할지 몰라 당황하며 컴퓨터가 멈춰버리는 문제입니다. 이 문제는 시스템이 갑자기 꺼지는 현상을 유발할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Drivers: hv: vmbus: Skip VMBus module cleanup for non-nested root partition
The VMBus module initialization function, hv_acpi_init(), currently
does nothing when running in the root partition and root is not nested
in another VM. But the initialization function reports success, so the
VMBus module is indeed loaded. VMBus functionality is not actually
needed, but the VMBus module must be loaded so that hv_vmbus_exists()
can answer correctly. Furthermore, the mshv_root dependency on the
VMBus module is needed as described in the commit message for
840b740a35bf ("mshv: Add conditional VMBus dependency").
Loading the VMBus module without actually initializing it causes
failures if the module should later be unloaded. The module unload code
tries to clean up things that were never initialized, resulting in
memory faults and a panic.
Fix this by having VMBus module exit function perform the same
check for non-nested root partition, and do nothing in such a
case, just like hv_acpi_init().
In the long run, the code that manages the Hyper-V provided SynIC
should be refactored to better coordinate the requirements of
root partition scenarios and normal VM scenarios, and to hopefully
remove the hv_vmbus_exists() dependnecy between mshv_root and
VMBus modules. Preventing the current unload failure scenario is
an expediency until such a refactoring is done.
📍 영향받는 시스템
Linux kernel (Hyper-V 환경의 non-nested root partition 사용 시)
⚔️ 공격 벡터
로컬 공격자가 특정 조건에서 VMBus 모듈을 언로드하도록 유도하여 시스템 패닉(DoS) 유발 가능
🛡️ 대응 방법
VMBus 모듈의 종료 로직이 수정된 최신 Linux 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전인지 배포판 보안 공지를 통해 확인