RUSTSEC-2026-0331 Panic on Decoding Short Hybrid Keys
An attacker can cause a denial of service by providing short input slices to key decoding functions in the libcrux-kem library.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is RUSTSEC-2026-0331?
RUSTSEC-2026-0331 is a denial of service vulnerability in libcrux-kem, published on 24 Aug 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
The deserialization functions X25519MlKem768Draft00PrivateKey::decode X25519MlKem768Draft00PublicKey::decode and XWingKemDraft06PublicKey::decode would panic during an indexing operation when provided an input slice that is shorter than the length of the given key type, i.e. shorter than 2400 bytes in the case of the X25519MlKem768Draft00 private key and shorter than 1184 bytes in the case of the X25519MlKem768Draft and XWingKemDraft06 public keys.
Impact
Applications decoding attacker provided slices into the above mentioned private and public key types could be made to panic.
Mitigation
With release of version 0.0.10 of libcrux-kem this bug has been fixed and the serialization functions return InvalidPrivateKey and InvalidPublicKey errors on invalid input buffer lengths.
We recommend users upgrade to libcrux-kem version 0.0.10.
Which versions are affected by RUSTSEC-2026-0331?
1 open source package ship an affected version, including libcrux-kem.
| Package | Affected | Fixed in |
|---|---|---|
libcrux-kem crates.io | From 0.0.0-0 | 0.0.10 |
How do I fix RUSTSEC-2026-0331?
Upgrade libcrux-kem to 0.0.10 or later.
Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.
Is RUSTSEC-2026-0331 being exploited?
There is no known exploitation of RUSTSEC-2026-0331 in the wild and no public exploit code.