CVE-2020-35907
futures_task::noop_waker_ref can segfault due to dereferencing a NULL pointer
An issue was discovered in the futures-task crate before 0.3.5 for Rust. futures_task::noop_waker_ref allows a NULL pointer dereference.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
NVD Score used
5.5
An issue was discovered in the futures-task crate before 0.3.5 for Rust. futures_task::noop_waker_ref allows a NULL pointer dereference.
- Record
CVE-2020-35907- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - CVSS 2.0
- 2.1 Low
AV:L/AC:L/Au:N/C:N/I:N/A:P - Weakness
- CWE-476
- Updated
- 2026-11-02
CVE List No score
An issue was discovered in the futures-task crate before 0.3.5 for Rust. futures_task::noop_waker_ref allows a NULL pointer dereference.
- Record
CVE-2020-35907- Updated
- 2026-11-02
EUVDEUVD-2022-4723 No score
An issue was discovered in the futures-task crate before 0.3.5 for Rust. futures_task::noop_waker_ref allows a NULL pointer dereference.
- Record
EUVD-2022-4723- Updated
- 2026-11-03
GitHub AdvisoriesGHSA-p9m5-3hj7-cp5r
5.5
futures_task::noop_waker_ref can segfault due to dereferencing a NULL pointer
Affected versions of the crate used a UnsafeCell in thread-local storage to return a noop waker reference, assuming that the reference would never be returned from another thread.
This resulted in a segmentation fault crash if Waker::wake_by_ref() was called on a waker returned from another thread due to it attempting to dereference a pointer that wasn't accessible from the main thread.
- Record
GHSA-p9m5-3hj7-cp5r- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-476
- Updated
- 2026-11-02
OSV
5.5
An issue was discovered in the futures-task crate before 0.3.5 for Rust. futures_task::noop_waker_ref allows a NULL pointer dereference.
- Record
CVE-2020-35907- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGHSA-p9m5-3hj7-cp5r
5.5
futures_task::noop_waker_ref can segfault due to dereferencing a NULL pointer
Affected versions of the crate used a UnsafeCell in thread-local storage to return a noop waker reference, assuming that the reference would never be returned from another thread.
This resulted in a segmentation fault crash if Waker::wake_by_ref() was called on a waker returned from another thread due to it attempting to dereference a pointer that wasn't accessible from the main thread.
- Record
GHSA-p9m5-3hj7-cp5r- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-476
- Updated
- 2026-11-02
OSVRUSTSEC-2020-0061
5.5
futures_task::noop_waker_ref can segfault due to dereferencing a NULL pointer
Affected versions of the crate used a UnsafeCell in thread-local storage to return a noop waker reference,
assuming that the reference would never be returned from another thread.
This resulted in a segmentation fault crash if Waker::wake_by_ref() was called on a waker returned from another thread due to
it attempting to dereference a pointer that wasn't accessible from the main thread.
Reproduction Example (from issue):
use futures_task::noop_waker_ref;
fn main() {
let waker = std::thread::spawn(|| noop_waker_ref()).join().unwrap();
waker.wake_by_ref();
}
The flaw was corrected by using a OnceCell::Lazy<> wrapper around the noop waker instead of thread-local storage.
- Record
RUSTSEC-2020-0061- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2020-35907
5.5
An issue was discovered in the futures-task crate before 0.3.5 for Rust. futures_task::noop_waker_ref allows a NULL pointer dereference.
- Record
UBUNTU-CVE-2020-35907- CVSS 3.1
- 5.5 Medium
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
futures-taskcrates.io |
before 0.3.5 | 0.3.5 |
futures-taskcrates.io |
0.0.0-0 up to 0.3.5 | 0.3.5 |
rust-futures-taskUbuntu:22.04:LTS |
All versions, plus listed versions 0.3.8-10.3.17-1 |
None known |
rust-futures-taskUbuntu:24.04:LTS |
All versions, plus listed versions 0.3.28-10.3.29-10.3.30-1 |
None known |
rust-futures-taskUbuntu:25.10 |
All versions, plus listed versions 0.3.31-3 |
None known |
rust-futures-taskUbuntu:26.10 |
All versions, plus listed versions 0.3.31-30.3.32-10.3.33-1 |
None known |
rust-futures-taskUbuntu:26.04:LTS |
All versions, plus listed versions 0.3.31-3 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-35907 is a medium vulnerability (CVSS 5.5) in Rust-lang Futures-task, published May 3, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.41%, the 35th percentile. Fixed in futures-task 0.3.5.