{"id":"CVE-2026-115567","aliases":["RUSTSEC-2026-0384","GHSA-5wjr-9356-4wc8"],"title":"Race condition in `tokio::time::Interval` on Tokio v1.54.0","summary":"Race condition in `tokio::time::Interval` on Tokio v1.54.0","severity":"medium","cvss":5.8,"cvssVector":"CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N","vendor":"tokio","product":"tokio","ecosystem":"rust","affected":["tokio >= 1.54.0, < 1.54.1"],"patched":["tokio 1.54.1"],"published":"2026-10-21","updated":"2026-10-24","sourceUpdated":"2026-10-24T08:30:13Z","source":"OSV","sourceUrl":"https://osv.dev/vulnerability/RUSTSEC-2026-0384","references":[{"url":"https://crates.io/crates/tokio"},{"url":"https://rustsec.org/advisories/RUSTSEC-2026-0384.html"},{"url":"https://github.com/tokio-rs/tokio/pull/8692"},{"url":"https://github.com/tokio-rs/tokio/security/advisories/GHSA-5wjr-9356-4wc8"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-115567"},{"url":"https://github.com/tokio-rs/tokio/pull/8458"},{"url":"https://github.com/tokio-rs/tokio/commit/2b4eba7833864c04ecd2f3e5f4a97ff4f6fa28d0"},{"url":"https://github.com/tokio-rs/tokio/commit/5ed619bbaba87357ee5103d71b75e7c84cad99c9"},{"url":"https://github.com/tokio-rs/tokio"},{"url":"https://github.com/tokio-rs/tokio/releases/tag/tokio-1.54.1"},{"url":"https://github.com/advisories/GHSA-5wjr-9356-4wc8"}],"tags":["osv","rust","ghsa","cve.org"],"cvssSource":"cna","cwe":["CWE-362"],"ingestedAt":"2026-10-23T17:32:25.520Z","epss":0.00111,"epssPercentile":0.0129,"slug":"CVE-2026-115567","body":"## Overview\n\n## Summary\n\nOn the multi-threaded runtime, there is a race condition between `Interval::poll_tick` and the runtime's time driver.\n\nThis affects `Interval` only. `Sleep` and `Timeout` are **not** affected.\n\n## Details\n\nIn Tokio v1.54.0, a race condition between `tokio::time::Interval::poll_tick` (including `.tick().await`) and the runtime time driver can drop an internal timer entry without synchronizing with the driver thread that is firing it. This causes a data race and use-after-free on the timer's waker and task state in safe Rust, leading to assertion panics, task reference-count corruption, or heap memory corruption.\n\nThis bug was introduced by https://github.com/tokio-rs/tokio/pull/8458, and it was fixed by https://github.com/tokio-rs/tokio/pull/8692.\n\n## Impact\n\nThis may lead to crashes and use-after-frees in applications using `Interval` on a multi-threaded runtime.\n\nSince this issue is known to lead to crashes in production systems, the v1.54.0 release of Tokio has been yanked.\n\n## Credits\n\nThank you to [creepycode](https://github.com/ByteZ1337) and [carabistouille](https://github.com/carabistouflette) for reporting this privately using the procedure outlined in our security policy. They both reported the issue independently of each other.\n\n## Affected packages\n\n- `tokio >= 1.54.0, < 1.54.1`\n\n## Remediation\n\nUpgrade to a patched release:\n\n- `tokio 1.54.1`","depth":"sunlit","depthScore":32,"depthScoreParts":{"impact":31.9,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}