logo

Database

Javascript Insecure Ecdh Curve

Description

Detects the usage of cryptographically weak or deprecated elliptic curves in ECDH (Elliptic Curve Diffie-Hellman) key exchange operations in JavaScript code. Using weak curves can compromise the security of the key exchange protocol, potentially allowing attackers to break the encryption.

Weakness:

052 - Insecure encryption algorithm

Category: Information Collection

Detection Strategy

    • Check for ECDH key generation or key exchange operations in JavaScript code

    • Look for curve specifications or parameters being passed to ECDH operations

    • Flag usage of known insecure or deprecated curves like secp192r1, secp224r1, or other NIST curves below P-256

    • Report a vulnerability when ECDH operations use curves that don't meet minimum security requirements of 128-bit security level

Vulnerable code example

const crypto = require('crypto');

// Vulnerable: Using weak/deprecated EC curve 'c2pnb163v2'
const ecdh = crypto.createECDH('c2pnb163v2');
const publicKey = ecdh.generateKeys();
console.log(publicKey.toString('hex'));

✅ Secure code example

const crypto = require('crypto');

// Safe: Using strong standardized curve 'prime256v1' (secp256r1)
const ecdh = crypto.createECDH('prime256v1');
const publicKey = ecdh.generateKeys();
console.log(publicKey.toString('hex'));