Rust advisories / libcrux-sha3
VulnerabilityRUSTSEC-2026-0207 · libcrux-sha3
RUSTSEC-2026-0207: Incorrect Output of Incremental Portable SHAKE API on Multiple Squeeze Calls
Short answerA security vulnerability in the libcrux-sha3 crate: Incorrect Output of Incremental Portable SHAKE API on Multiple Squeeze Calls. No severity score was published. Fixed in 0.0.10: update to a fixed version.
| Crate | libcrux-sha3 |
|---|---|
| Type | Vulnerability |
| Affected versions | Before 0.0.10. |
| Fixed in | 0.0.10 |
| Severity | not scored CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
| Published | 2026-04-22 |
| Last changed | 2026-07-17 |
| Also known as | none |
| Affected functions | libcrux_sha3::portable::incremental::Shake128Xof::squeeze, libcrux_sha3::portable::incremental::Shake256Xof::squeeze |
What to do
- See which version you have:
cargo tree -i libcrux-sha3(it also shows which of your dependencies pulls it in). - Update within your version requirement:
cargo update -p libcrux-sha3. If the fix is a newer major or minor than your requirement allows, raise it in Cargo.toml (for examplelibcrux-sha3 = "0.0.10") or update the dependency that pulls it in. - Check again with
cargo audit, or paste your Cargo.lock into our Cargo.toml checker.
Details from the advisory
The incremental squeeze functions in the portable SHAKE XOF API, when attempting to squeeze an output using multiple calls to squeeze, rather than squeezing the full output at once, could output incorrect values. Internally, output blocks that were not completely squeezed were not buffered for the next call to squeeze, which would consequently drop bytes of the correct squeeze output if the preceding call requested an output of length in bytes not cleanly divisible by RATE (168 for SHAKE128, 136 for SHAKE256).
Impact
This bug impacts users that rely on this XOF API to squeeze output in multiple calls where any of the calls request an output length that is not divisible by RATE. It does not impact the use of libcrux-sha3 in libcrux-ml-kem or libcrux-ml-dsa.
Mitigation
Starting from version 0.0.10 the squeeze functions correctly output all squeezed bytes independent of the number of squeeze calls and the output lengths requested in each call.
References
- Package: crates.io/crates/libcrux-sha3
- Advisory: rustsec.org/advisories/RUSTSEC-2026-0207.html
- Web: github.com/celabshq/libcrux/pull/1389
From the RustSec Advisory Database (CC0-1.0) via the OSV export, downloaded Oct 24, 2026. Severity score computed from the published CVSS vector.
Other advisories for libcrux-sha3
Up next
Same cratelibcrux-sha3: security historyEvery advisory for this crate, and whether it is safe to use today.Read it next →Did this answer your question?