CVE-2026-89746
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
śledzenie: Napraw użycie po zwolnieniu z wyzwalaczami o tej samej nazwie
Kiedy dwa wyzwalacze hist dla różnych zdarzeń są zarejestrowane w tym samym
nazwa=, druga ponownie wykorzystuje pierwszą jako nazwane_dane. Obydwa są dodane
tr->hist_vars przez save_hist_vars() podczas event_hist_trigger_parse(),
ponieważ funkcja save_hist_vars() jest wywoływana przed event_trigger_register() while
nazwane ponowne użycie jest wykrywane dopiero później, w funkcji hist_register_trigger().
Następnie w gałęzi nazwanych danych hist_register_trigger() zwalnia drugą
hist_data histogramu za pomocą funkcjizniszcz_hist_data(), ale nigdy ich nie usuwa
tr->hist_vars wpis na liście, pozostawiając zwisający wskaźnik i wyciek
Odniesienie do tablicy_trace, które przechowuje.
Późniejszy wyzwalacz hist, który odwołuje się do zmiennej, powoduje, że find_var_file()
przejdź tr->hist_vars i usuń odwołanie do uwolnionych danych hist_data. Błąd jest
odtwarzalne z przestrzeni użytkownika poprzez zapisanie trzech wyzwalaczy hist do tracefs:
cd /sys/kernel/tracing
echo 'hist:keys=common_pid:x=common_pid:name=mh' > zdarzenia/sched/sched_switch/trigger
echo 'hist:keys=common_pid:x=common_pid:name=mh' > zdarzenia/sched/sched_process_fork/trigger
echo 'hist:keys=common_pid:vals=$x' > zdarzenia/sched/sched_process_exit/trigger
Trzeci zapis panikuje jądro:
BŁĄD: KASAN: użycie płyty po zwolnieniu w find_var_file.part.0+0x272/0x290
Odczytaj rozmiar 8 pod adresem ffff888001f8a0e0 w zadaniu sh/1
Procesor: 1 UID: 0 PID: 1 Comm: sh Tainted: G D N
Zadzwoń do śledzenia:
find_var_file.part.0
find_event_var
parse_atom
parse_expr
__create_val_field
event_hist_trigger_parse
wyzwalacz_proces_regex
zdarzenie_wyzwalacz_zapis
vfs_write
ksys_write
do_syscall_64
wpis_SYSCALL_64_after_hwframe
Przydzielone według zadania 1:
event_hist_trigger_parse
Uwolniony przez zadanie 1:
hist_register_trigger+0x618/0xa30
event_hist_trigger_parse
Błędny adres należy do zwolnionego obszaru o wielkości 2048 bajtów
Ups: ogólny błąd ochrony... RIP: find_var_file.part.0
Panika jądra – brak synchronizacji: Próbowano zabić init! kod wyjścia=0x0000000b
Napraw, usuwając hist_data z tr->hist_vars i zwalniając plik
Odniesienie do tablicy_trace w gałęzi nazwanych danych funkcji hist_register_trigger()
przed zwolnieniem pliku hist_data.
>_ 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