CWEweakness

CWE-916 Use of Password Hash With Insufficient Computational Effort

Official page ↗
Abstraction
Base
Structure
Simple
Status
Incomplete
Languages
Not Language-Specific
CWE version
5.0

Description

The product generates a hash for a password, but it uses a scheme that does not provide a sufficient level of computational effort that would make password cracking attacks infeasible or expensive.

Extended description

Many password storage mechanisms compute a hash and store the hash, instead of storing the original password in plaintext. In this design, authentication involves accepting an incoming password, computing its hash, and comparing it to the stored hash. Many hash algorithms are designed to execute quickly with minimal overhead, even cryptographic hashes. However, this efficiency is a problem for password storage, because it can reduce an attacker's workload for brute-force password cracking. If an attacker can obtain the hashes through some other method (such as SQL injection on a database that stores hashes), then the attacker can store the hashes offline and use various techniques to crack the passwords by computing hashes efficiently. 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 (such as cloud computing) and GPU, ASIC, or FPGA hardware. In such a scenario, an efficient hash algorithm helps the attacker. There are several properties of a hash scheme that are relevant to its strength against an offline, massively-parallel attack: • The amount of CPU time required to compute the hash ("stretching") • The amount of memory required to compute the hash ("memory-hard" operations) • Including a random value, along with the password, as input to the hash computation ("salting") • Given a hash, there is no known way of determining an input (e.g., a password) that produces this hash value, other than by guessing possible inputs ("one-way" hashing) • Relative to the number of all possible hashes that can be generated by the scheme, there is a low likelihood of producing the same hash for multiple different inputs ("collision resistance") Note that the security requirements for the product may vary depending on the environment and the value of the passwords. Different schemes might not provide all of these properties, yet may still provide sufficient security for the environment. Conversely, a solution might be very strong in preserving one property, which still being very weak for an attack against another property, or it might not be able to significantly reduce the efficiency of a massively-parallel attack.

Common consequences

• Access Control: Bypass Protection Mechanism, Gain Privileges or Assume Identity — If an attacker can gain access to the hashes, then the lack of sufficient computational effort will make it easier to conduct brute force attacks using techniques such as rainbow tables, or specialized hardware such as GPUs, which can be much faster than general-purpose CPUs for computing hashes.

Potential mitigations

• [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 hash functions with very little computing overhead. Note that using these functions can have an impact on performance, so they require special consideration to avoid denial-of-service attacks. However, their configurability provides finer control over how much CPU and memory is used, so it could be adjusted to suit the environment's needs. • [Implementation, Architecture and Design] When using industry-approved techniques, use them correctly. Don't cut corners by skipping resource-intensive steps (CWE-325). These steps are often essential for preventing common attacks.

Detection methods

• Automated Static Analysis - Binary or Bytecode: According to SOAR [REF-1479], the following detection techniques may be useful: Cost effective for partial coverage: • Bytecode Weakness Analysis - including disassembler + source code weakness analysis • Binary Weakness Analysis - including disassembler + source code weakness analysis • Manual Static Analysis - Binary or Bytecode: According to SOAR [REF-1479], the following detection techniques may be useful: Cost effective for partial coverage: • Binary / Bytecode disassembler - then use manual analysis for vulnerabilities & anomalies • Manual Static Analysis - Source Code: According to SOAR [REF-1479], the following detection techniques may be useful: Highly cost effective: • Focused Manual Spotcheck - Focused manual analysis of source • Manual Source Code Review (not inspections) • Automated Static Analysis - Source Code: According to SOAR [REF-1479], the following detection techniques may be useful: Highly cost effective: • Source code Weakness Analyzer • Context-configured Source Code Weakness Analyzer • Automated Static Analysis: According to SOAR [REF-1479], the following detection techniques may be useful: Cost effective for partial coverage: • Configuration Checker • Architecture or Design Review: According to SOAR [REF-1479], the following detection techniques may be useful: Highly cost effective: • Formal Methods / Correct-By-Construction Cost effective for partial coverage: • Inspection (IEEE 1028 standard) (can apply to requirements, design, source code, etc.)

Observed examples

• CVE-2008-1526: Router does not use a salt with a hash, making it easier to crack passwords. • CVE-2006-1058: Router does not use a salt with a hash, making it easier to crack passwords. • 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.

Related

Attack pattern · CAPEC (1)

  • CAPEC-55 Rainbow Table Password Cracking attack pattern

Observed example · CVE (6)

  • CVE-2008-4905 Typo 5.1.3 and earlier uses a hard-coded salt for calculating password hashes, which makes it easier for attackers to guess passwords via a… vulnerability
  • CVE-2008-1526 ZyXEL Prestige routers, including P-660, P-661, and P-662 models with firmware 3.40(PE9) and 3.40(AGD.2) through 3.40(AHQ.3), do not use a… vulnerability
  • CVE-2006-1058 BusyBox 1.1.1 does not use a salt when generating passwords, which makes it easier for local users to guess passwords from a stolen… vulnerability
  • CVE-2005-0408 CitrusDB 0.3.6 and earlier generates easily predictable MD5 hashes of the user name for the id_hash cookie, which allows remote attackers… vulnerability
  • CVE-2002-1657 PostgreSQL uses the username for a salt when generating passwords, which makes it easier for remote attackers to guess passwords via a… vulnerability
  • CVE-2001-0967 Knox Arkeia server 4.2, and possibly other versions, uses a constant salt when encrypting passwords using the crypt() function, which makes… vulnerability

Child of · CWE (2)

  • CWE-327 Use of a Broken or Risky Cryptographic Algorithm weakness
  • CWE-328 Use of Weak Hash weakness

Referenced by CAPEC · weakness (1)

  • CAPEC-55 Rainbow Table Password Cracking attack pattern

Referenced by CVE · weakness (144)

  • CVE-2026-65629 Use of Password Hash With Insufficient Computational Effort in the jose library allows an attacker who obtains a password-encrypted… vulnerability
  • CVE-2026-116054 A security vulnerability has been detected in SH3. vulnerability
  • CVE-2026-116071 rotki before 1.44.2 contains a weak key derivation vulnerability that allows attackers to brute-force backups because the premium sync key… vulnerability
  • CVE-2025-30049 The CGM CLININET application stores user passwords as unsalted MD5 hashes. vulnerability
  • CVE-2026-112026 A security vulnerability has been detected in light0011 cms… vulnerability
  • CVE-2026-112029 A vulnerability has been found in diem-project diem up to 5.1.3. vulnerability
  • CVE-2026-111330 JuggleIM im-server through 1.8.16 contains a weak password hashing vulnerability that stores admin console passwords as unsalted SHA-1… vulnerability
  • CVE-2026-110104 Xxyopen novel through 3.5.0 contains a weak password hashing vulnerability that allows attackers to recover plaintext passwords because… vulnerability
  • CVE-2026-62376 Vikunja is an open-source self-hosted task management platform. vulnerability
  • CVE-2026-107829 Jivejdon through 5.0 contains a weak password storage vulnerability that stores account passwords as unsalted MD5 digests via… vulnerability
  • CVE-2026-105804 Payload is a free and open source headless content management system. vulnerability
  • CVE-2026-94206 Use of Password Hash With Insufficient Computational Effort vulnerability in danielberkompas cloak_ecto and danielberkompas cloak allows an… vulnerability
  • CVE-2026-105156 A weakness has been identified in YzmCMS up to 7.6. vulnerability
  • CVE-2026-85497 CareCam CM2507 IP cameras store the device's root-account password using a fixed legacy password hash that provides insufficient resistance… vulnerability
  • CVE-2026-92921 admin3 through 3.0.0 stores account passwords using single-round MD5 with only the username as salt and no key derivation function. vulnerability
  • CVE-2026-90457 The administrative password is hashed using a comparatively weak, fast algorithm for the credential store backing one authentication path,… vulnerability
  • CVE-2026-86670 A flaw has been found in aircheng-org iWebShop-5 up to 5.15. vulnerability
  • CVE-2026-80211 FrontAccounting through 2.4.20 stores and verifies user passwords as unsalted MD5 digests. vulnerability
  • CVE-2026-81689 openssl_encrypt versions before 1.4.9 derive the remote-pepper wrap key using unsalted HKDF-SHA256 or bare SHA-256 of the password,… vulnerability
  • CVE-2026-81704 openssl_encrypt versions before 1.4.9 contain a weak key derivation vulnerability in the D-Bus CryptoService.EncryptFile handler that uses… vulnerability
  • CVE-2026-53762 VeraCrypt provides disk encryption with strong security based on TrueCrypt. vulnerability
  • CVE-2026-75112 A security issue exists within OTTO® Fleet Manager. vulnerability
  • CVE-2026-74871 openssl_encrypt versions before 1.4.6 contain a key derivation flaw in sequential XOR composition mode where the last stage cancels out… vulnerability
  • CVE-2026-49005 The root password hash of the device can be obtained through unencrypted information in the firmware. vulnerability
  • CVE-2026-57310 Windu CMS uses hashing algorithm based on MD5 and SHA1 with static salt to store user passwords. vulnerability
  • CVE-2026-5040 TP-Link Deco M5 v1 uses a weak password hashing mechanism to store user credentials. vulnerability
  • CVE-2026-40522 FrontAccounting before 2.4.20 contains a SQL injection vulnerability in the Bank Statement report handler that allows authenticated… vulnerability
  • CVE-2026-55069 Kestra is an open-source, event-driven orchestration platform. vulnerability
  • CVE-2026-56272 Flowise before 3.0.13 uses bcrypt with default salt rounds of 5, providing only 32 iterations instead of the OWASP-recommended minimum of… vulnerability
  • CVE-2026-9641 Crypt::PBKDF2 versions before 0.261630 for Perl have a weak default algorithm and number of iterations. vulnerability
Show all 144 ›

Referenced by CWE · child of (2)

  • CWE-759 Use of a One-Way Hash without a Salt weakness
  • CWE-760 Use of a One-Way Hash with a Predictable Salt weakness

Referenced by OWASP · mapped cwe (2)

  • A04:2025 Cryptographic Failures Top 10 2025
  • A02:2021 Cryptographic Failures Top 10 2021