Katalog CVE

CVE-2026-97496

WysokieCVSS 7.1
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.12%

Percentyl 2 - wyżej niż 2% wszystkich znanych CVE

Streszczenie

W jądrze Linux w funkcji get_wave_state() sterownika drm/amdkfd wartości cp_hqd_cntl_stack_size i cp_hqd_cntl_stack_offset są odczytywane bezpośrednio z MQD i nie są weryfikowane. Na ścieżce przywracania CRIU (AMDKFD_IOC_RESTORE_PROCESS) atakujący może kontrolować te wartości, co prowadzi do nieograniczonego copy_to_user() i wycieku sąsiedniej pamięci GTT/jądra (nawet ~4 GiB przy niedomiarze lub 1 MiB przy zaniżonej alokacji).

Ocena ryzyka

Możliwy wyciek poufnych danych z pamięci jądra, w tym wskaźników KASLR i buforów innych kolejek, co może ułatwić dalszą eksploatację systemu. Wymaga lokalnego dostępu i możliwości wywołania operacji przywracania procesu.

Rekomendacja

Zaktualizować jądro Linux do wersji zawierającej poprawkę ograniczającą cp_hqd_cntl_stack_size do rozmiaru q->ctl_stack_size oraz cp_hqd_cntl_stack_offset do tej samej wartości przed wykonaniem operacji arytmetycznych i copy_to_user().

Inne podatności w Linux kernel

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: Fix OOB memory exposure in get_wave_state() The get_wave_state() function for v9 trusts cp_hqd_cntl_stack_size and cp_hqd_cntl_stack_offset values read directly from the MQD, which are written by GPU microcode and fully attacker-controlled on the CRIU-restore path (via AMDKFD_IOC_RESTORE_PROCESS with H3). this leads to an unbounded copy_to_user() that can leak adjacent GTT/kernel memory. If offset > size, integer underflow produces a ~4 GiB read length, if size is set to 1 MiB against a 4 KiB allocation, we leak 1 MiB of adjacent kernel memory (other queues' MQDs, ring buffers, KASLR pointers). Fix by clamping both cp_hqd_cntl_stack_size to the actual allocated buffer size (q->ctl_stack_size) and cp_hqd_cntl_stack_offset to the clamped size before performing arithmetic and copy_to_user(). This ensures we never read beyond the allocated kernel BO regardless of attacker-supplied MQD field values.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS