{"id":"GHSA-q29p-9pfr-j652","aliases":["RUSTSEC-2026-0074"],"status":"published","title":"libcrux-sha3: Incorrect output from SHAKE squeeze functions","description":"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.\n\n## Impact\nThis 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.\n\n## Mitigation\nStarting from version `0.0.8` the squeeze functions correctly output all blocks including the first block.","severity":{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high","from":"ghsa"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-682"],"published":"2026-03-04T12:00:00Z","modified":"2026-09-10T03:50:40Z","fixes":[{"ecosystem":"crates.io","package":"libcrux-sha3","fixed_in":["0.0.8"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"libcrux-sha3","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.0.8"}]}]},{"source":"osv","ecosystem":"crates.io","package":"libcrux-sha3","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.0.8"}]}]},{"source":"osv","ecosystem":"crates.io","package":"libcrux-sha3","ranges":[{"type":"SEMVER","events":[{"introduced":"0.0.0-0"},{"fixed":"0.0.8"}]}]}],"references":[{"url":"https://github.com/cryspen/libcrux/pull/1352","tags":["web"]},{"url":"https://rustsec.org/advisories/RUSTSEC-2026-0074.html","tags":["web","advisory"]},{"url":"https://github.com/advisories/GHSA-q29p-9pfr-j652"},{"url":"https://github.com/cryspen/libcrux","tags":["package"]},{"url":"https://crates.io/crates/libcrux-sha3","tags":["package"]}],"sources":{"ghsa":[{"id":"GHSA-q29p-9pfr-j652","title":"libcrux-sha3: Incorrect output from SHAKE squeeze functions","description":"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.\n\n## Impact\nThis 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.\n\n## Mitigation\nStarting from version `0.0.8` the squeeze functions correctly output all blocks including the first block.","status":"published","published":"2026-03-26T17:59:34Z","modified":"2026-03-26T17:59:35Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-682"],"updated_at":"2026-11-02T14:39:42.712607Z"}],"osv":[{"id":"GHSA-q29p-9pfr-j652","title":"libcrux-sha3: Incorrect output from SHAKE squeeze functions","description":"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.\n\n## Impact\nThis 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.\n\n## Mitigation\nStarting from version `0.0.8` the squeeze functions correctly output all blocks including the first block.","status":"published","published":"2026-03-26T17:59:34Z","modified":"2026-09-10T03:50:40.460818076Z","cvss":[{"version":"4.0","score":8.7,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N","level":"high"}],"cwes":["CWE-682"],"updated_at":"2026-11-02T15:46:53.700556Z"},{"id":"RUSTSEC-2026-0074","title":"Incorrect Output of Incremental Portable SHAKE API","description":"The incremental squeeze functions in the portable SHAKE XOF API, when\n attempting to squeeze more than `RATE` (168 for SHAKE128, 136 for\n SHAKE256) bytes, performed an additional permutation of the state\n before producing the first output block, thus discarding the first\n block of `RATE` bytes of valid XOF output.\n\n## Impact\nThis bug impacts users that rely on this XOF API to squeeze more than\n`RATE` bytes. It does not impact the use of libcrux-sha3 in\nlibcrux-ml-kem or libcrux-ml-dsa.\n\n## Mitigation\nStarting from version `0.0.8` the squeeze functions correctly output\nall blocks including the first block.","status":"published","published":"2026-03-04T12:00:00Z","modified":"2026-03-27T05:55:06Z","updated_at":"2026-11-02T15:53:40.430679Z"}]}}
