GHSA-4q83-7cq4-p6wg

Suggest an improvement
Source
https://github.com/advisories/GHSA-4q83-7cq4-p6wg
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2023/02/GHSA-4q83-7cq4-p6wg/GHSA-4q83-7cq4-p6wg.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-4q83-7cq4-p6wg
Aliases
Related
Published
2023-02-04T00:30:37Z
Modified
2023-11-08T04:15:17.465753Z
Summary
`tokio::io::ReadHalf<T>::unsplit` is Unsound
Details

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.

Database specific
{
    "nvd_published_at": null,
    "cwe_ids": [],
    "severity": "LOW",
    "github_reviewed": true,
    "github_reviewed_at": "2023-02-04T00:30:37Z"
}
References

Affected packages

crates.io / tokio

Package

Affected ranges

Type
SEMVER
Events
Introduced
1.21.0
Fixed
1.24.2

crates.io / tokio

Package

Affected ranges

Type
SEMVER
Events
Introduced
1.19.0
Fixed
1.20.4

crates.io / tokio

Package

Affected ranges

Type
SEMVER
Events
Introduced
0.2.0
Fixed
1.18.5