logo

Database

Javascript Hardcoded Key Material Used

Description

Detects hardcoded cryptographic keys and credentials in JavaScript code using the CryptoJS library. This represents a security risk since embedding sensitive cryptographic material directly in source code makes it accessible to attackers who can extract the keys to decrypt sensitive data.

Weakness:

009 - Sensitive information in source code

Category: Information Collection

Detection Strategy

    • Scans JavaScript source files for CryptoJS library usage and cryptographic operations

    • Identifies hardcoded string values passed as keys or initialization vectors to crypto functions

    • Reports instances where cryptographic keys are directly embedded in the code instead of being retrieved from secure configuration

    • Checks crypto operation calls like AES encryption/decryption for hardcoded key material

Vulnerable code example

import * as CryptoJS from "crypto-js";

function encodeSecretData(data) {
    // Unsafe: Using weak encoding methods that don't provide cryptographic security
    const encoded1 = CryptoJS.enc.Utf16LE.parse("secret123");  
    const encoded2 = CryptoJS.enc.Latin1.parse("password");
    const encoded3 = CryptoJS.enc.Utf8.parse("api_key");
    return encoded1;...

✅ Secure code example

import * as CryptoJS from "crypto-js";

function encodeSecretData(data) {
    // Safe: Using strong AES encryption with random key/IV instead of basic encoding
    const key = CryptoJS.lib.WordArray.random(32); // Generate secure random 256-bit key
    const encrypted = CryptoJS.AES.encrypt(data, key, {
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7...