Odebrany

CVE-2026-98813

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ę:

bpf: Wstrzymaj map BTF dla rekordu destruktora alokatora pamięci

bpf_ma_set_dtor() duplikuje mapę->rekord tak, że bpf_mem_alloc
destruktor może zwolnić specjalne pola elementów mapy hash i rhash
gdy rozdzielacz uwolni je na dobre. btf_record_dup() tylko przejmuje
odniesienia do jądra i modułu BTF. Pola, których typy występują na mapie
BTF ciągle na to wskazuje: kptr do typu lokalnego odnosi się do map->btf,
a pole list_head lub rb_root zawiera wartość_rec, której właścicielem jest struktura
meta tabela mapy->btf.

Ten pożyczony stan może przetrwać mapę. Kiedy wywołania zwrotne RCU są nadal aktywne
lotu, bpf_mem_alloc_destroy() kopiuje alokator i odkłada finał
drenażu wraz z kontekstem destruktora do kolejki roboczej.
bpf_map_free() następnie zwalnia mapę->rekord i usuwa odniesienie do BTF mapy
jak tylko map_free() powróci. Gdy program, który załadował plik BTF, zostanie
również zniknęło, BTF zostaje uwolniony, podczas gdy pracownik nadal korzysta z
duplikat. Pracownik usuwa referencje za pomocą btf_is_kernel() i
btf_find_struct_meta() w bpf_obj_free_fields() podczas niszczenia elementów
które zostały uwolnione pod RCU i poprzez btf_is_kernel() w
btf_record_free() podczas zwalniania samego kontekstu:

BŁĄD: KASAN: użycie płyty po zwolnieniu w btf_is_kernel+0x19/0x30
Odczytaj rozmiar 1 pod adresem ffff88811505dce8 za pomocą zadania kworker/u16:2/50
Kolejka robocza: zdarzenia_nieprzywiązane free_mem_alloc_deferred
Zadzwoń do śledzenia:
btf_is_kernel+0x19/0x30
btf_record_free+0xc7/0xf0
htab_dtor_ctx_free+0x1a/0x30
free_mem_alloc_no_barrier+0x39/0x230
free_mem_alloc_deferred+0x2a/0x40
proces_scheduled_works+0x5ce/0x9d0
wątek_pracownika+0x42a/0x5e0
kwątek+0x1f5/0x230
ret_from_fork+0x1dd/0x390
ret_from_fork_asm+0x1a/0x30

Przydzielone przez zadanie 358:
__kmalloc_cache_noprof+0x287/0x510
btf_new_fd+0xf7/0x3d0
__sys_bpf+0x487/0x840

Uwolniony przez zadanie 0:
kfree+0x186/0x560
rcu_core+0x6f6/0xd40

Uwalnianie mapy, która nadal zawiera więcej elementów niż wynosi maksymalna wartość alokatora
znak wodny wystarczy, aby się tam dostać, ponieważ większość jest wolna podczas rozbierania
kolejkuje wywołanie zwrotne RCU, które powoduje odroczenie bpf_mem_alloc_destroy().
Zarówno nieprzydzielone mapy skrótów, jak i mapy skrótów o zmiennym rozmiarze rejestrują
destructor i podlegają one jednakowemu wpływowi.

Zachowaj jedno odniesienie na mapie BTF w kontekście destruktora. Każdy
wskaźnikiem innym niż jądro w zduplikowanym rekordzie jest albo map->btf, albo memory
jest jego własnością, więc pojedyncze odniesienie obejmuje kptrs, nagłówki list i rb
root i odzwierciedla działanie bpf_map_meta_alloc() dla zduplikowanych plików
zapis mapy wewnętrznej. Zwolnij go dopiero po zduplikowanym rekordzie
został zwolniony: pracownik może zostać wywłaszczony i nie znajduje się po stronie odczytu RCU
sekcja krytyczna, więc usunięcie ostatniego odniesienia w pierwszej kolejności pozwoliłoby
BTF zostanie zwolniony, podczas gdy btf_record_free() nadal będzie czytać swoje pola.

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