Linux: tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields
What fixes it
- 1f36e4ddd05d540f363dbaa4c23042549f15b3efLinuxCVE List
- 5.11LinuxCVE List
- 5.16LinuxCVE List
- 6.2LinuxCVE List
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:
tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields
In check_synth_field(), when a synthetic event field is a stacktrace (field->is_stack) and the histogram field is not a "long[" stacktrace array, validation falls through to the generic size and signedness comparison.
Because parse_synth_field() sets a stacktrace field's type to "__data_loc unsigned long[]", its size is sizeof(u64) and synth_field_signed() marks it as signed. Consequently, any 8-byte signed scalar histogram field passes the fallback check, and its scalar value is subsequently dereferenced as a kernel stacktrace pointer in get_field_size() and trace_stack().
Furthermore, checking strstr(hist_field->type, "long[") is insufficient because tracepoint fields defined with __bitmask() or __rel_bitmask() also have type "__data_loc unsigned long[]" or "__rel_loc unsigned long[]", whilst create_hist_field() treats them as 4-byte scalar values without HIST_FIELD_FL_STACKTRACE.
Propagate HIST_FIELD_FL_STACKTRACE to variable references and field variables (whilst excluding variable aliases from per-element stacktrace capture), and reject any mismatch between HIST_FIELD_FL_STACKTRACE and field->is_stack in check_synth_field().
Text from CVE List
Affected versions 14
- Linuxaffected: 00cf3d672a9dd409418647e9f98784c339c3ff63 before 1f36e4ddd05d540f363dbaa4c23042549f15b3efCVE List
- Linuxaffected: 00cf3d672a9dd409418647e9f98784c339c3ff63 before deb336ae7c7b341591a6862cf6fcfeca97c77dfdCVE List
- Linuxaffected: 00cf3d672a9dd409418647e9f98784c339c3ff63 before a244c241593b5b38a08f0df2cb43c26574efbdcbCVE List
- Linuxaffected: b9453380c1c542fd095a4dbe9251eeba4022bbceCVE List
- Linuxaffected: 5f52389bdd9eafb63b3a2f804e02aeb17b6a5f55CVE List
- Linuxaffected: f3baa42afeea0d5f04ad31525e861199d02210ccCVE List
- Linuxaffected: 5.10.237 before 5.11CVE List
- Linuxaffected: 5.15.124 before 5.16CVE List
- Linuxaffected: 6.1.43 before 6.2CVE List
- Linuxaffected: 6.3CVE List
- Linuxunaffected: all versions before 6.3CVE List
- Linuxunaffected: 6.18.59 through 6.18.*CVE List
- Linuxunaffected: 7.2.13 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List