CVE-2026-63806 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 20.

리눅스 커널에서 다음 취약점이 해결되었습니다:

KVM: ioeventfd datamatch에서 게스트가 트리거 가능한 BUG_ON()을 get_unaligned()로 교체

2009년에 처음 추가된 이후 접근 가능했던 BUG_ON()을 제거하고, 잠재적으로 정렬되지 않은(unaligned) 액세스를 수행하기 위해 get_unaligned()를 사용하도록 변경했습니다.

특정 저장(store) 작업에 대해 KVM x86 에뮬레이터는 대상 피연산자(x86_emulate_ctxt.dst)의 전체 값을 추적합니다. 만약 대상이 메모리이고, 타겟이 여러 페이지를 분할하거나(emulated MMIO), 에뮬레이션된 MMIO인 경우, KVM은 각 조각을 독립적으로 처리합니다. 예를 들어, 페이지 오프셋 0xffc에서 시작하는 페이지 분할 시, KVM은 첫 번째 페이지에 4바이트를 쓰고 나머지 바이트는 두 번째 페이지에 씁니다(두 작업 모두 ctxt->dst를 소스로 사용하며 적절한 오프셋을 적용).

만약 대상이 페이지를 분할하고 *그리고* 두 번째 페이지에서 에뮬레이션된 MMIO에 도달하는 경우, KVM은 첫 번째 페이지로의 쓰기를 완료한 후 두 번째 페이지의 MMIO 액세스를 에뮬레이트합니다. 만약 두 번째 페이지 오프셋 0에 datamatch가 활성화된 ioeventfd가 있는 경우, KVM은 저장 작업의 나머지를 잠재적인 ioeventfd 신호로 처리할 것입니다.

이를 종합하면, 게스트가 페이지 분할을 유발하는 저장 작업을 수행하고(페이지 오프셋 N에서 시작), 두 번째 페이지의 오프셋 0에 datamatch 활성화된 ioeventfd가 있는 경우, KVM은 &dst.valptr[N]를 소스로 사용하여 datamatch를 확인합니다. dst(따라서 dst.valptr)는 32바이트 정렬되어 있으므로, N이 @len으로 정렬되지 않은 경우 BUG_ON()이 발생합니다.

예를 들어, 페이지 오프셋 0xffc에서 길이가 8인 ioeventfd로 향하는 16바이트 저장 작업의 경우, ioeventfd_in_range() 내의 모든 초기 확인은 성공하지만, @val이 4바이트 정렬되어 있지는 않지만 8바이트 정렬되지 않았기 때문에 BUG_ON()이 발생합니다.

``` ------------[ cut here ]------------
kernel BUG at arch/x86/kvm/../../../virt/kvm/eventfd.c:783! Oops: invalid opcode: 0000 [#1] SMP
CPU: 0 UID: 1000 PID: 615 Comm: repro Not tainted 7.1.0-rc2-ff238429d1ea #365 PREEMPT Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-380143

EPSS

0.00000

활동

중간

출처

Interested in the pricing of exploits?

See the underground prices here!