In the Linux kernel, the following vulnerability has been resolved:
bpf: check changes_pkt_data property for extension programs
When processing calls to global sub-programs, verifier decides whether to invalidate all packet pointers in current state depending on the changes_pkt_data property of the global sub-program.
Because of this, an extension program replacing a global sub-program must be compatible with changes_pkt_data property of the sub-program being replaced.
This commit:
adds changes_pkt_data flag to struct bpf_prog_aux:
modifies bpf_check_attach_btf_id() to check changes_pkt_data flag;
moves call to check_attach_btf_id() after the call to check_cfg(), because it needs changes_pkt_data flag to be set:
bpf_check: ... ...
The following fields are set by check_attach_btf_id():
Neither of these fields are used by resolve_pseudo_ldimm64() or bpf_prog_offload_verifier_prep() (for netronome and netdevsim drivers), so the reordering is safe.
| Software | From | Fixed in |
|---|---|---|
| linux / linux_kernel | 5.6 | 6.6.90 |
| linux / linux_kernel | 6.7 | 6.12.25 |
| linux / linux_kernel | 6.13-rc1 | 6.13-rc1.x |
| linux / linux_kernel | 6.13-rc2 | 6.13-rc2.x |