# Use of Weak Cryptographic Algorithm - ID: javascript-weak-crypto-algorithm - Severity: HIGH - CWE: Broken Cryptographic Algorithm (CWE-327) - Languages: JavaScript, TypeScript - Frameworks: express, fastify, nextjs ## Description Detects use of weak or broken cryptographic algorithms for hashing passwords or sensitive data. **Weak algorithms detected:** - **MD5**: Cryptographically broken, vulnerable to collision attacks - **SHA1**: Deprecated, vulnerable to collision attacks - **DES/3DES**: Weak block cipher with small key size - **RC4**: Stream cipher with known vulnerabilities **Impact:** - Password hashes can be cracked using rainbow tables or brute force - Data encrypted with weak algorithms can be decrypted by attackers - Integrity of hashed data cannot be guaranteed **For password hashing**, use: - bcrypt (recommended) - scrypt - argon2 - PBKDF2 with strong parameters **For general hashing**, use: - SHA-256 or SHA-512 (for non-password data) - SHA-3 for future-proofing **For encryption**, use: - AES-256-GCM - ChaCha20-Poly1305 ## Remediation Use bcrypt/argon2 for passwords, SHA-256+ for hashing, and AES-256-GCM for encryption. ```javascript const bcrypt = require('bcrypt'); const hash = await bcrypt.hash(password, 12); ``` Learn more: https://shoulder.dev/learn/javascript/cwe-327/weak-crypto-algorithm ## Documentation [object Object] ## Related Rules - **Use of Weak Cryptographic Algorithm** [HIGH]: - **JWT Algorithm Confusion Attack** [HIGH]: - **Weak Cryptographic Algorithm** [MEDIUM]: