Vulnerabilidad en Linux (CVE-2026-46295)
Gravedad CVSS v3.1:
MEDIA
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
08/06/2026
Última modificación:
23/07/2026
Descripción
En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:<br />
<br />
KVM: x86: Realizar escaneo IRR en __kvm_apic_update_irr incluso si PIR está vacío<br />
<br />
Recurrir a apic_find_highest_vector() cuando PID.ON está establecido pero PIR resulta estar vacío, para reportar correctamente la interrupción pendiente más alta del IRR existente.<br />
<br />
En una prueba de estrés de VM anidada, la siguiente ADVERTENCIA se activa en vmx_check_nested_events() cuando kvm_cpu_has_interrupt() reporta una interrupción pendiente pero la subsiguiente kvm_apic_has_interrupt() (que invoca vmx_sync_pir_to_irr() de nuevo) devuelve -1:<br />
<br />
ADVERTENCIA: CPU: 99 PID: 57767 en arch/x86/kvm/vmx/nested.c:4449 vmx_check_nested_events+0x6bf/0x6e0 [kvm_intel]<br />
Traza de Llamada:<br />
kvm_check_and_inject_events<br />
vcpu_enter_guest.constprop.0<br />
vcpu_run<br />
kvm_arch_vcpu_ioctl_run<br />
kvm_vcpu_ioctl<br />
__x64_sys_ioctl<br />
do_syscall_64<br />
entry_SYSCALL_64_after_hwframe<br />
<br />
La causa raíz es una condición de carrera entre vmx_sync_pir_to_irr() en la vCPU objetivo y __vmx_deliver_posted_interrupt() en una vCPU remitente. El remitente realiza dos operaciones individualmente atómicas que no son una única transacción:<br />
<br />
1. pi_test_and_set_pir(vector) -- establece el bit PIR<br />
2. pi_test_and_set_on() -- establece PID.ON<br />
<br />
El siguiente entrelazado desencadena el error:<br />
<br />
vCPU remitente (IPI): vCPU objetivo (1ª sync_pir_to_irr):<br />
B1: establecer PIR[vector]<br />
A1: pi_clear_on()<br />
A2: pi_harvest_pir() -> ve el bit B1<br />
A3: xchg() -> consume el bit, PIR=0<br />
(la 1ª sincronización devuelve el max_irr correcto)<br />
B2: establecer PID.ON = 1<br />
<br />
vCPU objetivo (2ª sync_pir_to_irr):<br />
C1: pi_test_on() -> VERDADERO (de B2)<br />
C2: pi_clear_on() -> ON=0<br />
C3: pi_harvest_pir() -> PIR vacío<br />
C4: max_irr = -1, retorno anticipado<br />
IRR NO ESCANEADO<br />
<br />
La interrupción no se pierde (reside en el IRR de la primera sincronización y se recupera en la siguiente iteración de vcpu_enter_guest()), pero el max_irr incorrecto causa una ADVERTENCIA espuria y un ciclo de VM-Enter/VM-Exit de L2 desperdiciado.
Impacto
Puntuación base 3.x
5.50
Gravedad 3.x
MEDIA
Productos y versiones vulnerables
| CPE | Desde | Hasta |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.16 (incluyendo) | 6.18.30 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.19 (incluyendo) | 7.0.7 (excluyendo) |
| cpe:2.3:o:linux:linux_kernel:7.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:7.1:rc2:*:*:*:*:*:* |
Para consultar la lista completa de nombres de CPE con productos y versiones, ver esta página



