Every CVESearch/Get API key

GHSA-4q83-7cq4-p6wg

`tokio::io::ReadHalf<T>::unsplit` is Unsound

No scoreFix available

GHSA-4q83-7cq4-p6wg is a vulnerability with no CVSS score yet in tokio, published January 11, 2023. No source lists public exploit code. Fixed in tokio 1.24.2.

What does this mean?
Severity
UnratedNo CVSS score yet
Exploit chance
UnscoredNo EPSS score yet
Exploitation
None knownNot on CISA’s or ENISA’s lists
Fixed in
1.24.2tokio +3 more

Description

tokio::io::ReadHalf<T>::unsplit can violate the Pin contract

The soundness issue is described in the tokio/issues#5372

Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf) is unusual, combined with the difficulty of making any arbitrary use-after-free exploitable in Rust without doing a lot of careful alignment of data types in the surrounding code.

The tokio feature io-util is also required to be enabled to trigger this soundness issue.

Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e and carllerche appropriately responding and fixing the soundness bug.

Tokio before 0.2.0 used futures 0.1 that did not have Pin, so it is not affected by this issue.

Affected packages

Affected packages
PackageAffectedFixed
tokio
crates.io
1.21.0 up to 1.24.2
1.24.2
tokio
crates.io
1.19.0 up to 1.20.4
1.20.4
tokio
crates.io
0.2.0 up to 1.18.5
1.18.5
tokio
crates.io
0.2.0 up to 1.18.5, 1.19.0 up to 1.20.4, 1.21.0 up to 1.24.2
1.18.51.20.41.24.2

What each source reports

GitHub AdvisoriesNo score

`tokio::io::ReadHalf<T>::unsplit` is Unsound

tokio::io::ReadHalf<T>::unsplit can violate the Pin contract

The soundness issue is described in the tokio/issues#5372

Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf) is unusual, combined with the difficulty of making any arbitrary use-after-free exploitable in Rust without doing a lot of careful alignment of data types in the surrounding code.

The tokio feature io-util is also required to be enabled to trigger this soundness issue.

Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e and carllerche appropriately responding and fixing the soundness bug.

Tokio before 0.2.0 used futures 0.1 that did not have Pin, so it is not affected by this issue.

Record
GHSA-4q83-7cq4-p6wg
Updated
2026-11-02
OSVNo score

`tokio::io::ReadHalf<T>::unsplit` is Unsound

tokio::io::ReadHalf<T>::unsplit can violate the Pin contract

The soundness issue is described in the tokio/issues#5372

Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf) is unusual, combined with the difficulty of making any arbitrary use-after-free exploitable in Rust without doing a lot of careful alignment of data types in the surrounding code.

The tokio feature io-util is also required to be enabled to trigger this soundness issue.

Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e and carllerche appropriately responding and fixing the soundness bug.

Tokio before 0.2.0 used futures 0.1 that did not have Pin, so it is not affected by this issue.

Record
GHSA-4q83-7cq4-p6wg
Updated
2026-11-02
OSVRUSTSEC-2023-0005No score

`tokio::io::ReadHalf<T>::unsplit` is Unsound

tokio::io::ReadHalf<T>::unsplit can violate the Pin contract

The soundness issue is described in the tokio/issues#5372

Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf) is unusual, combined with the difficulty of making any arbitrary use-after-free exploitable in Rust without doing a lot of careful alignment of data types in the surrounding code.

The tokio feature io-util is also required to be enabled to trigger this soundness issue.

Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e and carllerche appropriately responding and fixing the soundness bug.

Tokio before 0.2.0 used futures 0.1 that did not have Pin, so it is not affected by this issue.

Record
RUSTSEC-2023-0005
Updated
2026-11-02

History

History
RecordedChangedSources
first indexedGitHub Advisories, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

References

MoveEnter Open