CVE-2026-98640 in Linux
Resumen
por VulDB • 2026-10-18
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
HID: amd_sfh: Validar el tamaño del PCI BAR antes del mapeo
El controlador amd_sfh mapea el PCI BAR 2 utilizando pcim_iomap_regions() y posteriormente accede a registros MMIO en desplazamientos de hasta 0x10958 (por ejemplo, AMD_P2C_MSG3 en 0x1068C). Sin embargo, el controlador nunca valida que el tamaño del BAR sea lo suficientemente grande para cubrir estos accesos. Si el controlador se vincula a un dispositivo con un BAR 2 más pequeño, esto provoca un acceso fuera de los límites de la memoria y una falla de página durante la función de sondeo (probe).
Por ejemplo, puede producirse una falla de página al leer desde privdata->mmio + AMD_P2C_MSG3 en mp2_select_ops():
BUG: unable to handle page fault for address: ffffc9000390368c PGD 100000067 P4D 100000067 PUD 1012c1067 PMD 105b64067 PTE 0 Oops: Oops: 0000 [#1] SMP KASAN NOPTI
RIP: 0010:readl arch/x86/include/asm/io.h:59 [inline]
RIP: 0010:mp2_select_ops drivers/hid/amd-sfh-hid/amd_sfh_pcie.c:282 [inline]
RIP: 0010:amd_mp2_pci_probe+0x337/0x5f0 drivers/hid/amd-sfh-hid/amd_sfh_pcie.c:487 Call Trace: <TASK> local_pci_probe drivers/pci/pci-driver.c:332 [inline]
pci_call_probe drivers/pci/pci-driver.c:394 [inline]
__pci_device_probe drivers/pci/pci-driver.c:455 [inline]
pci_device_probe+0x431/0xc90 drivers/pci/pci-driver.c:489
Se soluciona este problema verificando que la longitud del BAR 2 sea de al menos 128 KB antes de intentar mapearlo. Dado que el desplazamiento máximo accedido es 0x10958 y los tamaños de PCI BAR son potencias de 2, cualquier hardware legítimo tendrá un tamaño de BAR de al menos 128 KB.
If you want to get best quality of vulnerability data, you may have to visit VulDB.