Odebrany

CVE-2026-89966

opublikowano:
modyfikacja:
Ocena CVSS
n/a
Brak oceny

>_ Opis

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

W jądrze Linuksa usunięto następującą lukę:

mm/hugetlb_cma: napraw wyłuskiwanie zerowej maski węzłów w hugetlb_cma_alloc_frozen_folio

alloc_buddy_hugetlb_folio_with_mpol() może przekazać maskę węzła NULL do
alloc_fresh_hugetlb_folio() jako rozwiązanie awaryjne do alokacji ze wszystkich węzłów. Jeśli
kolejność jest gigantyczna, funkcja alloc_fresh_hugetlb_folio() propaguje wartość NULL
maskę węzłów w dół do hugetlb_cma_alloc_frozen_folio() poprzez
alloc_gigantic_frozen_folio().

Dodatkowo, już wcześniej podjęto próbę hugetlb_cma_alloc_frozen_folio().
alokacja na hugetlb_cma[nid] bez sprawdzania, czy nid jest uwzględniony w
maska węzła wywołującego. Dodanie kontroli node_isset(nid, *nodemask) gwarantuje, że
Początkowa alokacja preferowanego węzła uwzględnia politykę pamięci/maskę węzła.

Jednakże hugetlb_cma_alloc_frozen_folio() usuwa odwołanie do maski węzła w
node_isset(nid, *nodemask) i for_each_node_mask(node, *nodemask),
co prowadzi do paniki jądra dereferencji wskaźnika zerowego, gdy maska ​​węzła ma wartość NULL.

Napraw to, sprawdzając, czy maska węzła ma wartość NULL
hugetlb_cma_alloc_frozen_folio() i ustawienie domyślne
cpuset_current_mems_allowed. Dołącz próby alokacji w pliku
Pętla ponawiania cpuset seqcount, tak aby w przypadku jednoczesnej zmiany cpuset
podczas alokacji próby są ponawiane przy użyciu zaktualizowanej maski węzła.
Gwarantuje to, że początkowa kontrola węzła i pętla awaryjna będą bezpiecznie honorowane
zestawu procesora zadania bez naruszania ograniczeń zestawu procesora lub powodowania wartości NULL
dereferencje wskaźników lub nieoczekiwane błędy alokacji.

Z punktu widzenia przestrzeni użytkownika ten błąd umożliwia nieuprzywilejowanemu użytkownikowi
spowodować awarię jądra (wywołać panikę), żądając gigantycznej ogromnej strony
alokacja z MPOL_PREFERRED_MANY w systemie, w którym jest tylko CMA
skonfigurowany w podzbiorze węzłów NUMA.

Można to odtworzyć, uruchamiając maszynę wirtualną z dwoma węzłami NUMA, co ogranicza
CMA do węzła 1 (np. hugetlb_cma=1:1G default_hugepagesz=1G hugepagesz=1G
hugepages=0) i uruchomienie programu, który przydziela obszar ogromnej strony o wielkości 1 GB
bez rezerwacji, ogranicza alokację do węzła 0 za pomocą mbind() with
MPOL_PREFERRED_MANY i wyzwala błąd strony:

void *ptr = mmap(NULL, 1UL << 30, PROT_READ | PROT_WRITE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_HUGETLB |
MAP_HUGE_1 GB | MAP_NORESERVE, -1, 0);
długa maska ​​węzłów bez znaku = 1; /* Węzeł 0 */
mbind(ptr, 1UL << 30, MPOL_PREFERRED_MANY, &maska węzła,
sizeof(maska węzła) * 8, 0);
memset(ptr, 0, 1UL << 30); /* Błąd wyzwalacza */

Powoduje to dereferencję wskaźnika NULL:

BŁĄD: wyłuskiwanie wskaźnika NULL jądra, adres: 0000000000000000
#PF: dostęp do odczytu nadzorcy w trybie jądra
#PF: kod_błędu(0x0000) - nie ma strony
Ups: Ups: 0000 [#1] SMP NOPTI
RIP: 0010:hugetlb_cma_alloc_frozen_folio+0x75/0x120
Zadzwoń do śledzenia:
<ZADANIE>
only_alloc_fresh_hugetlb_folio.isra.0+0x2c/0x160
alloc_surplus_hugetlb_folio+0x6d/0x100
alloc_hugetlb_folio+0x3c5/0x660
hugetlb_no_page+0x3d9/0x650

>_ 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