CVE-2024-47674

In the Linux kernel, the following vulnerability has been resolved: mm: avoid leaving partial pfn mappings around in error case As Jann points out, PFN mappings are special, because unlike normal memory mappings, there is no lifetime information associated with the mapping - it is just a raw mapping of PFNs with no reference counting of a 'struct page'. That's all very much intentional, but it does mean that it's easy to mess up the cleanup in case of errors. Yes, a failed mmap() will always eventually clean up any partial mappings, but without any explicit lifetime in the page table mapping itself, it's very easy to do the error handling in the wrong order. In particular, it's easy to mistakenly free the physical backing store before the page tables are actually cleaned up and (temporarily) have stale dangling PTE entries. To make this situation less error-prone, just make sure that any partial pfn mapping is torn down early, before any other error handling.
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:6.11:rc1:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc4:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc7:*:*:*:*:*:*

History

17 Nov 2024, 15:15

Type Values Removed Values Added
References
  • () https://git.kernel.org/stable/c/3213fdcab961026203dd587a4533600c70b3336b -

08 Nov 2024, 16:15

Type Values Removed Values Added
References
  • () https://git.kernel.org/stable/c/35770ca6180caa24a2b258c99a87bd437a1ee10f -

21 Oct 2024, 18:15

Type Values Removed Values Added
References
  • () https://project-zero.issues.chromium.org/issues/366053091 -

18 Oct 2024, 14:50

Type Values Removed Values Added
References () https://git.kernel.org/stable/c/5b2c8b34f6d76bfbd1dd4936eb8a0fbfb9af3959 - () https://git.kernel.org/stable/c/5b2c8b34f6d76bfbd1dd4936eb8a0fbfb9af3959 - Patch
References () https://git.kernel.org/stable/c/65d0db500d7c07f0f76fc24a4d837791c4862cd2 - () https://git.kernel.org/stable/c/65d0db500d7c07f0f76fc24a4d837791c4862cd2 - Patch
References () https://git.kernel.org/stable/c/79a61cc3fc0466ad2b7b89618a6157785f0293b3 - () https://git.kernel.org/stable/c/79a61cc3fc0466ad2b7b89618a6157785f0293b3 - Patch
References () https://git.kernel.org/stable/c/954fd4c81f22c4b6ba65379a81fd252971bf4ef3 - () https://git.kernel.org/stable/c/954fd4c81f22c4b6ba65379a81fd252971bf4ef3 - Patch
References () https://git.kernel.org/stable/c/a95a24fcaee1b892e47d5e6dcc403f713874ee80 - () https://git.kernel.org/stable/c/a95a24fcaee1b892e47d5e6dcc403f713874ee80 - Patch
CWE CWE-459
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:rc7:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc5:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc3:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc6:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc2:*:*:*:*:*:*
cpe:2.3:o:linux:linux_kernel:6.11:rc4:*:*:*:*:*:*
First Time Linux linux Kernel
Linux
CVSS v2 : unknown
v3 : unknown
v2 : unknown
v3 : 5.5

17 Oct 2024, 14:15

Type Values Removed Values Added
References
  • () https://git.kernel.org/stable/c/5b2c8b34f6d76bfbd1dd4936eb8a0fbfb9af3959 -

15 Oct 2024, 12:57

Type Values Removed Values Added
Summary
  • (es) En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: mm: evitar dejar asignaciones pfn parciales en caso de error Como señala Jann, las asignaciones PFN son especiales, porque a diferencia de las asignaciones de memoria normales, no hay información de duración asociada con la asignación: es solo una asignación sin procesar de PFN sin recuento de referencias de una 'página de estructura'. Todo eso es muy intencional, pero significa que es fácil arruinar la limpieza en caso de errores. Sí, un mmap() fallido siempre limpiará eventualmente cualquier asignación parcial, pero sin ninguna duración explícita en la asignación de la tabla de páginas en sí, es muy fácil hacer el manejo de errores en el orden incorrecto. En particular, es fácil liberar por error el almacenamiento de respaldo físico antes de que las tablas de páginas se limpien realmente y (temporalmente) tengan entradas PTE colgantes obsoletas. Para hacer que esta situación sea menos propensa a errores, simplemente asegúrese de que cualquier asignación pfn parcial se elimine temprano, antes de cualquier otro manejo de errores.

15 Oct 2024, 11:15

Type Values Removed Values Added
New CVE

Information

Published : 2024-10-15 11:15

Updated : 2024-11-17 15:15


NVD link : CVE-2024-47674

Mitre link : CVE-2024-47674

CVE.ORG link : CVE-2024-47674


JSON object : View

Products Affected

linux

  • linux_kernel
CWE
CWE-459

Incomplete Cleanup