Password storage without an adequate adaptive hash
A password verifier has insufficient computational cost for its supported threat model.
Candidate CWE: CWE-916
Test hypothesis#
In your lab, create a synthetic password and inspect the stored verifier and verification path. Identify algorithm, salt handling, cost, migration behavior, and any server-side pepper. Measure the configured hash locally; preserve the application version and deployment settings.
Evidence required#
Provide a redacted verifier format, relevant code and configuration, and a bounded cost comparison. Distinguish plain-text storage, reversible encryption, and inadequate work factor; they have different root causes. Program eligibility and access prerequisites still matter.
Rule out false positives#
A visible salt, a random-looking digest, or a hash name alone is insufficient. An old digest that is immediately upgraded and inaccessible under the stated threat model needs qualified impact.
Playbook and command references#
- Source review: entry point to protected operation — Trace attacker control and authorization through handlers, services, queues, and sensitive operations; promote only reachable violations of a stated invariant.
- Client storage, logs, backup and transport trust — Measure where sensitive client state goes, who can retrieve it, and whether transport rejects invalid peers.
Find the associated command snippets
Referenced by these target playbooks#
Report checklist#
- Capture the affected version, configuration, identities, and object ownership.
- Preserve a valid baseline and a negative control.
- Reproduce the forbidden data access, action, or state change on controlled fixtures.
- Explain the intended security rule and why the observed behavior violates it.
- State prerequisites, uncertainty, cleanup, and the smallest demonstrated impact.
Conditional ATT&CK mapping#
No direct ATT&CK mapping selected. Record the weakness and demonstrated impact without forcing an adversary-behavior classification. See the mapping guide.