CVE-2026-98530
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
kprobes: Naprawiono trwałe zawieszenie podczas płukania optymalizatora kprobe
Zapisanie 0 do /proc/sys/debug/kprobes-optimization, gdy kprobe jest
zoptymalizowane pod kątem skoków nigdy nie powraca. Pisarz śpi w stanie D na zawsze
kprobe_sysctl_mutex wstrzymany, więc każdy późniejszy odczyt lub zapis tego sysctl
też wisi. Na przykład z vfs_read+9 jako adresem możliwym do optymalizacji
w tej kompilacji:
# cd /sys/kernel/tracing
# echo 'p:myprobe vfs_read+9' >> kprobe_events
# echo 1 > zdarzenia/kprobes/myprobe/enable
# # poczekaj, aż /sys/kernel/debug/kprobes/list pokaże [OPTYMALIZOWANY]
# echo 0 > /proc/sys/debug/kprobes-optimization
INFO: zadanie sh:246 zablokowane na dłużej niż 10 sekund.
Zadzwoń do śledzenia:
<ZADANIE>
__harmonogram+0x1176/0x4f70
harmonogram+0xdc/0x2c0
harmonogram_limitu czasu+0x17b/0x260
wait_for_completion+0x173/0x3c0
wait_for_kprobe_optimizer_locked+0xbc/0x130
proc_kprobes_optimization_handler+0x156/0x1b0
proc_sys_call_handler+0x324/0x490
vfs_write+0x52d/0xfe0
ksys_write+0xff/0x200
do_syscall_64+0x106/0x630
wpis_SYSCALL_64_after_hwframe+0x77/0x7f
</ZADANIE>
...
INFO: zadanie cat:265 jest zablokowane na mutexie, którego prawdopodobnie właścicielem jest zadanie sh:246.
wait_for_kprobe_optimizer_locked() ponownie inicjuje uzupełnienie_optymalizatora,
prosi wątek optymalizatora o opróżnienie i zasypia w funkcji wait_for_completion().
Wątek opróżnia (nie)optymalizujące listy, ale wywołuje tylko funkcję Complete().
jeśli kompletacja_done() ma wartość true, tj. jeśli dokończenie zostało już wykonane,
co nigdy nie zdarza się, gdy ktoś czeka. disarm_all_kprobes() i
kprobe_trace_self_tests_init() poczekaj w ten sam sposób.
Bezwarunkowe wywołanie funkcji Complete() nie wystarczy: kelner
upuszcza kprobe_mutex podczas snu i nic innego nie serializuje
sysctl względem pliku „włączonego” debugfs. Drugi spłukiwacz
to nadal stwierdza, że listy nie są puste, np. ponieważ sonda jest wyłączona
w kolejce do niezoptymalizowania, ponownie inicjuje zakończenie w ramach pierwszego:
sysctl zapis debugfs „włączony” zapis
unoptimize_all_kprobes()
wait_for_kprobe_optimizer_locked()
init_completion(c)
mutex_unlock(&kprobe_mutex)
czekaj_na_ukończenie(c)
rozbroić_all_kprobes()
wait_for_kprobe_optimizer_locked()
init_completion(c)
// c->wait zostaje zresetowane, jako pierwsze
// kelner jest poza kolejką
mutex_unlock(&kprobe_mutex)
czekaj_na_ukończenie(c)
kprobe_optimizer()
kompletny(c)
// budzi tylko moduł zapisujący debugfs
gdzie c oznacza &optimizer_completion. Ustawianie w kolejce dwóch zapisów podczas
Optymalizator traci w ten sposób moduł zapisujący sysctl.
Zastąp uzupełnienie licznikiem przebiegów optymalizatora, uderzonym w
koniec każdego przebiegu i sygnalizowane za pomocą wake_up_var_locked(), oba poniżej
kprobe_mutex. Spłukiwacz pobiera próbkę i czeka
wait_var_event_mutex(), która upuszcza kprobe_mutex tylko podczas snu, więc
nowy licznik oznacza, że w międzyczasie przebiegł cały przebieg. Nic nie jest
ponownie zainicjowany, więc kilka spłukiwaczy może jednocześnie czekać.
>_ 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