CVE-2024-45006

In the Linux kernel, the following vulnerability has been resolved: xhci: Fix Panther point NULL pointer deref at full-speed re-enumeration re-enumerating full-speed devices after a failed address device command can trigger a NULL pointer dereference. Full-speed devices may need to reconfigure the endpoint 0 Max Packet Size value during enumeration. Usb core calls usb_ep0_reinit() in this case, which ends up calling xhci_configure_endpoint(). On Panther point xHC the xhci_configure_endpoint() function will additionally check and reserve bandwidth in software. Other hosts do this in hardware If xHC address device command fails then a new xhci_virt_device structure is allocated as part of re-enabling the slot, but the bandwidth table pointers are not set up properly here. This triggers the NULL pointer dereference the next time usb_ep0_reinit() is called and xhci_configure_endpoint() tries to check and reserve bandwidth [46710.713538] usb 3-1: new full-speed USB device number 5 using xhci_hcd [46710.713699] usb 3-1: Device not responding to setup address. [46710.917684] usb 3-1: Device not responding to setup address. [46711.125536] usb 3-1: device not accepting address 5, error -71 [46711.125594] BUG: kernel NULL pointer dereference, address: 0000000000000008 [46711.125600] #PF: supervisor read access in kernel mode [46711.125603] #PF: error_code(0x0000) - not-present page [46711.125606] PGD 0 P4D 0 [46711.125610] Oops: Oops: 0000 [#1] PREEMPT SMP PTI [46711.125615] CPU: 1 PID: 25760 Comm: kworker/1:2 Not tainted 6.10.3_2 #1 [46711.125620] Hardware name: Gigabyte Technology Co., Ltd. [46711.125623] Workqueue: usb_hub_wq hub_event [usbcore] [46711.125668] RIP: 0010:xhci_reserve_bandwidth (drivers/usb/host/xhci.c Fix this by making sure bandwidth table pointers are set up correctly after a failed address device command, and additionally by avoiding checking for bandwidth in cases like this where no actual endpoints are added or removed, i.e. only context for default control endpoint 0 is evaluated.
Configurations

Configuration 1 (hide)

OR cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*

History

06 Sep 2024, 16:26

Type Values Removed Values Added
First Time Linux
Linux linux Kernel
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*
References () https://git.kernel.org/stable/c/0f0654318e25b2c185e245ba4a591e42fabb5e59 - () https://git.kernel.org/stable/c/0f0654318e25b2c185e245ba4a591e42fabb5e59 - Patch
References () https://git.kernel.org/stable/c/365ef7c4277fdd781a695c3553fa157d622d805d - () https://git.kernel.org/stable/c/365ef7c4277fdd781a695c3553fa157d622d805d - Patch
References () https://git.kernel.org/stable/c/5ad898ae82412f8a689d59829804bff2999dd0ea - () https://git.kernel.org/stable/c/5ad898ae82412f8a689d59829804bff2999dd0ea - Patch
References () https://git.kernel.org/stable/c/6b99de301d78e1f5249e57ef2c32e1dec3df2bb1 - () https://git.kernel.org/stable/c/6b99de301d78e1f5249e57ef2c32e1dec3df2bb1 - Patch
References () https://git.kernel.org/stable/c/8fb9d412ebe2f245f13481e4624b40e651570cbd - () https://git.kernel.org/stable/c/8fb9d412ebe2f245f13481e4624b40e651570cbd - Patch
References () https://git.kernel.org/stable/c/a57b0ebabe6862dce0a2e0f13e17941ad72fc56b - () https://git.kernel.org/stable/c/a57b0ebabe6862dce0a2e0f13e17941ad72fc56b - Patch
References () https://git.kernel.org/stable/c/af8e119f52e9c13e556be9e03f27957554a84656 - () https://git.kernel.org/stable/c/af8e119f52e9c13e556be9e03f27957554a84656 - Patch
References () https://git.kernel.org/stable/c/ef0a0e616b2789bb804a0ce5e161db03170a85b6 - () https://git.kernel.org/stable/c/ef0a0e616b2789bb804a0ce5e161db03170a85b6 - Patch
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CWE CWE-476

05 Sep 2024, 12:53

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: xhci: Fix Panther point NULL point deref at full-speed re-enumeration reenumerar dispositivos de velocidad completa después de un comando de dispositivo de dirección fallido puede desencadenar una desreferencia de puntero NULL. Los dispositivos de velocidad completa pueden necesitar reconfigurar el valor 0 Max Packet Size del endpoint durante la enumeración. Usb core llama a usb_ep0_reinit() en este caso, que termina llamando a xhci_configure_endpoint(). En Panther point xHC, la función xhci_configure_endpoint() verificará y reservará adicionalmente el ancho de banda en el software. Otros hosts hacen esto en el hardware Si el comando de dispositivo de dirección xHC falla, se asigna una nueva estructura xhci_virt_device como parte de la rehabilitación de la ranura, pero los punteros de la tabla de ancho de banda no se configuran correctamente aquí. Esto activa la desreferencia del puntero NULL la próxima vez que se llama a usb_ep0_reinit() y xhci_configure_endpoint() intenta verificar y reservar el ancho de banda [46710.713538] usb 3-1: nuevo dispositivo USB de velocidad completa número 5 que usa xhci_hcd [46710.713699] usb 3-1: el dispositivo no responde a la dirección de configuración. [46710.917684] usb 3-1: el dispositivo no responde a la dirección de configuración. [46711.125536] usb 3-1: el dispositivo no acepta la dirección 5, error -71 [46711.125594] ERROR: desreferencia de puntero NULL del kernel, dirección: 0000000000000008 [46711.125600] #PF: acceso de lectura del supervisor en modo kernel [46711.125603] #PF: error_code(0x0000) - página no presente [46711.125606] PGD 0 P4D 0 [46711.125610] Oops: Oops: 0000 [#1] PREEMPT SMP PTI [46711.125615] CPU: 1 PID: 25760 Comm: kworker/1:2 No contaminado 6.10.3_2 #1 [46711.125620] Nombre del hardware: Gigabyte Technology Co., Ltd. [46711.125623] Cola de trabajo: usb_hub_wq hub_event [usbcore] [46711.125668] RIP: 0010:xhci_reserve_bandwidth (drivers/usb/host/xhci.c Solucione esto asegurándose de que los punteros de la tabla de ancho de banda estén configurados correctamente después de un comando de dispositivo de dirección fallido y, además, evitando verificar el ancho de banda en casos como este donde no se agregan ni eliminan endpoints reales, es decir, solo se evalúa el contexto para el endpoint de control predeterminado 0.

04 Sep 2024, 20:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-09-04 20:15

Updated : 2024-09-06 16:26


NVD link : CVE-2024-45006

Mitre link : CVE-2024-45006

CVE.ORG link : CVE-2024-45006


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-476

NULL Pointer Dereference