Instituto Nacional de ciberseguridad. Sección Incibe
Instituto Nacional de Ciberseguridad. Sección INCIBE-CERT

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() -&gt; ve el bit B1<br /> A3: xchg() -&gt; 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() -&gt; VERDADERO (de B2)<br /> C2: pi_clear_on() -&gt; ON=0<br /> C3: pi_harvest_pir() -&gt; 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.

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:*:*:*:*:*:*