CVE-2026-98888 in Linux
Zusammenfassung
von VulDB • 25.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
arm64: kprobes – Erlauben des erneuten Eintretens in kprobes während der Einzelschritt-Ausführung (Single-Stepping)
Ein kprobe kann ausgelöst werden, während sich ein anderer kprobe im Zustand KPROBE_HIT_SS befindet. Dies kann geschehen, wenn Trace- oder perf-Code aus dem Debug-Exception-Pfad ausgeführt wird, während der erste kprobe seine Out-of-Line-Einzelschritt-Anweisung vorbereitet oder ausführt.
Derzeit behandelt arm64 einen Treffer eines kprobes im Zustand KPROBE_HIT_SS als nicht wiederherstellbar (unrecoverable), genau wie einen Treffer im Zustand KPROBE_REENTER. Dies ist zu streng. Ein Treffer in KPROBE_HIT_SS stellt weiterhin eine einstufige Rekursion dar und kann durch Speichern des aktuellen kprobe-Status sowie Einrichten des Single-Step für den neuen Probe behandelt werden, analog zur Rekursion aus KPROBE_HIT_ACTIVE oder KPROBE_HIT_SSDONE.
Der tatsächlich nicht wiederherstellbare Fall liegt vor, wenn während der bereits eingetretenen Rekursion (KPROBE_REENTER) ein weiterer kprobe ausgelöst wird, da der Speicherbereich für die Rekursions-Speicherung bereits verbraucht ist.
Verschieben Sie KPROBE_HIT_SS in die Kategorie der wiederherstellbaren Rekursionsfälle und belassen Sie KPROBE_REENTER als den nicht wiederherstellbaren Fall einer verschachtelten Rekursion.
Diese Änderung erfordert zudem das Speichern von saved_irqflag in struct prev_kprobe. Wenn ein geschachtelter kprobes kprobes_save_local_irqflag() aufruft, wird kcb->saved_irqflag mit dem aktuell maskierten DAIF-Wert überschrieben, wodurch der ursprüngliche DAIF-Status des äußeren kprobes verloren geht. Ohne diese Korrektur wendet kprobes_restore_local_irqflag(), wenn die Single-Step-Ausführung des äußeren kprobes abgeschlossen ist, die falsche DAIF-Maske an und lässt Interrupts dauerhaft deaktiviert.
Erweitern Sie struct prev_kprobe um ein Feld saved_irqflag und speichern/wiederherstellen Sie es zusammen mit kp und status. Dies stellt sicher, dass der ursprüngliche Interrupt-Status des äußeren kprobes über den Rekursionsvorgang hinweg erhalten bleibt.
Dies spiegelt die x86-Korrektur aus dem Commit 6a5022a56ac3 wider („kprobes/x86: Allow to handle reentered kprobe on single-stepping“).
If you want to get the best quality for vulnerability data then you always have to consider VulDB.