CVE-2022-48988
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
21/10/2024
Last modified:
01/11/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
memcg: fix possible use-after-free in memcg_write_event_control()<br />
<br />
memcg_write_event_control() accesses the dentry->d_name of the specified<br />
control fd to route the write call. As a cgroup interface file can&#39;t be<br />
renamed, it&#39;s safe to access d_name as long as the specified file is a<br />
regular cgroup file. Also, as these cgroup interface files can&#39;t be<br />
removed before the directory, it&#39;s safe to access the parent too.<br />
<br />
Prior to 347c4a874710 ("memcg: remove cgroup_event->cft"), there was a<br />
call to __file_cft() which verified that the specified file is a regular<br />
cgroupfs file before further accesses. The cftype pointer returned from<br />
__file_cft() was no longer necessary and the commit inadvertently dropped<br />
the file type check with it allowing any file to slip through. With the<br />
invarients broken, the d_name and parent accesses can now race against<br />
renames and removals of arbitrary files and cause use-after-free&#39;s.<br />
<br />
Fix the bug by resurrecting the file type check in __file_cft(). Now that<br />
cgroupfs is implemented through kernfs, checking the file operations needs<br />
to go through a layer of indirection. Instead, let&#39;s check the superblock<br />
and dentry type.
Impact
Base Score 3.x
7.00
Severity 3.x
HIGH
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 3.14 (including) | 4.14.302 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.15 (including) | 4.19.269 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.227 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.159 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.83 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.0.13 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.1:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc3:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc4:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc5:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc6:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc7:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.1:rc8:*:*:*:*:*:* |
To consult the complete list of CPE names with products and versions, see this page
References to Advisories, Solutions, and Tools
- https://git.kernel.org/stable/c/0ed074317b835caa6c03bcfa8f133365324673dc
- https://git.kernel.org/stable/c/35963b31821920908e397146502066f6b032c917
- https://git.kernel.org/stable/c/4a7ba45b1a435e7097ca0f79a847d0949d0eb088
- https://git.kernel.org/stable/c/aad8bbd17a1d586005feb9226c2e9cfce1432e13
- https://git.kernel.org/stable/c/b77600e26fd48727a95ffd50ba1e937efb548125
- https://git.kernel.org/stable/c/e1ae97624ecf400ea56c238bff23e5cd139df0b8
- https://git.kernel.org/stable/c/f1f7f36cf682fa59db15e2089039a2eeb58ff2ad



