CVE & CISA-KEV Catalog

CVE-2024-42239

MEDIUM
5.5
CVSS v3
NVD

Description

In the Linux kernel, the following vulnerability has been resolved: bpf: Fail bpf_timer_cancel when callback is being cancelled Given a schedule: timer1 cb timer2 cb bpf_timer_cancel(timer2); bpf_timer_cancel(timer1); Both bpf_timer_cancel calls would wait for the other callback to finish executing, introducing a lockup. Add an atomic_t count named 'cancelling' in bpf_hrtimer. This keeps track of all in-flight cancellation requests for a given BPF timer. Whenever cancelling a BPF timer, we must check if we have outstanding cancellation requests, and if so, we must fail the operation with an error (-EDEADLK) since cancellation is synchronous and waits for the callback to finish executing. This implies that we can enter a deadlock situation involving two or more timer callbacks executing in parallel and attempting to cancel one another. Note that we avoid incrementing the cancelling counter for the target timer (the one being cancelled) if bpf_timer_cancel is not invoked from a callback, to avoid spurious errors. The whole point of detecting cur->cancelling and returning -EDEADLK is to not enter a busy wait loop (which may or may not lead to a lockup). This does not apply in case the caller is in a non-callback context, the other side can continue to cancel as it sees fit without running into errors. Background on prior attempts: Earlier versions of this patch used a bool 'cancelling' bit and used the following pattern under timer->lock to publish cancellation status. lock(t->lock); t->cancelling = true; mb(); if (cur->cancelling) return -EDEADLK; unlock(t->lock); hrtimer_cancel(t->timer); t->cancelling = false; The store outside the critical section could overwrite a parallel requests t->cancelling assignment to true, to ensure the parallely executing callback observes its cancellation status. It would be necessary to clear this cancelling bit once hrtimer_cancel is done, but lack of serialization introduced races. Another option was explored where bpf_timer_start would clear the bit when (re)starting the timer under timer->lock. This would ensure serialized access to the cancelling bit, but may allow it to be cleared before in-flight hrtimer_cancel has finished executing, such that lockups can occur again. Thus, we choose an atomic counter to keep track of all outstanding cancellation requests and use it to prevent lockups in case callbacks attempt to cancel each other while executing in parallel.

How to fix

Remediation Available
linuxDebian
Fixed in:6.9.10-1CVE-2024-42239
Fixed in:6.9.10-1CVE-2024-42239
linuxUbuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-awsUbuntu
Fixed in:6.8.0-1018.20USN-7089-3
linux-aws-6.8Ubuntu
Fixed in:6.8.0-1018.19~22.04.1USN-7089-3
linux-azureUbuntu
Fixed in:6.8.0-1017.20USN-7089-2
linux-azure-6.8Ubuntu
Fixed in:6.8.0-1017.20~22.04.1USN-7090-1
Fixed in:6.8.0-1017.20~22.04.1USN-7089-1
linux-gcpUbuntu
Fixed in:6.8.0-1017.19USN-7089-2
linux-gcp-6.8Ubuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7089-1
linux-gkeUbuntu
Fixed in:6.8.0-1013.17USN-7089-6
linux-gkeopUbuntu
Fixed in:6.8.0-1002.4USN-7156-1
linux-hwe-6.8Ubuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-ibmUbuntu
Fixed in:6.8.0-1015.15USN-7089-2
linux-image-6.8.0-1002-gkeopUbuntu
Fixed in:6.8.0-1002.4USN-7156-1
linux-image-6.8.0-1013-gkeUbuntu
Fixed in:6.8.0-1013.17USN-7089-6
linux-image-6.8.0-1014-ibmUbuntu
Fixed in:6.8.0-1014.14USN-7089-2
linux-image-6.8.0-1014-raspiUbuntu
Fixed in:6.8.0-1014.16USN-7089-5
linux-image-6.8.0-1015-oracleUbuntu
Fixed in:6.8.0-1015.15~22.04.1USN-7089-3
Fixed in:6.8.0-1015.16USN-7089-3
linux-image-6.8.0-1015-oracle-64kUbuntu
Fixed in:6.8.0-1015.15~22.04.1USN-7089-3
Fixed in:6.8.0-1015.16USN-7089-3
linux-image-6.8.0-1016-azureUbuntu
Fixed in:6.8.0-1016.18USN-7089-2
linux-image-6.8.0-1016-azure-fdeUbuntu
Fixed in:6.8.0-1016.18USN-7089-2
linux-image-6.8.0-1016-gcpUbuntu
Fixed in:6.8.0-1016.18USN-7089-2
linux-image-6.8.0-1016-oemUbuntu
Fixed in:6.8.0-1016.16USN-7089-4
linux-image-6.8.0-1017-azureUbuntu
Fixed in:6.8.0-1017.20~22.04.1USN-7089-1
Fixed in:6.8.0-1017.20~22.04.1USN-7090-1
linux-image-6.8.0-1017-azure-fdeUbuntu
Fixed in:6.8.0-1017.20~22.04.1USN-7089-1
Fixed in:6.8.0-1017.20~22.04.1USN-7090-1
linux-image-6.8.0-1017-gcpUbuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7089-1
linux-image-6.8.0-1017-nvidiaUbuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
Fixed in:6.8.0-1017.19USN-7095-1
linux-image-6.8.0-1017-nvidia-64kUbuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
Fixed in:6.8.0-1017.19USN-7095-1
linux-image-6.8.0-1017-nvidia-lowlatencyUbuntu
Fixed in:6.8.0-1017.19.1USN-7095-1
linux-image-6.8.0-1017-nvidia-lowlatency-64kUbuntu
Fixed in:6.8.0-1017.19.1USN-7095-1
linux-image-6.8.0-1018-awsUbuntu
Fixed in:6.8.0-1018.19~22.04.1USN-7089-3
Fixed in:6.8.0-1018.20USN-7089-3
linux-image-6.8.0-48-genericUbuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
Fixed in:6.8.0-48.48USN-7089-1
linux-image-6.8.0-48-generic-64kUbuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
Fixed in:6.8.0-48.48USN-7089-1
linux-image-6.8.0-48-lowlatencyUbuntu
Fixed in:6.8.0-48.48.3~22.04.1USN-7089-7
Fixed in:6.8.0-48.48.3USN-7089-7
linux-image-6.8.0-48-lowlatency-64kUbuntu
Fixed in:6.8.0-48.48.3~22.04.1USN-7089-7
Fixed in:6.8.0-48.48.3USN-7089-7
linux-image-awsUbuntu
Fixed in:6.8.0-1018.19~22.04.1USN-7089-3
Fixed in:6.8.0-1018.20USN-7089-3
linux-image-azureUbuntu
Fixed in:6.8.0-1017.20~22.04.1USN-7089-1
Fixed in:6.8.0-1017.20~22.04.1USN-7090-1
Fixed in:6.8.0-1016.18USN-7089-2
linux-image-azure-fdeUbuntu
Fixed in:6.8.0-1017.20~22.04.1USN-7090-1
Fixed in:6.8.0-1017.20~22.04.1USN-7089-1
Fixed in:6.8.0-1016.18USN-7089-2
linux-image-gcpUbuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7089-1
Fixed in:6.8.0-1016.18USN-7089-2
linux-image-genericUbuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-generic-64kUbuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-generic-64k-hwe-22.04Ubuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-generic-64k-hwe-24.04Ubuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-generic-hwe-22.04Ubuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-generic-hwe-24.04Ubuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-generic-lpaeUbuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-gkeUbuntu
Fixed in:6.8.0-1013.17USN-7089-6
linux-image-gkeopUbuntu
Fixed in:6.8.0-1002.4USN-7156-1
linux-image-gkeop-6.8Ubuntu
Fixed in:6.8.0-1002.4USN-7156-1
linux-image-ibmUbuntu
Fixed in:6.8.0-1014.14USN-7089-2
linux-image-ibm-classicUbuntu
Fixed in:6.8.0-1014.14USN-7089-2
linux-image-ibm-lts-24.04Ubuntu
Fixed in:6.8.0-1014.14USN-7089-2
linux-image-kvmUbuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-lowlatencyUbuntu
Fixed in:6.8.0-48.48.3USN-7089-7
linux-image-lowlatency-64kUbuntu
Fixed in:6.8.0-48.48.3USN-7089-7
linux-image-lowlatency-64k-hwe-22.04Ubuntu
Fixed in:6.8.0-48.48.3~22.04.1USN-7089-7
linux-image-lowlatency-64k-hwe-24.04Ubuntu
Fixed in:6.8.0-48.48.3USN-7089-7
linux-image-lowlatency-hwe-22.04Ubuntu
Fixed in:6.8.0-48.48.3~22.04.1USN-7089-7
linux-image-lowlatency-hwe-24.04Ubuntu
Fixed in:6.8.0-48.48.3USN-7089-7
linux-image-nvidiaUbuntu
Fixed in:6.8.0-1017.19USN-7095-1
linux-image-nvidia-6.8Ubuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
linux-image-nvidia-64kUbuntu
Fixed in:6.8.0-1017.19USN-7095-1
linux-image-nvidia-64k-6.8Ubuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
linux-image-nvidia-64k-hwe-22.04Ubuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
linux-image-nvidia-hwe-22.04Ubuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
linux-image-nvidia-lowlatencyUbuntu
Fixed in:6.8.0-1017.19.1USN-7095-1
linux-image-nvidia-lowlatency-64kUbuntu
Fixed in:6.8.0-1017.19.1USN-7095-1
linux-image-oem-22.04Ubuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-oem-22.04aUbuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-oem-22.04bUbuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-oem-22.04cUbuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-oem-22.04dUbuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-oem-24.04Ubuntu
Fixed in:6.8.0-1016.16USN-7089-4
linux-image-oem-24.04aUbuntu
Fixed in:6.8.0-1016.16USN-7089-4
linux-image-oracleUbuntu
Fixed in:6.8.0-1015.15~22.04.1USN-7089-3
Fixed in:6.8.0-1015.16USN-7089-3
linux-image-oracle-64kUbuntu
Fixed in:6.8.0-1015.15~22.04.1USN-7089-3
Fixed in:6.8.0-1015.16USN-7089-3
linux-image-raspiUbuntu
Fixed in:6.8.0-1014.16USN-7089-5
linux-image-virtualUbuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-image-virtual-hwe-22.04Ubuntu
Fixed in:6.8.0-48.48~22.04.1USN-7089-1
linux-image-virtual-hwe-24.04Ubuntu
Fixed in:6.8.0-48.48USN-7089-1
linux-lowlatencyUbuntu
Fixed in:6.8.0-48.48.3USN-7089-7
linux-lowlatency-hwe-6.8Ubuntu
Fixed in:6.8.0-48.48.3~22.04.1USN-7089-7
linux-nvidiaUbuntu
Fixed in:6.8.0-1017.19USN-7095-1
linux-nvidia-6.8Ubuntu
Fixed in:6.8.0-1017.19~22.04.1USN-7095-1
linux-nvidia-lowlatencyUbuntu
Fixed in:6.8.0-1017.19.1USN-7095-1
linux-oem-6.8Ubuntu
Fixed in:6.8.0-1016.16USN-7089-4
linux-oracleUbuntu
Fixed in:6.8.0-1015.16USN-7089-3
linux-oracle-6.8Ubuntu
Fixed in:6.8.0-1015.15~22.04.1USN-7089-3
linux-raspiUbuntu
Fixed in:6.8.0-1014.16USN-7089-5

Remediation is compiled from vendor and distribution security advisories. Always confirm against the linked source for your exact version and platform.

CVSS v3 Vector

Exploitability

Attack VectorLocal
Attack ComplexityLow
Privileges RequiredLow
User InteractionNone
ScopeUnchanged

Impact

ConfidentialityNone
IntegrityNone
AvailabilityHigh

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

Exploit Intelligence

0.17%probability of exploitation in 30 days
6thpercentile

Low risk: more likely to be exploited than 6% of all known CVEs.

References

Related Vulnerabilities

Other CWE-667 vulnerabilities, ordered by exploit likelihood. View all

CVESeverityCVSSEPSSExploitedFix
CVE-2019-10072High7.573%-Fix
CVE-2002-1850High7.517%-Fix
CVE-2009-2699High7.514%-Fix
CVE-2004-0174High7.512%--
CVE-2009-4272High7.511%--
CVE-2020-24606High8.65.2%-Fix
Embed a live status badge for CVE-2024-42239
CVE-2024-42239 severity badge

Markdown

[![CVE-2024-42239](https://tridentstack.com/cve/badge/CVE-2024-42239.svg)](https://tridentstack.com/cve/CVE-2024-42239)

HTML

<a href="https://tridentstack.com/cve/CVE-2024-42239"><img src="https://tridentstack.com/cve/badge/CVE-2024-42239.svg" alt="CVE-2024-42239"></a>

Find and fix vulnerabilities across your fleet

TridentStack Control continuously scans your Windows, macOS, and Linux fleet for known vulnerabilities, prioritizes them by severity and active exploitation, and patches them automatically.

Start free

This product uses NVD data but is not endorsed or certified by the NVD. EPSS scores courtesy of FIRST.org (https://www.first.org/epss). Source: CISA KEV Catalog. Data as of 2024-08-08.