Odebrany

CVE-2026-98076

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

śledzenie/sondy: Naprawiono opcję „bez użycia po” dla nazwy pola/typu zdarzeń w przypadku wielu sond

Pola zdarzenia dynamicznego opartego na sondzie (kprobe, uprobe, eprobe i
fprobe) są tworzone w funkcji traceprobe_define_arg_fields() poprzez przekazanie
ciągi znaków nazwa/typ sondy do funkcji trace_define_field(), która tylko
przechowuje wskaźniki bez kopiowania. Te ciągi są własnością
trace_probe i są zwalniane po usunięciu tej sondy.

Do zdarzenia może być podłączonych kilka sond. Lista pól jest zdefiniowana
tylko raz, przez pierwszą sondę, która zarejestruje zdarzenie, ale jest ono zachowywane
żywy przez jakąkolwiek ocalałą sondę rodzeństwa. Usuwanie tylko tej pierwszej sondy przez
symbol -

# podstawowy A: pola są definiowane na podstawie argumentów A
echo 'p:kprobes/ev vfs_read a1=$arg1' > kprobe_events
# dołącz B: udostępnia wywołanie zdarzenia A
echo 'p:kprobes/ev vfs_write a1=$arg1' >> kprobe_events
# usuń tylko A (dopasowane symbolem), B przetrwa
echo '-:kprobes/ev vfs_read' >> kprobe_events

zwalnia argumenty A (trace_probe_cleanup() -> traceprobe_free_probe_arg()),
ale funkcja trace_probe_unlink() utrzymuje zdarzenie trace_probe_event, ponieważ sonda
lista nie jest pusta. Wywołanie zdarzenia pozostaje zarejestrowane przez B podczas jego trwania
pola odwołują się teraz do zwolnionej pamięci. Każde wyszukiwanie pola następnie je odczytuje, np.

echo 'a1 == 1' > zdarzenia/kprobes/ev/filter

BŁĄD: KASAN: użycie płyty po zwolnieniu w strcmp+0xa7/0xb0
Zadzwoń do śledzenia:
strcmp
pole_znalezienia_zdarzenia
parse_pred
proces_preds
utwórz_filtr
Apply_event_filter
zdarzenie_filter_zapis

pole->nazwa odniesienia parg->nazwa (kstrdup'd, uwolniony sondą) i,
dla argumentów tablicowych pole->odniesienia do typu parg->fmt (kmalloc'd, freed
z sondą) - typ skalarny w przeciwnym razie wskazuje na statyczność
fmttype rodata, który jest bezpieczny.

Niech funkcja traceprobe_define_arg_fields() powieli nazwę i wpisz ciągi znaków
i zakotwicz kopie w zdarzeniu trace_probe_event, które osadza zdarzenie
zadzwoń i przeżyj każdą indywidualną sondę; trace_probe_event_free()
uwalnia je.

Powyższy odtwarzacz wyzwala niezawodnie; wyszukiwanie pola i usuwanie
oba działają pod event_mutex, więc jest to wiszące odwołanie po
usunięcie, a nie wyścig.

Problem został znaleziony przez dynamiczny fuzzer jądra autokbug w Tencent
Laboratorium Yundinga.

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