CVE-2021-45710
HIGH8.1EPSS 0.18%Data race when sending and receiving after closing a `oneshot` channel
Description
If a `tokio::sync::oneshot` channel is closed (via the [`oneshot::Receiver::close`] method), a data race may occur if the `oneshot::Sender::send` method is called while the corresponding `oneshot::Receiver` is `await`ed or calling `try_recv`. When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to [cause memory corruption][corruption]. Note that the race only occurs when **both** halves of the channel are used after the `Receiver` half has called `close`. Code where `close` is not used, or where the `Receiver` is not `await`ed and `try_recv` is not called after calling `close`, is not affected. See [tokio#4225][issue] for more details. [corruption]: https://github.com/tokio-rs/tokio/issues/4225#issuecomment-967434847 [issue]: https://github.com/tokio-rs/tokio/issues/4225 [`oneshot::Receiver::close`]: https://docs.rs/tokio/1.14.0/tokio/sync/oneshot/struct.Receiver.html#method.close
Affected packages (3)
- crates.io/tokio>= 0.1.14, < 1.8.4
- crates.io/tokio>= 0.1.14, < 1.8.4, >= 1.9.0, < 1.13.1
- Debian/rust-tokiofrom 0
CVSS scores
| Source | Version | Severity | Vector |
|---|---|---|---|
| osv | CVSS 3.1 | HIGH8.1 | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
References (7)
- ADVISORYhttps://nvd.nist.gov/vuln/detail/CVE-2021-45710
- ADVISORYhttps://security-tracker.debian.org/tracker/CVE-2021-45710
- PATCHhttps://crates.io/crates/tokio
- PATCHhttps://github.com/tokio-rs/tokio
- WEBhttps://github.com/tokio-rs/tokio/issues/4225
- WEBhttps://raw.githubusercontent.com/rustsec/advisory-db/main/crates/tokio/RUSTSEC-2021-0124.md
- WEBhttps://rustsec.org/advisories/RUSTSEC-2021-0124.html