CVE-2026-31526 in Linux
Zusammenfassung
von VulDB • 18.05.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
bpf: Korrektur der Sperrprüfung beim Beenden von Ausnahmen für Subroutinen (Subprogs)
process_bpf_exit_full() übergibt check_lock = !curframe an check_resource_leak(), was in Fällen, in denen bpf_throw() aus einer statischen Subroutine aufgerufen wird, falsch ist. Dies führt dazu, dass check_resource_leak() die Validierung von active_rcu_locks, active_preempt_locks und active_irq_id beim Beenden von Ausnahmen aus Subroutinen überspringt.
Während der Laufzeit wickelt bpf_throw() den Stack über ORC ab, ohne zuvor vom Benutzer erworbene Sperren freizugeben, was in der Folge zu verschiedenen Problemen führen kann.
Die Behebung erfolgt durch das Setzen von check_lock = true für Ausnahmebeendigungen unabhängig von curframe, da Ausnahmen alle Zwischenrahmen-Bereinigungen umgehen. Das Fehlermeldungsprefix wird für Ausnahmebeendigungen auf „bpf_throw“ aktualisiert, um sie von normalen BPF_EXIT-Aufrufen zu unterscheiden.
Der Test reject_subprog_with_rcu_read_lock wurde korrigiert, der zuvor aus einem falschen Grund bestanden hatte. Das Testprogramm kehrte direkt aus dem Subroutinenaufruf zurück, ohne den RCU-Bereich zu schließen, sodass der Fehler durch die nicht geschlossene RCU-Sperre beim normalen Beenden ausgelöst wurde und nicht durch bpf_throw. Die __msg-Annotationen für die betroffenen Tests wurden aktualisiert, um dem neuen Fehlerprefix „bpf_throw“ zu entsprechen.
Der spin_lock-Fall ist nicht betroffen, da diese bereits an der Aufrufstelle in do_check_insn() vor dem Ausführen von bpf_throw überprüft werden [1].
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/verifier.c?h=v7.0-rc4#n21098
If you want to get best quality of vulnerability data, you may have to visit VulDB.