| name | length-extension-attacks-anti-pattern |
| description | Security anti-pattern for hash length extension vulnerabilities (CWE-328). Use when generating or reviewing code that uses hash(secret + message) for authentication, API signatures, or integrity verification. Detects Merkle-Damgard hash misuse. |
Length Extension Attacks Anti-Pattern
Severity: High
Summary
Hash length extension attacks exploit Merkle-Damgård construction vulnerabilities in MD5, SHA-1, and SHA-256. Attackers knowing hash(secret + message) and secret length can compute hash(secret + message + padding + attacker_data) without knowing the secret. This enables appending data to signed messages with valid signatures, completely breaking message integrity and authentication.
The Anti-Pattern
Never use vulnerable hash functions (MD5, SHA-1, SHA-256) in hash(secret + message) construction for MACs. Use HMAC instead.
BAD Code Example
import hashlib
SECRET_KEY = b"my_super_secret_key_16b"
def get_signed_url(message):
signature = hashlib.sha256(SECRET_KEY + message.encode()).hexdigest()
return f"/api/action?{message}&signature={signature}"
def verify_request():
expected_signature = hashlib.sha256(SECRET_KEY + message.encode()).hexdigest()
signature == expected_signature