GHSA-q29p-9pfr-j652 json
libcrux-sha3: Incorrect output from SHAKE squeeze functions
published 8mo ago modified 2mo ago also RUSTSEC-2026-0074
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
The incremental squeeze functions in the portable SHAKE XOF API, when attempting to squeeze more than `RATE` (168 for SHAKE128, 136 for SHAKE256) bytes, performed an additional permutation of the state before producing the first output block, thus discarding the first block of `RATE` bytes of valid XOF output.
## Impact This bug impacts users that rely on this XOF API to squeeze more than `RATE` bytes. It does not impact the use of libcrux-sha3 in libcrux-ml-kem or libcrux-ml-dsa.
## Mitigation Starting from version `0.0.8` the squeeze functions correctly output all blocks including the first block.
Patch / fix
Is GHSA-q29p-9pfr-j652 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | libcrux-sha3 | <0.0.8 >=0.0.0-0, <0.0.8 |
0.0.8 |
Classification
- Weakness
-
- CWE-682 Incorrect Calculation
References
-
github.com
/cryspen/libcrux/pull/1352
web
-
github.com
/cryspen/libcrux
package
-
rustsec.org
/advisories/RUSTSEC-2026-0074.html
web, advisory
-
crates.io
/crates/libcrux-sha3
package
Sources
- GitHub Advisory GHSA-q29p-9pfr-j652
- OSV RUSTSEC-2026-0074
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.