Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: bpf: Reject redirect helpers without a bpf_net_context The bpf_redirect*() helpers and skb_do_redirect() obtain the per-task bpf_redirect_info via bpf_net_ctx_get_ri(), which dereferences the current->bpf_net_context unconditionally. That context is established on the paths that run tc BPF such as sch_handle_{ingress,egress}(), *except* for the case where {cls,act}_bpf was attached to a proper qdisc. A program running from there reaches the NULL deref in two ways: * It calls bpf_redirect() directly, which dereferences the context at the top of the helper: tc qdisc add dev eth0 root handle 1: red limit 1MB min 10KB max 20KB \ avpkt 1000 burst 100 qevent early_drop block 10 tc filter add block 10 pref 1 bpf obj redirect.o * It simply returns TC_ACT_REDIRECT without helper call: tcf_qevent_handle() then dispatches to skb_do_redirect(), which dereferences the context Rather than extending bpf_net_context management into the qdisc path, make the redirect helpers refuse to operate when no context exists, and have tcf_qevent_handle() drop a TC_ACT_REDIRECT verdict instead of calling skb_do_redirect(). Previous behaviour was a crash, so nothing regresses by not supporting it.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 3625750f05ecce21a0fce429c1ff85acfffb461b before 0f2118b757509332bb0e65f90e5233766f14bb88; affected 3625750f05ecce21a0fce429c1ff85acfffb461b before aafb093adffad91d4d071e8a7e0dcd9b1d91c94a; affected 3625750f05ecce21a0fce429c1ff85acfffb461b before cabfacbd5af09d3ae898ca224c4a1459e9bba15d; affected 3625750f05ecce21a0fce429c1ff85acfffb461b before 3f4920d165b29052255527d8ae7619e7ec132ece |
| Linux / Linux | affected 5.9; unaffected 0 before 5.9; unaffected 6.12.111 through 6.12.*; unaffected 6.18.53 through 6.18.*; unaffected 7.1.6 through 7.1.*; unaffected 7.2 through * |
CWE
No CWE identifiers supplied.