Odebrany

CVE-2026-89754

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/pagewalk: napraw przestarzały spacer->akcja uciekająca walk_pmd_range()

Jeśli ->pmd_entry() ustawia walk->action = ACTION_AGAIN, sprawdzenie pmd_none() jest
ponowiona próba. Wpis PMD może zostać wyczyszczony w momencie ponownej próby.

W takim przypadku, jeśli nie określono walk->ops->install_pte, kod
przechodzi do następnego wpisu PMD w zakresie bez resetowania
przejdź->akcja do ACTION_SUBTREE.

To powoduje, że walk->action jest błędnie ustawione na ACTION_AGAIN, czyli
nieprawidłowe.

Było to niepoprawne, ale nie stanowiło problemu, aż do zatwierdzenia 3b89863c3fa4
(„mm/pagewalk: napraw wyścig między równoczesnym podziałem a ponownym ustawieniem”), który
zaktualizowano funkcję walk_pud_range(), aby sprawdzić opcję walk->action == ACTION_AGAIN
walk_pmd_range() powodujący ponowną próbę przejścia PUD.

W tym przypadku powoduje to zduplikowane wywołania zwrotne spaceru,
co jest błędne i spowoduje uszkodzenie każdego obiektu wywołującego, który nie jest idempotentny
w związku z tym (i marnować czas na tych, którzy są). Wynik
jest zapisem poza zakresem, wyzwalanym przez lokalny fuzzer:

[ 2.272695] ===================================================================
[ 2.273471] BŁĄD: KASAN: płyta poza granicami w __mincore_unmapped_range+0x14f/0x190
[2.274302] Zapisz rozmiar 1 pod adresem ffff888008d9b000 w zadaniu poc/106
[ 2.274966]
[2.275154] Procesor: 0 UID: 1000 PID: 106 Comm: poc Nieskażony 7.2.0-rc6-00429-ga7c7074b58d2 #55 PREEMPT (leniwy)
[ 2.275159] Nazwa sprzętu: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 01.04.2014
[2.275164] Śledzenie połączeń:
[ 2.275170] <ZADANIE>
[ 2.275172] dump_stack_lvl+0x53/0x70
[ 2.275200] print_report+0xd0/0x630
[2.275210] ? __pfx__raw_spin_lock_irqsave+0x10/0x10
[2.275219] ? irqentry_exit+0xd2/0x670
[2.275224] ? irqentry_exit+0xd2/0x670
[2.275226] ? __virt_addr_valid+0xef/0x1a0
[2.275239] ? __mincore_unmapped_range+0x14f/0x190
[ 2.275242] kasan_report+0xce/0x100
[2.275245] ? __mincore_unmapped_range+0x14f/0x190
[ 2.275248] __mincore_unmapped_range+0x14f/0x190
[ 2.275252] mincore_unmapped_range+0x45/0x70
[ 2.275254] walk_pgd_range+0xafc/0xfc0
[2.275261] ? __pfx_walk_pgd_range+0x10/0x10
[2.275264] ? __update_load_avg_se+0x3d1/0x670
[ 2.275275] __walk_page_range+0xc0/0x310
[2.275278] ? __pfx_find_vma+0x10/0x10
[2.275281] ? finish_task_switch.isra.0+0x16d/0x4f0
[ 2.275290] walk_page_range_mm_unsafe+0x26f/0x3a0
[2.275293] ? __pfx_mtree_load+0x10/0x10
[2.275298] ? __pfx_walk_page_range_mm_unsafe+0x10/0x10
[2.275302] ? __free_frozen_pages+0x54d/0x7e0
[ 2.275308] __do_sys_mincore+0x132/0x380
[ 2.275311] do_syscall_64+0xf9/0x540
[ 2.275316] wpis_SYSCALL_64_after_hwframe+0x77/0x7f
[2.275322] RIP: 0033:0x422ccd
[ 2.275326] Kod: b3 66 2e 0f 1f 84 00 00 00 00 00 66 90 f3 0f 1e fa 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48
[2.275329] RSP: 002b:00007ffffffffec18 EFLAGS: 00000287 ORIG_RAX: 000000000000001b
[2.275337] RAX: ffffffffffffffda RBX: 0000000000000066 RCX: 0000000000422ccd
[2.275339] RDX: 00000000004d0940 RSI: 0000000001000000 RDI: 00007ffff4000000
[ 2.275340] RBP: 00000000004d0940 R08: 0000000000000100 R09: 0000000000000100
[ 2.275342] R10: 0000000000000100 R11: 0000000000000287 R12: 20c49ba5e353f7cf
[ 2.275343] R13: 00000000004990d3 R14: 000000000000000 R15: 0000000000000001
[ 2.275346] </TASK>
[ 2.275347]
[ 2.296904] Błędny adres należy do obiektu pod adresem ffff888008d9b000
[2.296904], który należy do znacznika pamięci podręcznej o rozmiarze 80
[2.298151] Błędny adres znajduje się w odległości 0 bajtów
[ 2.298151] przydzielony region 80-bajtowy [ffff888008d9b000, ffff888008d9b050)
[ 2.299408]
[ 2.299601] Błędny adres należy do strony fizycznej:
[ 2.300191] strona: refcount:0 mapcount:0 mapowanie:0000000000000000 indeks:0x0 pfn:0x8d9b
---obcięty---

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