CVE-2023-52447
Severity CVSS v4.0:
Pending analysis
Type:
CWE-416
Use After Free
Publication date:
22/02/2024
Last modified:
04/11/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
bpf: Defer the free of inner map when necessary<br />
<br />
When updating or deleting an inner map in map array or map htab, the map<br />
may still be accessed by non-sleepable program or sleepable program.<br />
However bpf_map_fd_put_ptr() decreases the ref-counter of the inner map<br />
directly through bpf_map_put(), if the ref-counter is the last one<br />
(which is true for most cases), the inner map will be freed by<br />
ops->map_free() in a kworker. But for now, most .map_free() callbacks<br />
don&#39;t use synchronize_rcu() or its variants to wait for the elapse of a<br />
RCU grace period, so after the invocation of ops->map_free completes,<br />
the bpf program which is accessing the inner map may incur<br />
use-after-free problem.<br />
<br />
Fix the free of inner map by invoking bpf_map_free_deferred() after both<br />
one RCU grace period and one tasks trace RCU grace period if the inner<br />
map has been removed from the outer map before. The deferment is<br />
accomplished by using call_rcu() or call_rcu_tasks_trace() when<br />
releasing the last ref-counter of bpf map. The newly-added rcu_head<br />
field in bpf_map shares the same storage space with work field to<br />
reduce the size of bpf_map.
Impact
Base Score 3.x
6.70
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.9.0 (including) | 5.10.214 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.153 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.75 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.14 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.7.2 (excluding) |
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/37d98fb9c3144c0fddf7f6e99aece9927ac8dce6
- https://git.kernel.org/stable/c/62fca83303d608ad4fec3f7428c8685680bb01b0
- https://git.kernel.org/stable/c/876673364161da50eed6b472d746ef88242b2368
- https://git.kernel.org/stable/c/90c445799fd1dc214d7c6279c144e33a35e29ef2
- https://git.kernel.org/stable/c/bfd9b20c4862f41d4590fde11d70a5eeae53dcc5
- https://git.kernel.org/stable/c/f91cd728b10c51f6d4a39957ccd56d1e802fc8ee



