bpf: Mark signal tracepoint siginfo arguments as scalar
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.12.114, 6.18.53, 7.2.7
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: bpf: Mark signal tracepoint siginfo arguments as scalar The signal_generate and signal_deliver tracepoints declare their info argument as a struct kernel_siginfo pointer. btf_ctx_access() therefore treats it as a trusted pointer for tp_btf programs. Signal delivery also uses SEND_SIG_NOINFO and SEND_SIG_PRIV as special values for this argument. Those values are zero and one respectively, and are not pointers. A tp_btf program can currently dereference either value and fault the kernel. In particular, signal_generate can run from timer interrupt context, turning the fault into a kernel panic. Record both tracepoints in raw_tp_null_args[] and mark argument one as a non-pointer. This preserves scalar access to the cookie while rejecting direct and helper-mediated pointer use. Merely marking it nullable would not suffice because SEND_SIG_PRIV is nonzero.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From b2fc4b17fc13810ef440fb323fad3981cd174985 · fixed in 05757377fa0447163d07c43a119f81abe1eef8dc; From 838a10bd2ebfe11a60dd67687533a7cfc220cc86 · fixed in 0e78cb242a57e481061fcb542fed4d51afba25c4; From 838a10bd2ebfe11a60dd67687533a7cfc220cc86 · fixed in d2eaea3599bcce659ce91862254dc91bcbdb6351; From 838a10bd2ebfe11a60dd67687533a7cfc220cc86 · fixed in 77515ab12e4983e6416f8c35039a3f0c0822ac70; From 6.12.6 · fixed in 6.12.114
- Linux Linux
6.13
- KernelLinux
fixed in 6.12.114; From 6.13.0 · fixed in 6.18.53; fixed in 7.2.7