Cryptonite: Double Public Key Signing Function Oracle Attack on Ed25519
Affects cryptoniteSource GCVE Database
Rated High by Threat Radar's AI analysis
- Patch
- Available – fixed in 1.0.3
Data as of 13 Nov 2026, 18:41 UTC
What to do
Upgrade crypton to 1.0.3.
Patches and advisories
Affected software
| Product | Affected | Fixed in |
|---|---|---|
| Hackagecryptonite | Affected
| Fixed in– |
| Hackagecrypton | Affected
| Fixed in
|
Check your own hosts for these packages with threat-finder (opens in a new tab), our free open-source scanner.
AI-suggested
Upgrade Cryptonite to version 1.0.3 or later, where this vulnerability is fixed. The fix ensures that the signing function verifies that any provided public key matches the private key before signing. No other mitigation is required as the patch fully addresses the issue.
Description
Cryptonite versions before 1.0.3 are vulnerable to a double public key signing function oracle attack on Ed25519. The vulnerability arises when the signing function accepts an arbitrary public key input without verifying it matches the private key. An attacker with access to the signing mechanism can use multiple public keys and messages to perform cryptanalysis and potentially recover private key parameters. This flaw allows the signing function to be used as an oracle, leaking sensitive key information. A fix is available in version 1.0.3.
References
- web.archive.org/web/20250917120037/https://portswigger.net/daily-swig/dozens-of-cryptography-libraries-vulnerable-to-private-key-theft (opens in a new tab)
- github.com/MystenLabs/ed25519-unsafe-libs (opens in a new tab)
- github.com/advisories/GHSA-w5vr-6qhr-36cc (opens in a new tab)
- hackage.haskell.org/package/cryptonite-0.30/docs/src/Crypto.PubKey.Ed25519.html (opens in a new tab)
- github.com/haskell-crypto/cryptonite/blob/cryptonite-v0.30/cbits/ed25519/ed25519.c (opens in a new tab)
- github.com/kazu-yamamoto/crypton/blob/48fb9df2de5ee752196724b081f4d3cdb57576ed/cbits/ed25519/ed25519.c (opens in a new tab)
- github.com/kazu-yamamoto/crypton/pull/47 (opens in a new tab)