🔍 CVE-2021-47390

8.8
CVSS Score
HIGH
2024-05-21
2026-08-04 10:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 KVM(Kernel-based Virtual Machine) 구성 요소 중 x86 아키텍처의 ioapic_write_indirect() 함수에서 스택 범위 초과 메모리 접근 취약점이 발견되었습니다. vcpu_bitmap이 적절한 크기로 할당되지 않아 스택 오버플로우가 발생할 수 있으며, 이는 시스템 불안정성이나 권한 상승으로 이어질 수 있습니다.

💡 쉬운 설명

가상 머신을 실행하는 핵심 기능에서 메모리 공간을 계산할 때 실수하여, 정해진 범위를 벗어난 데이터를 읽거나 쓰는 문제가 발생했습니다. 이로 인해 컴퓨터 시스템이 멈추거나 해커가 시스템 제어권을 뺏을 위험이 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: KVM: x86: Fix stack-out-of-bounds memory access from ioapic_write_indirect() KASAN reports the following issue: BUG: KASAN: stack-out-of-bounds in kvm_make_vcpus_request_mask+0x174/0x440 [kvm] Read of size 8 at addr ffffc9001364f638 by task qemu-kvm/4798 CPU: 0 PID: 4798 Comm: qemu-kvm Tainted: G X --------- --- Hardware name: AMD Corporation DAYTONA_X/DAYTONA_X, BIOS RYM0081C 07/13/2020 Call Trace: dump_stack+0xa5/0xe6 print_address_description.constprop.0+0x18/0x130 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] __kasan_report.cold+0x7f/0x114 ? kvm_make_vcpus_request_mask+0x174/0x440 [kvm] kasan_report+0x38/0x50 kasan_check_range+0xf5/0x1d0 kvm_make_vcpus_request_mask+0x174/0x440 [kvm] kvm_make_scan_ioapic_request_mask+0x84/0xc0 [kvm] ? kvm_arch_exit+0x110/0x110 [kvm] ? sched_clock+0x5/0x10 ioapic_write_indirect+0x59f/0x9e0 [kvm] ? static_obj+0xc0/0xc0 ? __lock_acquired+0x1d2/0x8c0 ? kvm_ioapic_eoi_inject_work+0x120/0x120 [kvm] The problem appears to be that 'vcpu_bitmap' is allocated as a single long on stack and it should really be KVM_MAX_VCPUS long. We also seem to clear the lower 16 bits of it with bitmap_zero() for no particular reason (my guess would be that 'bitmap' and 'vcpu_bitmap' variables in kvm_bitmap_or_dest_vcpus() caused the confusion: while the later is indeed 16-bit long, the later should accommodate all possible vCPUs).

📍 영향받는 시스템

KVM을 사용하는 Linux 커널 (x86 아키텍처 기반)

⚔️ 공격 벡터

조작된 IOAPIC 쓰기 요청을 통해 KVM 스택 메모리 범위를 초과하는 접근 유도

🛡️ 대응 방법

KVM의 vcpu_bitmap 할당 크기를 KVM_MAX_VCPUS로 수정하는 최신 Linux 커널 패치 적용

🔧 검증 코드

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

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel