CVE-2024-43840

In the Linux kernel, the following vulnerability has been resolved: bpf, arm64: Fix trampoline for BPF_TRAMP_F_CALL_ORIG When BPF_TRAMP_F_CALL_ORIG is set, the trampoline calls __bpf_tramp_enter() and __bpf_tramp_exit() functions, passing them the struct bpf_tramp_image *im pointer as an argument in R0. The trampoline generation code uses emit_addr_mov_i64() to emit instructions for moving the bpf_tramp_image address into R0, but emit_addr_mov_i64() assumes the address to be in the vmalloc() space and uses only 48 bits. Because bpf_tramp_image is allocated using kzalloc(), its address can use more than 48-bits, in this case the trampoline will pass an invalid address to __bpf_tramp_enter/exit() causing a kernel crash. Fix this by using emit_a64_mov_i64() in place of emit_addr_mov_i64() as it can work with addresses that are greater than 48-bits.
Configurations

Configuration 1 (hide)

cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

History

29 Oct 2024, 16:25

Type Values Removed Values Added
First Time Linux linux Kernel
Linux
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
CWE NVD-CWE-noinfo
References () https://git.kernel.org/stable/c/19d3c179a37730caf600a97fed3794feac2b197b - () https://git.kernel.org/stable/c/19d3c179a37730caf600a97fed3794feac2b197b - Patch
References () https://git.kernel.org/stable/c/6d218fcc707d6b2c3616b6cd24b948fd4825cfec - () https://git.kernel.org/stable/c/6d218fcc707d6b2c3616b6cd24b948fd4825cfec - Patch

19 Aug 2024, 12:59

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: bpf, arm64: Reparar trampolín para BPF_TRAMP_F_CALL_ORIG Cuando BPF_TRAMP_F_CALL_ORIG está configurado, el trampolín llama a las funciones __bpf_tramp_enter() y __bpf_tramp_exit(), pasándoles el puntero struct bpf_tramp_image *im como argumento en R0 . El código de generación de trampolín usa emit_addr_mov_i64() para emitir instrucciones para mover la dirección bpf_tramp_image a R0, pero emit_addr_mov_i64() asume que la dirección está en el espacio vmalloc() y usa solo 48 bits. Debido a que bpf_tramp_image se asigna usando kzalloc(), su dirección puede usar más de 48 bits, en este caso el trampolín pasará una dirección no válida a __bpf_tramp_enter/exit() provocando un bloqueo del kernel. Solucione este problema utilizando emit_a64_mov_i64() en lugar de emit_addr_mov_i64(), ya que puede funcionar con direcciones superiores a 48 bits.

17 Aug 2024, 10:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-08-17 10:15

Updated : 2024-10-29 16:25


NVD link : CVE-2024-43840

Mitre link : CVE-2024-43840

CVE.ORG link : CVE-2024-43840


JSON object : View

Products Affected

linux

  • linux_kernel