CVE-2021-27378

9.8 CRITICAL

📋 TL;DR

This vulnerability in the rand_core Rust crate allows attackers to seed random number generators with insufficient data, potentially compromising cryptographic security. It affects any Rust application using rand_core versions before 0.6.2 for generating cryptographic keys, tokens, or other security-sensitive random values.

💻 Affected Systems

Products:
  • Rust applications using rand_core crate
Versions: rand_core versions < 0.6.2
Operating Systems: All operating systems running Rust applications
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications that use the vulnerable read_u32_into or read_u64_into functions for seeding random number generators.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Cryptographic keys become predictable, allowing attackers to decrypt sensitive data, forge authentication tokens, or compromise entire security systems.

🟠

Likely Case

Reduced entropy in random number generation weakens cryptographic operations, potentially enabling brute-force attacks or statistical analysis to predict values.

🟢

If Mitigated

With proper input validation and updated libraries, the risk is eliminated as proper buffer checks ensure sufficient seeding data.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Exploitation requires understanding of the application's random number usage and ability to influence seeding data.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: rand_core 0.6.2 or later

Vendor Advisory: https://rustsec.org/advisories/RUSTSEC-2021-0023.html

Restart Required: Yes

Instructions:

1. Update Cargo.toml to require rand_core >= 0.6.2
2. Run 'cargo update rand_core'
3. Rebuild and redeploy your Rust application
4. Restart any running services using the updated application

🔧 Temporary Workarounds

Manual buffer validation

all

Add custom buffer length checks before calling read_u32_into or read_u64_into functions

// Add buffer length validation in your code
// Ensure buffer has sufficient capacity before calling vulnerable functions

🧯 If You Can't Patch

  • Isolate affected applications from sensitive systems and networks
  • Implement additional cryptographic validation layers for generated random values

🔍 How to Verify

Check if Vulnerable:

Check Cargo.lock or run 'cargo tree | grep rand_core' to see if version < 0.6.2 is used

Check Version:

cargo tree | grep rand_core

Verify Fix Applied:

Verify rand_core version is >= 0.6.2 in Cargo.lock and rebuild application successfully

📡 Detection & Monitoring

Log Indicators:

  • Unusual cryptographic failures
  • Random number generation errors
  • Entropy source warnings

Network Indicators:

  • Patterns in encrypted traffic suggesting weak keys
  • Statistical anomalies in generated tokens

SIEM Query:

Search for applications using rand_core < 0.6.2 in dependency manifests or build logs

🔗 References

📤 Share & Export