Linux: bpf: Mark sched_process_wait argument as nullable
What fixes it
A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.
Description
In the Linux kernel, the following vulnerability has been resolved:
bpf: Mark sched_process_wait argument as nullable
do_wait() passes wo->wo_pid to the sched_process_wait tracepoint. kernel_wait4() leaves wo_pid NULL for wait4(-1), and kernel_waitid_prepare() does likewise for waitid(P_ALL).
btf_ctx_access() currently types argument 0 as PTR_TO_BTF_ID | PTR_TRUSTED. Without PTR_MAYBE_NULL, the verifier accepts an unchecked dereference. Trusted pointer loads have no fault protection, so a wait for any child can then cause a NULL pointer dereference in JITed BPF code.
Add sched_process_wait to raw_tp_null_args[] with argument 0 marked nullable. The verifier rejects an unchecked dereference while preserving access after the program checks the pointer for NULL.
Text from CVE List
Affected versions 11
- Linuxaffected: b2fc4b17fc13810ef440fb323fad3981cd174985 before bee862c79cb7e0e5c33b2df2e3a31d164705120dCVE List
- Linuxaffected: 838a10bd2ebfe11a60dd67687533a7cfc220cc86 before 3c03a1b8ded858685a73c1ba4080adef99db4544CVE List
- Linuxaffected: 838a10bd2ebfe11a60dd67687533a7cfc220cc86 before b9205e936dde9a94e93376c8de6195b740bcd5d2CVE List
- Linuxaffected: 838a10bd2ebfe11a60dd67687533a7cfc220cc86 before a453d6e3b8e8e1a321c8744d6189d763af9287d0CVE List
- Linuxaffected: 6.12.6 before 6.12.111CVE List
- Linuxaffected: 6.13CVE List
- Linuxunaffected: all versions before 6.13CVE List
- Linuxunaffected: 6.12.111 through 6.12.*CVE List
- Linuxunaffected: 6.18.53 through 6.18.*CVE List
- Linuxunaffected: 7.2.7 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 4
- git.kernel.org/stable/c/bee862c79cb7e0e5c33b2df2e3a31d164705120dReferencevia CVE List
- git.kernel.org/stable/c/3c03a1b8ded858685a73c1ba4080adef99db4544Referencevia CVE List
- git.kernel.org/stable/c/b9205e936dde9a94e93376c8de6195b740bcd5d2Referencevia CVE List
- git.kernel.org/stable/c/a453d6e3b8e8e1a321c8744d6189d763af9287d0Referencevia CVE List