CAPEC Definitions

    CAPEC Definitions / CAPEC-55

    CAPEC-55: Rainbow Table Password Cracking

    An attacker gets access to the database table where hashes of passwords are stored. They then use a rainbow table of pre-computed hash chains to attempt to look up the original password. Once the original password corresponding to the hash is obtained, the attacker uses the original password to gain access to the system.

    Severity:Medium
    Possibility:Medium

    Extended Description

    A password rainbow table stores hash chains for various passwords. A password chain is computed, starting from the original password, P, via a reduce(compression) function R and a hash function H. A recurrence relation exists where Xi+1 = R(H(Xi)), X0 = P. Then the hash chain of length n for the original password P can be formed: X1, X2, X3, ... , Xn-2, Xn-1, Xn, H(Xn). P and H(Xn) are then stored together in the rainbow table. Constructing the rainbow tables takes a very long time and is computationally expensive. A separate table needs to be constructed for the various hash algorithms (e.g. SHA1, MD5, etc.). However, once a rainbow table is computed, it can be very effective in cracking the passwords that have been hashed without the use of salt.

    Mitigations

    Use salt when computing password hashes. That is, concatenate the salt (random bits) with the original password prior to hashing it.

    Relationships with other CAPECs

    CAPEC-49: Password Brute Forcing

    CAPEC-600: Credential Stuffing

    CAPEC-151: Identity Spoofing

    CAPEC-560: Use of Known Domain Credentials

    CAPEC-561: Windows Admin Shares with Stolen Credentials

    CAPEC-653: Use of Known Operating System Credentials

    Prerequisites

    Hash of the original password is available to the attacker. For a better chance of success, an attacker should have more than one hash of the original password, and ideally the whole table.

    Salt was not used to create the hash of the original password. Otherwise the rainbow tables have to be re-computed, which is very expensive and will make the attack effectively infeasible (especially if salt was added in iterations).

    The system uses one factor password based authentication.

    Related Weaknesses

    CWE-261: Weak Encoding for Password

    CWE-521: Weak Password Requirements

    CWE-262: Not Using Password Aging

    CWE-263: Password Aging with Long Expiration

    CWE-654: Reliance on a Single Factor in a Security Decision

    CWE-916: Use of Password Hash With Insufficient Computational Effort

    CWE-308: Use of Single-factor Authentication

    CWE-309: Use of Password System for Primary Authentication