CVE-2024-36937 in Linux
Zusammenfassung
von VulDB • 09.07.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
xdp: Verwenden des Flags-Felds zur eindeutigen Unterscheidung von Broadcast-Umleitungen (Redirect)
Bei der Umleitung eines Pakets mittels XDP richtet die Helper-Funktion `bpf_redirect_map()` die Zielinformationen für die Umleitung in der Struktur `struct bpf_redirect_info` ein (unter Verwendung der Hilfsfunktion `__bpf_xdp_redirect_map()`), und die Funktion `xdp_do_redirect()` liest diese Informationen nach dem Rückkehr aus dem XDP-Programm aus und leitet den Frame an das richtige Umleitungsziel weiter.
Bei Verwendung des Flags `BPF_F_BROADCAST` zur Durchführung einer Multicast-Umleitung auf eine gesamte Map setzt `__bpf_xdp_redirect_map()` den Zeiger `map` in der Struktur `struct bpf_redirect_info`, sodass er auf die zu broadcastende Ziel-Map zeigt. Die Funktion `xdp_do_redirect()` reagiert auf den Wert dieses Map-Zeigers, um zu entscheiden, ob es sich um eine Broadcast-Umleitung oder eine Umleitung mit einem einzelnen Zielwert handelt. Wenn jedoch die Ziel-Map zerstört wird, bevor `xdp_do_redirect()` aufgerufen wird, wird der Map-Zeiger (durch `bpf_clear_redirect_map()`) zurückgesetzt, ohne abzuwarten, bis alle XDP-Programme beendet sind. Dies führt dazu, dass `xdp_do_redirect()` annimmt, die Umleitung erfolge zu einem einzelnen Ziel, wobei das Zielzeiger jedoch NULL ist (da Broadcast-Umleitungen kein einzelnes Ziel haben). Infolgedessen kommt es zu einem Absturz, wenn ein NULL-Zeiger an `dev_map_enqueue()` übergeben wird.
Um dies zu beheben, wurde `xdp_do_redirect()` so geändert, dass sie direkt auf das Vorhandensein des Flags `BPF_F_BROADCAST` im Wert `flags` der Struktur `struct bpf_redirect_info` reagiert, um zwischen einer Umleitung mit einem einzelnen Ziel und einer Broadcast-Umleitung eindeutig zu unterscheiden. Der Zeiger `map` wird nur dann gelesen, wenn das Broadcast-Flag gesetzt ist; andernfalls wird die Operation abgebrochen, falls dieses Flag in der Zwischenzeit zurückgesetzt wurde. Dies verhindert den Absturz, während gleichzeitig das atomare (cmpxchg-basierte) Zurücksetzen des Map-Zeigers selbst beibehalten und keine weiteren Prüfungen im schnellen Pfad für Nicht-Broadcast-Fälle hinzugefügt werden.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.