// For flags

CVE-2024-26646

thermal: intel: hfi: Add syscore callbacks for system-wide PM

Severity Score

4.4
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

In the Linux kernel, the following vulnerability has been resolved:

thermal: intel: hfi: Add syscore callbacks for system-wide PM

The kernel allocates a memory buffer and provides its location to the
hardware, which uses it to update the HFI table. This allocation occurs
during boot and remains constant throughout runtime.

When resuming from hibernation, the restore kernel allocates a second
memory buffer and reprograms the HFI hardware with the new location as
part of a normal boot. The location of the second memory buffer may
differ from the one allocated by the image kernel.

When the restore kernel transfers control to the image kernel, its HFI
buffer becomes invalid, potentially leading to memory corruption if the
hardware writes to it (the hardware continues to use the buffer from the
restore kernel).

It is also possible that the hardware "forgets" the address of the memory
buffer when resuming from "deep" suspend. Memory corruption may also occur
in such a scenario.

To prevent the described memory corruption, disable HFI when preparing to
suspend or hibernate. Enable it when resuming.

Add syscore callbacks to handle the package of the boot CPU (packages of
non-boot CPUs are handled via CPU offline). Syscore ops always run on the
boot CPU. Additionally, HFI only needs to be disabled during "deep" suspend
and hibernation. Syscore ops only run in these cases.

[ rjw: Comment adjustment, subject and changelog edits ]

En el kernel de Linux, se resolvió la siguiente vulnerabilidad: térmica: intel: hfi: agregar devoluciones de llamada de syscore para PM en todo el sistema El kernel asigna un búfer de memoria y proporciona su ubicación al hardware, que lo utiliza para actualizar la tabla HFI. Esta asignación ocurre durante el arranque y permanece constante durante el tiempo de ejecución. Al salir de la hibernación, el kernel de restauración asigna un segundo búfer de memoria y reprograma el hardware HFI con la nueva ubicación como parte de un inicio normal. La ubicación del segundo búfer de memoria puede diferir de la asignada por el núcleo de la imagen. Cuando el kernel de restauración transfiere el control al kernel de imagen, su búfer HFI deja de ser válido, lo que puede provocar daños en la memoria si el hardware escribe en él (el hardware continúa usando el búfer del kernel de restauración). También es posible que el hardware "olvide" la dirección del búfer de memoria al reanudar desde una suspensión "profunda". En tal escenario también puede ocurrir corrupción de memoria. Para evitar la corrupción de memoria descrita, desactive HFI cuando se prepare para suspender o hibernar. Habilítelo al reanudar. Agregue devoluciones de llamada de syscore para manejar el paquete de la CPU de arranque (los paquetes de CPU que no son de arranque se manejan a través de la CPU sin conexión). Las operaciones de Syscore siempre se ejecutan en la CPU de arranque. Además, HFI solo necesita desactivarse durante la suspensión e hibernación "profundas". Las operaciones de Syscore solo se ejecutan en estos casos. [rjw: ajuste de comentarios, ediciones de asunto y registro de cambios]

*Credits: N/A
CVSS Scores
Attack Vector
Local
Attack Complexity
Low
Privileges Required
High
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2024-02-19 CVE Reserved
  • 2024-03-26 CVE Published
  • 2024-03-27 EPSS Updated
  • 2024-12-19 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-99: Improper Control of Resource Identifiers ('Resource Injection')
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
< 6.1.76
Search vendor "Linux" for product "Linux Kernel" and version " < 6.1.76"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
< 6.6.15
Search vendor "Linux" for product "Linux Kernel" and version " < 6.6.15"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
< 6.7.3
Search vendor "Linux" for product "Linux Kernel" and version " < 6.7.3"
en
Affected
Linux
Search vendor "Linux"
Linux Kernel
Search vendor "Linux" for product "Linux Kernel"
< 6.8
Search vendor "Linux" for product "Linux Kernel" and version " < 6.8"
en
Affected