CVE-2026-98888
>_ Opis
Tłumaczenie automatyczne – może zawierać nieścisłości.
W jądrze Linuksa usunięto następującą lukę:
arm64: kprobes: Zezwalaj na ponowne wprowadzanie kprobes podczas wykonywania pojedynczych kroków
Kprobe może zostać trafiony, gdy inna kprobe jest w stanie KPROBE_HIT_SS. To
może się zdarzyć, gdy kod śledzenia lub wydajności zostanie uruchomiony ze ścieżki wyjątku debugowania
podczas gdy pierwsza kprobe przygotowuje lub wykonuje swoje działanie poza linią
instrukcja jednoetapowa.
Obecnie arm64 traktuje trafienie kprobe w KPROBE_HIT_SS jako nie do odzyskania,
takie same jak trafienie w KPROBE_REENTER. To jest zbyt rygorystyczne. Trafienie
KPROBE_HIT_SS jest nadal jednopoziomowym ponownym wejściem i można go obsłużyć poprzez zapisanie
aktualny stan kprobe i ustawienie pojedynczego kroku dla nowej sondy,
podobnie jak ponowne wejście z KPROBE_HIT_ACTIVE lub KPROBE_HIT_SSDONE.
Naprawdę niemożliwym do naprawienia przypadkiem jest uderzenie w inną sondę, gdy już jest ona w środku
KPROBE_REENTER, ponieważ obszar zapisu ponownego wejścia został już wykorzystany.
Przenieś KPROBE_HIT_SS do możliwych do odzyskania spraw ponownego wejścia i wyjdź
KPROBE_REENTER jako nieodwracalny przypadek ponownego zagnieżdżenia.
Ta zmiana wymaga również zapisania zapisanej flagi_irq w strukturze prev_kprobe.
Kiedy zagnieżdżona kprobe wywołuje kprobes_save_local_irqflag(), nadpisuje
kcb->saved_irqflag z aktualnie zamaskowaną wartością DAIF, tracąc
Oryginalny stan DAIF zewnętrznej kprobe. Bez tej poprawki, gdy plik external
kprobe kończy się w jednym kroku, stosowana jest kprobes_restore_local_irqflag().
zła maska DAIF i pozostawia przerwania trwale wyłączone.
Rozszerz strukturę prev_kprobe o pole zapisane_irqflag i zapisz/przywróć je
obok kp i statusu. Zapewnia to oryginalność zewnętrznej sondy
stan przerwania jest zachowywany po ponownym wejściu.
Odzwierciedla to poprawkę x86 w zatwierdzeniu 6a5022a56ac3
(„kprobes/x86: Pozwól na obsługę ponownie wprowadzonego kprobe w trybie jednoetapowym”).
>_ Referencje
- https://git.kernel.org/stable/c/1f342b3e44c3035a837b53b217d816f7511c0d0a
- https://git.kernel.org/stable/c/23f851ac0078a908bf3422d6467ebc1db5828c46
- https://git.kernel.org/stable/c/68774caca799e9695db56d426c69acebd041c2ed
- https://git.kernel.org/stable/c/a21bf9cb893126e8d9730995708d0be5eb167652
- https://git.kernel.org/stable/c/bb0fe9121aa0824211aafa33c7d0151fd25ddb75
- https://git.kernel.org/stable/c/c8e84e292ed4cfc199824146da71bb4397b02a1f
- https://git.kernel.org/stable/c/f96a0606de6bcc8d937b80e6470fd7a174c17e26
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