Description
The software uses a one-way cryptographic hash against an input that should not be reversible, such as a password, but the software uses a predictable salt as part of the input.
In cryptography, salt refers to some random addition of data to an input before hashing to make dictionary attacks more difficult.
Modes of Introduction:
– Implementation
Likelihood of Exploit:
Related Weaknesses
Consequences
Access Control: Bypass Protection Mechanism
Potential Mitigations
Phase: Architecture and Design
Effectiveness: High
Description:
Phase: Implementation
Effectiveness: Limited
Description:
If a technique that requires extra computational effort can not be implemented, then for each password that is processed, generate a new random salt using a strong random number generator with unpredictable seeds. Add the salt to the plaintext password before hashing it. When storing the hash, also store the salt. Do not use the same salt for every password.
Be aware that salts will not reduce the workload of a targeted attack against an individual hash (such as the password for a critical person), and in general they are less effective than other hashing techniques such as increasing the computation time or memory overhead. Without a built-in workload, modern attacks can compute large numbers of hashes, or even exhaust the entire space of all possible passwords, within a very short amount of time, using massively-parallel computing and GPU, ASIC, or FPGA hardware.
CVE References
- CVE-2008-4905
- Blogging software uses a hard-coded salt when calculating a password hash.
- CVE-2002-1657
- Database server uses the username for a salt when encrypting passwords, simplifying brute force attacks.
- CVE-2001-0967
- Server uses a constant salt when encrypting passwords, simplifying brute force attacks.
- CVE-2005-0408
- chain: product generates predictable MD5 hashes using a constant value combined with username, allowing authentication bypass.