Rust advisories / crypto2
Unsound CriticalRUSTSEC-2021-0121 · crypto2
RUSTSEC-2021-0121: Non-aligned u32 read in Chacha20 encryption and decryption
Short answercrypto2 has an API that can cause undefined behaviour from safe code: Non-aligned u32 read in Chacha20 encryption and decryption. No fixed version yet.
| Crate | crypto2 |
|---|---|
| Type | Unsound |
| Affected versions | Every version. |
| Fixed in | none |
| Severity | Critical (GitHub rating) |
| Published | 2021-10-08 |
| Last changed | 2023-11-08 |
| Also known as | CVE-2021-45709, GHSA-9hfg-pxr6-q4vp, GHSA-pmcv-mgcf-rvxg |
| Affected functions | crypto2::streamcipher::Chacha20::decrypt_slice, crypto2::streamcipher::Chacha20::encrypt_slice, crypto2::streamcipher::xor_si512_inplace |
What to do
- Find who pulls it in:
cargo tree -i crypto2. - Avoid the affected API (
crypto2::streamcipher::Chacha20::decrypt_slice,crypto2::streamcipher::Chacha20::encrypt_slice,crypto2::streamcipher::xor_si512_inplace), or replace the crate.
Details from the advisory
The implementation does not enforce alignment requirements on input slices while incorrectly assuming 4-byte alignment through an unsafe call to std::slice::from_raw_parts_mut, which breaks the contract and introduces undefined behavior.
This affects Chacha20 encryption and decryption in crypto2.
References
- Package: crates.io/crates/crypto2
- Advisory: rustsec.org/advisories/RUSTSEC-2021-0121.html
- Report: github.com/shadowsocks/crypto2/issues/27
From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.
Up next
Are you affected?Check your whole dependency treePaste Cargo.lock: every advisory, for your exact versions.Read it next →Also worth your time
Did this answer your question?