// For flags

CVE-2024-0671

Mali GPU Kernel Driver allows improper GPU memory processing operations

Severity Score

6.8
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

1
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

Track
*SSVC
Descriptions

Use After Free vulnerability in Arm Ltd Midgard GPU Kernel Driver, Arm Ltd Bifrost GPU Kernel Driver, Arm Ltd Valhall GPU Kernel Driver, Arm Ltd Arm 5th Gen GPU Architecture Kernel Driver allows a local non-privileged user to make improper GPU memory processing operations to gain access to already freed memory.This issue affects Midgard GPU Kernel Driver: from r19p0 through r32p0; Bifrost GPU Kernel Driver: from r7p0 through r48p0; Valhall GPU Kernel Driver: from r19p0 through r48p0; Arm 5th Gen GPU Architecture Kernel Driver: from r41p0 through r48p0.

Vulnerabilidad de Use After Free en Arm Ltd Midgard GPU Kernel Driver, Arm Ltd Bifrost GPU Kernel Driver, Arm Ltd Valhall GPU Kernel Driver, Arm Ltd Arm 5th Gen GPU Architecture Kernel Driver permite a un usuario local sin privilegios realizar operaciones de procesamiento de memoria GPU inadecuadas para obtener acceso a la memoria ya liberada. Este problema afecta al controlador del kernel de GPU Midgard: desde r19p0 hasta r32p0; Controlador del kernel de GPU Bifrost: desde r7p0 hasta r48p0; Controlador del kernel de GPU Valhall: desde r19p0 hasta r48p0; Controlador del kernel de arquitectura de GPU Arm de quinta generaciĆ³n: desde r41p0 hasta r48p0.

In mmu_insert_pages_no_flush(), when a HUGE_HEAD page is mapped to a 2M aligned GPU address, this is done by creating an Address Translation Entry (ATE) at MIDGARD_MMU_LEVEL(2) (in other words, an ATE covering 2M of memory is created). This is wrong because it assumes that at least 2M of memory should be mapped. mmu_insert_pages_no_flush() can be called in cases where less than that should be mapped, for example when creating a short alias of a big native allocation. Later, when kbase_mmu_teardown_pgd_pages() tries to tear down this region, it will detect that unmapping a subsection of a 2M ATE is not possible and write a log message complaining about this, but then proceed as if everything was fine while leaving the ATE intact. This means the higher-level code will proceed to free the referenced physical memory while the ATE still points to it.

*Credits: N/A
CVSS Scores
Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
Low
Integrity
High
Availability
None
Attack Vector
Local
Attack Complexity
Low
Authentication
None
Confidentiality
Complete
Integrity
Complete
Availability
Complete
* Common Vulnerability Scoring System
SSVC
  • Decision:Track
Exploitation
None
Automatable
No
Tech. Impact
Partial
* Organization's Worst-case Scenario
Timeline
  • 2024-01-18 CVE Reserved
  • 2024-04-19 CVE Published
  • 2024-05-13 First Exploit
  • 2024-08-01 CVE Updated
  • 2025-03-30 EPSS Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
CWE
  • CWE-416: Use After Free
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Arm
Search vendor "Arm"
5th Gen Gpu Architecture Kernel Driver
Search vendor "Arm" for product "5th Gen Gpu Architecture Kernel Driver"
*-
Affected
Arm
Search vendor "Arm"
Bifrost Gpu Kernel Driver
Search vendor "Arm" for product "Bifrost Gpu Kernel Driver"
*-
Affected
Arm
Search vendor "Arm"
Midgard Gpu Kernel Driver
Search vendor "Arm" for product "Midgard Gpu Kernel Driver"
*-
Affected
Arm
Search vendor "Arm"
Valhall Gpu Kernel Driver
Search vendor "Arm" for product "Valhall Gpu Kernel Driver"
*-
Affected