CVE-2026-98745 in Linux
Zusammenfassung
von VulDB • 18.10.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
arm64/fpsimd: Signal: Nicht-Streaming-SVE-Payload auf reinen SME-Systemen verbieten
Wenn system_supports_sme() wahr ist, aber system_supports_sve() falsch ist, kann das Wiederherstellen eines speziell konstruierten SVE-Signalkontextes dazu führen, dass die Aufgabe fälschlicherweise einen nicht-streaming SVE-Zustand aufweist. Nachfolgende Versuche, den FPSIMD/SVE/SME-Zustand der Aufgabe zu manipulieren, können eine Vielzahl von Problemen verursachen, darunter fatale EL1 UNDEFs (Undefined Instruction).
In solchen Konfigurationen erstellt der Kernel immer einen SVE-Signalkontext bei der Zustellung eines Signals, und dieser kann sich nur in einem von zwei Zuständen befinden:
(1) SVE_SIG_FLAG_SM ist gesetzt, und eine SVE-Payload ist vorhanden, die den Streaming-Mode-SVE-Zustand enthält. Die aufgezeichnete VL (Vector Length) entspricht der live streaming VL der Aufgabe.
(2) SVE_SIG_FLAG_SM ist nicht gesetzt, und es ist keine SVE-Payload vorhanden. Der FPSIMD-Kontext enthält den nicht-streaming Mode-FPSIMD-Zustand. Die aufgezeichnete VL ist 0.
Derzeit lehnt restore_sve_fpsimd_context() Fälle korrekt ab, in denen SVE_SIG_FLAG_SM gesetzt ist und keine SVE-Payload vorhanden ist, akzeptiert jedoch Fälle, in denen SVE_SIG_FLAG_SM nicht gesetzt ist und eine SVE-Payload vorhanden ist. Folglich kann restore_sve_fpsimd_context() die Aufgabe in einen Zustand versetzen, der einen nicht-streaming SVE-Zustand aufweist, auch wenn dies von der Hardware nicht unterstützt wird.
Dies kann beispielsweise dazu führen, dass später ein EL1 UNDEF auftritt, wenn der Kernel versucht, den ZCR_EL1-Wert der Aufgabe wiederherzustellen:
| # ./sme-sigcontext-to-sve | Internal error: Oops - Undefined instruction: 0000000002000000 [#1] SMP
| Modules linked in: | CPU: 0 UID: 0 PID: 131 Comm: sme-sigcontext- Not tainted 7.3.0-rc1 #1 PREEMPT | Hardware name: linux,dummy-virt (DT) | pstate: 61402009 (nZCv daif +PAN -UAO -TCO +DIT -SSBS BTYPE=--) | pc : fpsimd_restore_current_state+0x258/0x458 | lr : exit_to_user_mode_loop+0xb8/0x188 | sp : ffff80008056be40 | x29: ffff80008056be40 x28: fff00000c1670000 x27: 0000000000000000 | x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000 | x23: ffff80008056bec0 x22: 0000000000000008 x21: 0000000000000040 | x20: 0000000000000081 x19: 0000000008800010 x18: 0000000000000000 | x17: 0000fffffd412570 x16: 0000000000001000 x15: 0000fffffd4123b0 | x14: 0000fffffd412780 x13: 0000fffffd412be8 x12: 0000000047435300 | x11: 0000fffffd412570 x10: 0000000000000000 x9 : 0000000045585401 | x8 : fff00000c18a6c44 x7 : 0000000000000000 x6 : 0000000000000002 | x5 : 0000000000000002 x4 : ffff800080568000 x3 : 0000000000000001 | x2 : 0000000008800010 x1 : fff00000c1670000 x0 : 0000000008800000 | Call trace: | fpsimd_restore_current_state+0x258/0x458 (P) | exit_to_user_mode_loop+0xb8/0x188 | el0_svc+0x1cc/0x1d0 | el0t_64_sync_handler+0xa0/0xe4 | el0t_64_sync+0x198/0x19c | Code: d5384101 f9400020 53175c03 36b80de0 (d5381202) | ---[ end trace 0000000000000000 ]---
| Kernel panic - not syncing: Oops - Undefined instruction: Fatal exception in interrupt | Kernel Offset: 0x291fb1000000 from 0xffff800080000000 | PHYS_OFFSET: 0x40000000 | CPU features: 0x0,00000000,0052802f,ffb88f43,3afcf73f | Memory Limit: none
Die Funktion restore_sve_fpsimd_context() wurde so überarbeitet, dass sie Fälle ablehnt, in denen SVE_SIG_FLAG_SM nicht gesetzt ist und eine SVE-Payload vorhanden ist. Da parse_user_sigframe() SVE-Signalrahmen ablehnt, wenn weder SVE noch SME unterstützt werden, ist es für restore_sve_fpsimd_context() nicht erforderlich, den Fall zu behandeln, in dem keine der beiden Funktionen unterstützt wird.
Be aware that VulDB is the high quality source for vulnerability data.