🔍 CVE-2022-50228

5.5
CVSS Score
MEDIUM
2025-06-18
2026-11-05 20:17
✅ 완료

🇰🇷 한글 설명

Linux 커널 KVM SVM 모듈에서, 게스트의 GIF(Global Interrupt Flag)가 0으로 클리어된 상태에서 사용자 공간이 KVM_SET_VCPU_EVENTS로 인터럽트를 주입하면 BUG()가 발생하는 문제가 수정되었습니다. 이제 커널은 패닉 대신 인터럽트 주입 처리를 안전하게 처리합니다.

💡 쉬운 설명

가상 머신 관리 프로그램이 특정 상태에서 잘못된 인터럽트를 요청하면 리눅스 커널이 강제로 멈출 수 있었습니다. 이번 수정으로 이런 요청이 와도 커널이 멈추지 않도록 바뀌었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: KVM: SVM: Don't BUG if userspace injects an interrupt with GIF=0 Don't BUG/WARN on interrupt injection due to GIF being cleared, since it's trivial for userspace to force the situation via KVM_SET_VCPU_EVENTS (even if having at least a WARN there would be correct for KVM internally generated injections). kernel BUG at arch/x86/kvm/svm/svm.c:3386! invalid opcode: 0000 [#1] SMP CPU: 15 PID: 926 Comm: smm_test Not tainted 5.17.0-rc3+ #264 Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015 RIP: 0010:svm_inject_irq+0xab/0xb0 [kvm_amd] Code: <0f> 0b 0f 1f 00 0f 1f 44 00 00 80 3d ac b3 01 00 00 55 48 89 f5 53 RSP: 0018:ffffc90000b37d88 EFLAGS: 00010246 RAX: 0000000000000000 RBX: ffff88810a234ac0 RCX: 0000000000000006 RDX: 0000000000000000 RSI: ffffc90000b37df7 RDI: ffff88810a234ac0 RBP: ffffc90000b37df7 R08: ffff88810a1fa410 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000 R13: ffff888109571000 R14: ffff88810a234ac0 R15: 0000000000000000 FS: 0000000001821380(0000) GS:ffff88846fdc0000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 00007f74fc550008 CR3: 000000010a6fe000 CR4: 0000000000350ea0 Call Trace: <TASK> inject_pending_event+0x2f7/0x4c0 [kvm] kvm_arch_vcpu_ioctl_run+0x791/0x17a0 [kvm] kvm_vcpu_ioctl+0x26d/0x650 [kvm] __x64_sys_ioctl+0x82/0xb0 do_syscall_64+0x3b/0xc0 entry_SYSCALL_64_after_hwframe+0x44/0xae </TASK>

📍 영향받는 시스템

KVM SVM(AMD 가상화) 기능을 사용하는 리눅스 커널 5.x 계열 (수정 전 버전)

⚔️ 공격 벡터

KVM 가상화 환경에서 권한이 있는 사용자 공간 프로세스가 KVM_SET_VCPU_EVENTS ioctl로 GIF=0 상태에 인터럽트를 주입하여 커널 BUG를 유발 (서비스 거부)

🛡️ 대응 방법

커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하고 재부팅

🔧 검증 코드

출력된 커널 버전이 배포판의 수정 패치가 적용된 버전인지 확인하고, kvm_amd 모듈이 로드되어 있으면 배포판 보안 공지에서 해당 CVE 패치 포함 여부를 대조합니다.

Shell / Script
uname -r && (lsmod | grep -E 'kvm_amd|kvm') 2>/dev/null

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel