CVE-2024-35895
Severity CVSS v4.0:
Pending analysis
Type:
Unavailable / Other
Publication date:
19/05/2024
Last modified:
30/12/2024
Description
In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
bpf, sockmap: Prevent lock inversion deadlock in map delete elem<br />
<br />
syzkaller started using corpuses where a BPF tracing program deletes<br />
elements from a sockmap/sockhash map. Because BPF tracing programs can be<br />
invoked from any interrupt context, locks taken during a map_delete_elem<br />
operation must be hardirq-safe. Otherwise a deadlock due to lock inversion<br />
is possible, as reported by lockdep:<br />
<br />
CPU0 CPU1<br />
---- ----<br />
lock(&htab->buckets[i].lock);<br />
local_irq_disable();<br />
lock(&host->lock);<br />
lock(&htab->buckets[i].lock);<br />
<br />
lock(&host->lock);<br />
<br />
Locks in sockmap are hardirq-unsafe by design. We expects elements to be<br />
deleted from sockmap/sockhash only in task (normal) context with interrupts<br />
enabled, or in softirq context.<br />
<br />
Detect when map_delete_elem operation is invoked from a context which is<br />
_not_ hardirq-unsafe, that is interrupts are disabled, and bail out with an<br />
error.<br />
<br />
Note that map updates are not affected by this issue. BPF verifier does not<br />
allow updating sockmap/sockhash from a BPF tracing program today.
Impact
Base Score 3.x
5.50
Severity 3.x
MEDIUM
Vulnerable products and versions
| CPE | From | Up to |
|---|---|---|
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 4.20 (including) | 5.4.274 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.5 (including) | 5.10.215 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.11 (including) | 5.15.154 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 5.16 (including) | 6.1.85 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.2 (including) | 6.6.26 (excluding) |
| cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:* | 6.7 (including) | 6.8.5 (excluding) |
| cpe:2.3:o:linux:linux_kernel:6.9:rc1:*:*:*:*:*:* | ||
| cpe:2.3:o:linux:linux_kernel:6.9:rc2:*:*:*:*:*:* | ||
| cpe:2.3:o:debian:debian_linux:10.0:*:*:*:*:*:*:* |
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/668b3074aa14829e2ac2759799537a93b60fef86
- https://git.kernel.org/stable/c/6af057ccdd8e7619960aca1f0428339f213b31cd
- https://git.kernel.org/stable/c/a44770fed86515eedb5a7c00b787f847ebb134a5
- https://git.kernel.org/stable/c/d1e73fb19a4c872d7a399ad3c66e8ca30e0875ec
- https://git.kernel.org/stable/c/dd54b48db0c822ae7b520bc80751f0a0a173ef75
- https://git.kernel.org/stable/c/f7990498b05ac41f7d6a190dc0418ef1d21bf058
- https://git.kernel.org/stable/c/ff91059932401894e6c86341915615c5eb0eca48
- https://git.kernel.org/stable/c/668b3074aa14829e2ac2759799537a93b60fef86
- https://git.kernel.org/stable/c/6af057ccdd8e7619960aca1f0428339f213b31cd
- https://git.kernel.org/stable/c/a44770fed86515eedb5a7c00b787f847ebb134a5
- https://git.kernel.org/stable/c/d1e73fb19a4c872d7a399ad3c66e8ca30e0875ec
- https://git.kernel.org/stable/c/dd54b48db0c822ae7b520bc80751f0a0a173ef75
- https://git.kernel.org/stable/c/f7990498b05ac41f7d6a190dc0418ef1d21bf058
- https://git.kernel.org/stable/c/ff91059932401894e6c86341915615c5eb0eca48
- https://lists.debian.org/debian-lts-announce/2024/06/msg00017.html



