CVE-2026-98717

Estado: RecibidaSin puntuar—
Gravedad—Sin puntuar
Probabilidad de explotación0.20 %mayor que el 9 % de las CVE
Explotación activaNono figura en el catálogo de CISA
Exploit públicoNo conocidosin código público localizado

En el kernel de Linux se ha resuelto la siguiente vulnerabilidad:

KVM: x86/mmu: Salir de los recorridos de las sombras si la raíz no es válida o es ficticia

Al recorrer las tablas de páginas sombra, terminar inmediatamente el recorrido si la raíz es una raíz "ficticia", es decir, una raíz cuya tabla de páginas de nivel superior está respaldada por la página cero, pero que por lo demás no existe. Si la creación de un memslot entra en condición de carrera con un fallo de página de segunda etapa (violación de EPT o #NPF) procedente de L2, y las circunstancias se alinean, KVM intentará recorrer las tablas de páginas sombra usando la página cero y producirá una desreferencia de puntero NULL.

Leer descripción completaMostrar menos

De forma oportunista, se refuerzan los recorridos de las sombras frente a raíces completamente no válidas, pero se emite un WARN, ya que se espera y se exige que todos los llamantes comprueben previamente que la raíz es válida. No se emite WARN en el caso de la raíz ficticia, porque el objetivo completo de usar una raíz ficticia es proporcionar una raíz lo bastante válida como para entrar en el invitado; es decir, debería funcionar correctamente en todos los flujos excepto en aquellos que *necesitan* saber de las raíces ficticias.

Alternativamente, KVM podría asignar una página dedicada y la estructura de página sombra asociada para la raíz ficticia, lo cual resulta muy tentador, ya que dicho enfoque debería ser más resistente ante comportamientos inesperados. Pero sería un cambio mucho mayor, y por tanto más arriesgado, que simplemente terminar los recorridos de las raíces ficticias.

Detalles técnicos trazas, registros y código del informe original
  BUG: kernel NULL pointer dereference, address: 0000000000000021
  #PF: supervisor read access in kernel mode
  #PF: error_code(0x0000) - not-present page
  PGD 0 P4D 0
  Oops: Oops: 0000 [#1] SMP
  CPU: 30 UID: 1000 PID: 941 Comm: qemu Not tainted 7.2.0-rc2-1b731e5ded48-next-vm #1741 PREEMPTLAZY
  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015
  RIP: 0010:__kvm_mmu_invalidate_addr+0xea/0x210 [kvm]
  Call Trace:
   <TASK>
   kvm_mmu_invalidate_addr+0x92/0xe0 [kvm]
   __kvm_inject_emulated_page_fault+0x67/0x80 [kvm]
   ept_page_fault+0x160/0x850 [kvm]
   kvm_mmu_do_page_fault+0x102/0x1f0 [kvm]
   kvm_mmu_page_fault+0x8e/0x6b0 [kvm]
   vmx_handle_exit+0x163/0x640 [kvm_intel]
   kvm_arch_vcpu_ioctl_run+0x960/0x2120 [kvm]
   kvm_vcpu_ioctl+0x2c7/0x970 [kvm]
   __x64_sys_ioctl+0x90/0xd0
   do_syscall_64+0x67/0x5f0
   entry_SYSCALL_64_after_hwframe+0x4b/0x53
  RIP: 0033:0x7f606d0b53bb

Traducción automática del texto original de NVD (en inglés).

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

Probabilidad de explotación en los próximos 30 días
0.20 %
Percentil entre todas las CVEs puntuadas
9
Fecha de la puntuación
20/10/2026

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

Mostrar las 4 referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-98717",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "0e3223d8d00ac05849661f1b8b476d3caca251cf",
              "lessThan": "e1bcabc07efd029ab414894127411129ffdb8b48",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "0e3223d8d00ac05849661f1b8b476d3caca251cf",
              "lessThan": "97c1dcce17ef27853860c781f9912257e6adbf7c",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "0e3223d8d00ac05849661f1b8b476d3caca251cf",
              "lessThan": "681e31f03ec9219099a66a0f6e1bc48e1b5aa914",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "0e3223d8d00ac05849661f1b8b476d3caca251cf",
              "lessThan": "b6249c1d5665098c8bf12f8d3e4712bf04c775bc",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "arch/x86/kvm/mmu/mmu.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.6"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "6.6",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "6.12.113",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "status": "unaffected",
              "version": "6.18.56",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.10",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "arch/x86/kvm/mmu/mmu.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-10-18T16:17:25.250",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/681e31f03ec9219099a66a0f6e1bc48e1b5aa914",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/97c1dcce17ef27853860c781f9912257e6adbf7c",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/b6249c1d5665098c8bf12f8d3e4712bf04c775bc",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e1bcabc07efd029ab414894127411129ffdb8b48",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nKVM: x86/mmu: Bail from shadow walks if the root is invalid or a dummy\n\nWhen walking shadow page tables, immediately terminate the walk if the root\nis a \"dummy\" root, i.e. a root whose top-level page table is backed by the\nzero page, but otherwise doesn't exist.  If memslot creation races with a\nstage-2 page fault (EPT violation or #NPF) from L2, then if the stars align,\nKVM will attempt to walk shadow page tables using the zero page and hit a\nNULL pointer deref.\n\n  BUG: kernel NULL pointer dereference, address: 0000000000000021\n  #PF: supervisor read access in kernel mode\n  #PF: error_code(0x0000) - not-present page\n  PGD 0 P4D 0\n  Oops: Oops: 0000 [#1] SMP\n  CPU: 30 UID: 1000 PID: 941 Comm: qemu Not tainted 7.2.0-rc2-1b731e5ded48-next-vm #1741 PREEMPTLAZY\n  Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 0.0.0 02/06/2015\n  RIP: 0010:__kvm_mmu_invalidate_addr+0xea/0x210 [kvm]\n  Call Trace:\n   <TASK>\n   kvm_mmu_invalidate_addr+0x92/0xe0 [kvm]\n   __kvm_inject_emulated_page_fault+0x67/0x80 [kvm]\n   ept_page_fault+0x160/0x850 [kvm]\n   kvm_mmu_do_page_fault+0x102/0x1f0 [kvm]\n   kvm_mmu_page_fault+0x8e/0x6b0 [kvm]\n   vmx_handle_exit+0x163/0x640 [kvm_intel]\n   kvm_arch_vcpu_ioctl_run+0x960/0x2120 [kvm]\n   kvm_vcpu_ioctl+0x2c7/0x970 [kvm]\n   __x64_sys_ioctl+0x90/0xd0\n   do_syscall_64+0x67/0x5f0\n   entry_SYSCALL_64_after_hwframe+0x4b/0x53\n  RIP: 0033:0x7f606d0b53bb\n\nOpportunistically harden the shadow walks against fully invalid roots, but\nWARN, as all callers are expected/required to pre-check for a valid root.\nDon't WARN in the dummy root case as the whole point of using a dummy root\nis to provide a root that's valid enough to enter the guest, i.e. it should\nJust Work for all flows except those that *need* to know about dummy roots.\n\nAlternatively, KVM could allocate a dedicated page and associated shadow\npage structure for the dummy root, which is very tempting as it such an\napproach should be more resilient against unexpected behavior.  But that\nwould be a much larger and thus riskier change than simply terminating\nwalks of dummy roots."
    }
  ],
  "lastModified": "2026-10-19T10:19:35.943",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}