1813
Relevant to the view "Architectural Concepts" (CWE-1008)
Nature Type ID Name Page
MemberOf 1013 Encrypt Data 2428
Background Details
In cryptography, salt refers to some random addition of data to an input before hashing to make
dictionary attacks more difficult.
Common Consequences
Scope Impact Likelihood
Access Control Bypass Protection Mechanism
Detection Methods
Automated Static Analysis
Automated static analysis, commonly referred to as Static Application Security Testing (SAST),
can find some instances of this weakness by analyzing source code (or binary/compiled code)
without having to execute it. Typically, this is done by building a model of data flow and control
flow, then searching for potentially-vulnerable patterns that connect "sources" (origins of input)
with "sinks" (destinations where the data interacts with external components, a lower layer such
as the OS, etc.)
Effectiveness = High
Potential Mitigations
Phase: Architecture and Design
Use an adaptive hash function that can be configured to change the amount of computational
effort needed to compute the hash, such as the number of iterations ("stretching") or the amount
of memory required. Some hash functions perform salting automatically. These functions
can significantly increase the overhead for a brute force attack compared to intentionally-fast
functions such as MD5. For example, rainbow table attacks can become infeasible due to the
high computing overhead. Finally, since computing power gets faster and cheaper over time, the
technique can be reconfigured to increase the workload without forcing an entire replacement
of the algorithm in use. Some hash functions that have one or more of these desired properties
include bcrypt [REF-291], scrypt [REF-292], and PBKDF2 [REF-293]. While there is active
debate about which of these is the most effective, they are all stronger than using salts with
CWE Version 4.14
CWE-760: Use of a One-Way Hash with a Predictable Salt
CWE-760: Use of a One-Way Hash with a Predictable Salt