# RUSTSEC-2016-0005: rust-crypto is unmaintained; switch to a modern alternative

> The rust-crypto crate is unmaintained and unresponsive, requiring developers to switch to modern alternatives like ring or RustCrypto.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** Not stated
- **Attackable:** Not stated
- **Victim action needed:** Not stated
- **Fix available:** Yes
- **Published:** 6 Sep 2016

## What is RUSTSEC-2016-0005?

RUSTSEC-2016-0005 is a vulnerability in rust-crypto, published on 6 Sep 2016. 

### Official description

The `rust-crypto` crate has not seen a release or GitHub commit since 2016,
and its author is unresponsive.

*NOTE: The (old) `rust-crypto` crate (with hyphen) should not be confused with
similarly named (new) [RustCrypto GitHub Org] (without hyphen). The GitHub Org
is actively maintained.*

We recommend you switch to one of the following crates instead, depending on
which algorithms you need:

- [dalek-cryptography GitHub Org]:
  - Key agreement: [`x25519-dalek`]
  - Signature algorithms: [`ed25519-dalek`]
- [`ring`]:
  - AEAD algorithms: AES-GCM, ChaCha20Poly1305
  - Digest algorithms: SHA-256, SHA-384, SHA-512, SHA-512/256 (legacy: SHA-1)
  - HMAC
  - Key agreement: ECDH (P-256, P-384), X25519
  - Key derivation: HKDF
  - Password hashing: PBKDF2
  - Signature algorithms: ECDSA (P-256, P-384), Ed25519, RSA (PKCS#1v1.5, PSS)
- [RustCrypto GitHub Org]:
  - AEAD algorithms: [`aes-gcm`], [`aes-gcm-siv`], [`aes-siv`], [`chacha20poly1305`], [`xsalsa20poly1305`]
  - Block ciphers: [`aes`], [`cast5`], [`des`]
  - Digest algorithms: [`sha2`], [`sha3`], [`blake2`], [`ripemd160`]
    (legacy: [`sha-1`], [`md-5`])
  - Key derivation: [`hkdf`]
  - MACs: [`cmac`], [`hmac`], [`pmac`], [`poly1305`]
  - Password hashing: [`pbkdf2`]
  - Stream ciphers: [`aes-ctr`], [`chacha20`], [`hc-256`], [`salsa20`]
- [`secp256k1`]:
  - Key agreement: ECDH (secp256k1 only)
  - Signature algorithms: ECDSA (secp256k1 only)
- [`orion`]:
  - AEAD algorithms: ChaCha20Poly1305 (IETF version), XChaCha20Poly1305
  - Digest algorithms: SHA-512, BLAKE2b
  - Key derivation: HKDF
  - MACs: HMAC, Poly1305
  - Password hashing: PBKDF2
  - Stream ciphers: ChaCha20 (IETF version), XChaCha20

[dalek-cryptography GitHub Org]: https://github.com/dalek-cryptography
[RustCrypto GitHub Org]: https://github.com/RustCrypto
[`aes`]: https://crates.io/crates/aes
[`aes-ctr`]: https://crates.io/crates/aes-ctr
[`aes-gcm`]: https://crates.io/crates/aes-gcm
[`aes-gcm-siv`]: https://crates.io/crates/aes-gcm-siv
[`aes-siv`]: https://crates.io/crates/aes-siv
[`blake2`]: https://crates.io/crates/blake2
[`cast5`]: https://crates.io/crates/cast5
[`chacha20`]: https://crates.io/crates/chacha20
[`chacha20poly1305`]: https://crates.io/crates/chacha20poly1305
[`cmac`]: https://crates.io/crates/cmac
[`des`]: https://crates.io/crates/des
[`ed25519-dalek`]: https://crates.io/crates/ed25519-dalek
[`hc-256`]: https://crates.io/crates/hc-256
[`hkdf`]: https://crates.io/crates/hkdf
[`hmac`]: https://crates.io/crates/hmac
[`pbkdf2`]: https://crates.io/crates/pbkdf2
[`pmac`]: https://crates.io/crates/pmac
[`poly1305`]: https://crates.io/crates/poly1305
[`ring`]: https://crates.io/crates/ring
[`ripemd160`]: https://crates.io/crates/ripemd160
[`salsa20`]: https://crates.io/crates/salsa20
[`secp256k1`]: https://crates.io/crates/secp256k1
[`sha-1`]: https://crates.io/crates/sha-1
[`sha2`]: https://crates.io/crates/sha2
[`sha3`]: https://crates.io/crates/sha3
[`x25519-dalek`]: https://crates.io/crates/x25519-dalek
[`xsalsa20poly1305`]: https://crates.io/crates/xsalsa20poly1305
[`orion`]: https://crates.io/crates/orion

## Which versions are affected by RUSTSEC-2016-0005?

1 open source package ship an affected version, including rust-crypto.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `rust-crypto` | crates.io | From 0.0.0-0 | 0.2.37-0 |

## How do I fix RUSTSEC-2016-0005?

Upgrade rust-crypto to 0.2.37-0 or later.

## Is RUSTSEC-2016-0005 being exploited?

There is no known exploitation of RUSTSEC-2016-0005 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for RUSTSEC-2016-0005 and fix it if it is affected.

What it is: RUSTSEC-2016-0005 is a vulnerability in rust-crypto, published on 6 Sep 2016. 
Exploitation: There is no known exploitation of RUSTSEC-2016-0005 in the wild and no public exploit code.

Affected packages and fixed versions:
- rust-crypto (crates.io): affected from 0.0.0-0; fixed in 0.2.37-0

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/RUSTSEC-2016-0005/ (Markdown: https://insights.sbomify.com/RUSTSEC-2016-0005/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/RUSTSEC-2016-0005

---
From sbomify Insights: https://insights.sbomify.com/RUSTSEC-2016-0005/
Summaries are generated and may contain mistakes; the official description above is the record.
