Wysoki Odebrany

CVE-2026-79979

opublikowano:
modyfikacja:
Ocena CVSS
7.8
Wysoki · v3.1
wektor: CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H

>_ Opis

Tłumaczenie automatyczne – może zawierać nieścisłości.

Backend MMU arm64 unieważnia pojedynczy adres wirtualny z TLB za pomocą funkcji validate_tlb_page() w arch/arm64/core/mmu.c, która wydała TLBI VAE1{IS} z operandem virt >> 12. Ten operand koduje ASID w bitach [63:48], więc unieważnienie zawsze odpowiada ASID 0 (tabele stron jądra) i wpisom globalnym. Jednakże domenom pamięci przydzielane są identyfikatory ASID rozpoczynające się od 1 w arch_mem_domain_init(), a każdy prywatny liść domeny utworzony przez private_map() jest mapowany za pomocą MT_NG, tj. nieglobalnego. Dlatego buforowane tłumaczenie domeny przetrwało unieważnienie.

Wszystkie wywołujące funkcję validate_tlb_page() są ścieżkami stronicowania na żądanie. Kiedy algorytm eksmisji odzyskuje ramkę, page_frame_prepare_locked() w kernel/mmu.c wywołuje arch_mem_page_out(), co oznacza, że ​​liść jądra jest nieprawidłowy, propaguje nieprawidłowy deskryptor do każdej domeny poprzez sync_domains(), a następnie opróżnia tylko ASID 0. do_page_fault() natychmiast ponownie wykorzystuje tę samą ramkę strony do przychodzącego mapowania poprzez arch_mem_page_in(). Wątek użytkownika, który dotknął już eksmitowanej strony — k_mem_partition dodany za pomocą arch_mem_domain_partition_add() lub własny stos mapowany przez map_thread_stack() — zachowuje prawidłową translację odczytu/zapisu EL0 do tej fizycznej ramki pod własnym ASID.

Nieuprzywilejowany kod działający w wątku użytkownika może zwiększyć obciążenie pamięci, aby wymusić eksmisję, a następnie nadal uzyskiwać dostęp do nieaktualnego adresu, uzyskując dostęp do odczytu i zapisu do tego, co jądro później umieściło w tej ramce: dane nadzorcy, partycja innej domeny pamięci lub stos innego wątku. Eliminuje to izolację, którą ma egzekwować CONFIG_USERSPACE, umożliwiając ujawnienie informacji i uszkodzenie pamięci, aż do pełnego naruszenia bezpieczeństwa systemu.

Poprawka przełącza implementację na TLBI VAAE1{IS}, która dopasowuje każdy identyfikator ASID oraz wpisy zarówno globalne, jak i nieglobalne, więc żadne tłumaczenie z tagiem domeny nie przetrwa wyrzucenia strony, aktualizacji brudnego bitu lub wyczyszczenia flagi dostępu. Eksploatacja wymaga kompilacji arm64 z włączoną obsługą CONFIG_USERSPACE i CONFIG_DEMAND_PAGING, aktywnego magazynu kopii zapasowych i co najmniej jednej strony na żądanie, która jest również prywatnie mapowana w domenie pamięci użytkownika. To samo zatwierdzenie dodatkowo powstrzymuje globalize_table() przed pozbawieniem uprawnień EL0 i atrybutów nieglobalnych z prywatnych liści domeny podczas synchronizacji stronicowania, co wcześniej powodowało, że wątki użytkowników traciły dostęp do własnych partycji i stosów.

>_ Słabości (CWE)

>_ Referencje

Dane podatności pochodzą z oficjalnych źródeł (CVE® List / NVD). Opisy po polsku są tłumaczone automatycznie i mogą zawierać nieścisłości – na stronie rekordu można wyświetlić wersję angielską.

This product uses the NVD API but is not endorsed or certified by the NVD.

Copyright © 1999–2026, The MITRE Corporation. CVE is a registered trademark and the CVE logo is a registered trademark of The MITRE Corporation.

CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE®). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy. ALL DOCUMENTS AND THE INFORMATION CONTAINED THEREIN PROVIDED BY MITRE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.

NVD Terms of Use / CVE® Terms of Use / nvd.nist.gov / cve.org