perf/core: Detach event groups during remove_on_exec
- 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.6.145, 6.12.96, 6.18.39, 7.1.4
- 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
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: perf/core: Detach event groups during remove_on_exec perf_event_remove_on_exec() removes events by calling perf_event_exit_event(). For top-level events, this removes the event from the context with DETACH_EXIT only. This can leave inconsistent group state when a removed event is a group leader and the group contains siblings without remove_on_exec. If the group was active, the surviving siblings can remain active and attached to the removed leader's sibling list, but are no longer represented by a valid group leader on the PMU context active lists. A later close of the removed leader uses DETACH_GROUP and can promote the still-active siblings from this stale group state. The next schedule-in can then add an already-linked active_list entry again, corrupting the PMU context active list. With DEBUG_LIST enabled, this is caught as a list_add double-add in merge_sched_in(). Fix this by detaching group relationships when remove_on_exec removes an event. This preserves the existing task-exit and revoke behavior, while ensuring surviving siblings are ungrouped before the removed event leaves the context.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 2e498d0a74e5b88a6689ae1b811f247f91ff188e · fixed in 4cdb1b3ab96eb1b7eb70bc5c82fede334bd60df2; From 2e498d0a74e5b88a6689ae1b811f247f91ff188e · fixed in 39358e856fb89e62e3c8d7389a2dc4ec33dbe90e; From 2e498d0a74e5b88a6689ae1b811f247f91ff188e · fixed in a2d5d3ee7b6e3953114726b1521e62123ab5b043; From 2e498d0a74e5b88a6689ae1b811f247f91ff188e · fixed in 06ccef0434e98058ddae7bcebc901f93d22b7653; From 2e498d0a74e5b88a6689ae1b811f247f91ff188e · fixed in 037a3c43edfb597665dd34457cd22b14692f2ba3
- Linux Linux
5.13
- KernelLinux
From 5.13.0 · fixed in 6.6.145; From 6.7.0 · fixed in 6.12.96; From 6.13.0 · fixed in 6.18.39; From 6.19.0 · fixed in 7.1.4