Use of Password Hash Instead of Password for Authentication

Incomplete Base
Structure: Simple
Description

This vulnerability occurs when an application's authentication system accepts a password hash directly from the client for verification, instead of receiving and hashing the plaintext password on the server.

Extended Description

Some systems are designed to have the client (like a web browser or mobile app) send a pre-computed password hash to the server, often with the intention of reducing server load or avoiding transmission of the raw password. However, this design fundamentally breaks the security model. Once an attacker steals a hash from the server's database—through methods like SQL injection or data exposure—they can simply submit that same hash using a modified client to impersonate the user. The server cannot distinguish between a legitimate client's hash and an attacker's replayed one. Consequently, authenticating with a client-supplied hash provides no more security than using plaintext passwords. The server loses the ability to apply its own cryptographic salts and work factors, and the hash effectively becomes the password itself. To be secure, the server must always receive the plaintext password, perform the hashing operation itself using a strong, salted algorithm, and compare the result to its stored hash.

Common Consequences 1
Scope: Access Control

Impact: Bypass Protection MechanismGain Privileges or Assume Identity

An attacker could bypass the authentication routine without knowing the original password.

Observed Examples 2
CVE-2009-1283Product performs authentication with user-supplied password hashes that can be obtained from a separate SQL injection vulnerability (CVE-2009-1282).
CVE-2005-3435Product allows attackers to bypass authentication by obtaining the password hash for another user and specifying the hash in the pwd argument.
Applicable Platforms
Languages:
Not Language-Specific : Undetermined
Modes of Introduction
Implementation