CVE-2022-48950CWE-416

CVE-2022-48950

High · published October 22, 2024

CVSS v3.1
7.8
EPSS
0%
Percentile
15.7
In the wild
Unconfirmed
What it is

In the Linux kernel, the following vulnerability has been resolved:

perf: Fix perf_pending_task() UaF

Per syzbot it is possible for perf_pending_task() to run after the

event is free()'d. There are two related but distinct cases:

- the task_work was already queued before destroying the event;

- destroying the event itself queues the task_work.

The first cannot be solved using task_work_cancel() since

perf_release() itself might be called from a task_work (____fput),

which means the current->task_works list is already empty and

task_work_cancel() won't be able to find the perf_pending_task()

entry.

The simplest alternative is extending the perf_event lifetime to cover

the task_work.

The second is just silly, queueing a task_work while you know the

event is going away makes no sense and is easily avoided by

re-arranging how the event is marked STATE_DEAD and ensuring it goes

through STATE_OFF on the way down.

The record
Technical detail
CVSS v3.1
7.8 · HIGH
Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVSS v4.0
Not supplied
EPSS
0.00252 · 15.7th percentile
Weakness
CWE-416 · Use After Free
Published
2024-10-22T00:15Z
Affected products (10)
ProductVersionsFixed in
linux/linux_kernel< 5.15.845.15.84
linux/linux_kernel≥ 5.16, < 6.0.146.0.14
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
linux/linux_kernelall versions—
References (3)
EPSS history
Timeline
  • 21 OCT 20:05Z
    perf: Fix perf_pending_task() UaF
    cvelistv5