Timing Attack Vulnerability
Overview
String comparison functions (==, ===, strcmp) short-circuit on the first mismatched character. Measuring response times reveals how many characters of a secret match the attacker's guess. This is exploitable for:
- API key validation
- HMAC signature verification
- Session token comparison
- Password comparison (before hashing)
Remediation
Use constant-time comparison functions:
- Python:
hmac.compare_digest() - Go:
subtle.ConstantTimeCompare() - Node.js:
crypto.timingSafeEqual() - PHP:
hash_equals() - Java:
MessageDigest.isEqual()