CVE-2024-40974

In the Linux kernel, the following vulnerability has been resolved: powerpc/pseries: Enforce hcall result buffer validity and size plpar_hcall(), plpar_hcall9(), and related functions expect callers to provide valid result buffers of certain minimum size. Currently this is communicated only through comments in the code and the compiler has no idea. For example, if I write a bug like this: long retbuf[PLPAR_HCALL_BUFSIZE]; // should be PLPAR_HCALL9_BUFSIZE plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...); This compiles with no diagnostics emitted, but likely results in stack corruption at runtime when plpar_hcall9() stores results past the end of the array. (To be clear this is a contrived example and I have not found a real instance yet.) To make this class of error less likely, we can use explicitly-sized array parameters instead of pointers in the declarations for the hcall APIs. When compiled with -Warray-bounds[1], the code above now provokes a diagnostic like this: error: array argument is too small; is of size 32, callee requires at least 72 [-Werror,-Warray-bounds] 60 | plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, | ^ ~~~~~~ [1] Enabled for LLVM builds but not GCC for now. See commit 0da6e5fd6c37 ("gcc: disable '-Warray-bounds' for gcc-13 too") and related changes.
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:*:*:*:*:*:*:*:*

History

17 Sep 2025, 14:46

Type Values Removed Values Added
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 7.8
First Time Linux
Linux linux Kernel
CWE CWE-787
References () https://git.kernel.org/stable/c/19c166ee42cf16d8b156a6cb4544122d9a65d3ca - () https://git.kernel.org/stable/c/19c166ee42cf16d8b156a6cb4544122d9a65d3ca - Patch
References () https://git.kernel.org/stable/c/262e942ff5a839b9e4f3302a8987928b0c8b8a2d - () https://git.kernel.org/stable/c/262e942ff5a839b9e4f3302a8987928b0c8b8a2d - Patch
References () https://git.kernel.org/stable/c/3ad0034910a57aa88ed9976b1431b7b8c84e0048 - () https://git.kernel.org/stable/c/3ad0034910a57aa88ed9976b1431b7b8c84e0048 - Patch
References () https://git.kernel.org/stable/c/8aa11aa001576bf3b00dcb8559564ad7a3113588 - () https://git.kernel.org/stable/c/8aa11aa001576bf3b00dcb8559564ad7a3113588 - Patch
References () https://git.kernel.org/stable/c/a8c988d752b3d98d5cc1e3929c519a55ef55426c - () https://git.kernel.org/stable/c/a8c988d752b3d98d5cc1e3929c519a55ef55426c - Patch
References () https://git.kernel.org/stable/c/aa6107dcc4ce9a3451f2d729204713783b657257 - () https://git.kernel.org/stable/c/aa6107dcc4ce9a3451f2d729204713783b657257 - Patch
References () https://git.kernel.org/stable/c/acf2b80c31c37acab040baa3cf5f19fbd5140b18 - () https://git.kernel.org/stable/c/acf2b80c31c37acab040baa3cf5f19fbd5140b18 - Patch
References () https://git.kernel.org/stable/c/ff2e185cf73df480ec69675936c4ee75a445c3e4 - () https://git.kernel.org/stable/c/ff2e185cf73df480ec69675936c4ee75a445c3e4 - Patch
CPE cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*

21 Nov 2024, 09:31

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/19c166ee42cf16d8b156a6cb4544122d9a65d3ca - () https://git.kernel.org/stable/c/19c166ee42cf16d8b156a6cb4544122d9a65d3ca -
References () https://git.kernel.org/stable/c/262e942ff5a839b9e4f3302a8987928b0c8b8a2d - () https://git.kernel.org/stable/c/262e942ff5a839b9e4f3302a8987928b0c8b8a2d -
References () https://git.kernel.org/stable/c/3ad0034910a57aa88ed9976b1431b7b8c84e0048 - () https://git.kernel.org/stable/c/3ad0034910a57aa88ed9976b1431b7b8c84e0048 -
References () https://git.kernel.org/stable/c/8aa11aa001576bf3b00dcb8559564ad7a3113588 - () https://git.kernel.org/stable/c/8aa11aa001576bf3b00dcb8559564ad7a3113588 -
References () https://git.kernel.org/stable/c/a8c988d752b3d98d5cc1e3929c519a55ef55426c - () https://git.kernel.org/stable/c/a8c988d752b3d98d5cc1e3929c519a55ef55426c -
References () https://git.kernel.org/stable/c/aa6107dcc4ce9a3451f2d729204713783b657257 - () https://git.kernel.org/stable/c/aa6107dcc4ce9a3451f2d729204713783b657257 -
References () https://git.kernel.org/stable/c/acf2b80c31c37acab040baa3cf5f19fbd5140b18 - () https://git.kernel.org/stable/c/acf2b80c31c37acab040baa3cf5f19fbd5140b18 -
References () https://git.kernel.org/stable/c/ff2e185cf73df480ec69675936c4ee75a445c3e4 - () https://git.kernel.org/stable/c/ff2e185cf73df480ec69675936c4ee75a445c3e4 -
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: powerpc/pseries: aplica la validez y el tamaño del búfer de resultados de hcall plpar_hcall(), plpar_hcall9() y las funciones relacionadas esperan que los llamadores proporcionen búferes de resultados válidos de cierto tamaño mínimo. Actualmente esto se comunica sólo a través de comentarios en el código y el compilador no tiene idea. Por ejemplo, si escribo un error como este: long retbuf[PLPAR_HCALL_BUFSIZE]; // debería ser PLPAR_HCALL9_BUFSIZE plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, ...); Esto se compila sin emitir diagnósticos, pero probablemente da como resultado daños en la pila en tiempo de ejecución cuando plpar_hcall9() almacena los resultados más allá del final de la matriz. (Para ser claros, este es un ejemplo artificial y todavía no he encontrado una instancia real). Para hacer que esta clase de error sea menos probable, podemos usar parámetros de matriz de tamaño explícito en lugar de punteros en las declaraciones de las API hcall. Cuando se compila con -Warray-bounds[1], el código anterior ahora provoca un diagnóstico como este: error: el argumento de la matriz es demasiado pequeño; es de tamaño 32, el destinatario requiere al menos 72 [-Werror,-Warray-bounds] 60 | plpar_hcall9(H_ALLOCATE_VAS_WINDOW, retbuf, | ^ ~~~~~~ [1] Habilitado para compilaciones LLVM pero no para GCC por ahora. Consulte El commit 0da6e5fd6c37 ("gcc: deshabilite '-Warray-bounds' para gcc-13 también") y relacionados cambios.

12 Jul 2024, 16:34

Type Values Removed Values Added
New CVE

Information

Published : 2024-07-12 13:15

Updated : 2025-09-17 14:46


NVD link : CVE-2024-40974

Mitre link : CVE-2024-40974

CVE.ORG link : CVE-2024-40974


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-787

Out-of-bounds Write