logo

Database

Rust Insufficient Bcrypt Cost

Description

This vulnerability occurs when Rust applications use bcrypt hashing with insufficient computational cost parameters. Low cost values make password hashes vulnerable to brute-force attacks, as they can be computed too quickly by attackers. The detector identifies bcrypt hash function calls with weak cost parameters that don't meet security standards.

Weakness:

052 - Insecure encryption algorithm

Category: Information Collection

Detection Strategy

    The bcrypt crate must be imported in the Rust code

    Code contains calls to bcrypt hashing functions (like bcrypt::hash)

    The cost parameter (second argument) in the bcrypt hash call is present

    The cost parameter value is determined to be insufficient for security (below recommended threshold)

    The cost value can be statically analyzed and confirmed as a weak/low value

Vulnerable code example

use bcrypt::hash;

fn hash_password_low_cost(password: &str) -> String {
    hash(password, 4).unwrap() // Cost 4 is below minimum safe value of 10
}

fn hash_password_low_cost_qualified(password: &str) -> String {
    bcrypt::hash(password, 4).unwrap() // Insufficient cost with qualified name...

✅ Secure code example

use bcrypt::hash;

fn hash_password_low_cost(password: &str) -> String {
    hash(password, 12).unwrap() // Cost 12 meets minimum safe value of 10
}

fn hash_password_low_cost_qualified(password: &str) -> String {
    bcrypt::hash(password, 12).unwrap() // Safe cost with qualified name...