CVE-2023-23919

7.5 HIGH

📋 TL;DR

A cryptographic vulnerability in Node.js versions before specified patches fails to clear OpenSSL error stacks after operations, potentially causing false positive errors in subsequent cryptographic operations on the same thread. This could lead to denial of service conditions. Affects Node.js applications using cryptographic functions in vulnerable versions.

💻 Affected Systems

Products:
  • Node.js
Versions: Node.js <19.2.0, <18.14.1, <16.19.1, <14.21.3
Operating Systems: All platforms running Node.js
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects applications performing cryptographic operations using Node.js crypto module

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Denial of service causing application crashes or unavailability of cryptographic services

🟠

Likely Case

Intermittent cryptographic operation failures leading to degraded application performance

🟢

If Mitigated

Minor performance impact with proper error handling and monitoring

🌐 Internet-Facing: MEDIUM - Exploitable via crafted requests to trigger cryptographic operations
🏢 Internal Only: LOW - Requires access to trigger cryptographic operations internally

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ⚠️ Yes
Complexity: MEDIUM

Requires ability to trigger cryptographic operations repeatedly to cause error stack buildup

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Node.js 19.2.0, 18.14.1, 16.19.1, 14.21.3 or later

Vendor Advisory: https://nodejs.org/en/blog/vulnerability/february-2023-security-releases/

Restart Required: Yes

Instructions:

1. Identify Node.js version using 'node --version'. 2. Upgrade to patched version using package manager (npm, nvm, or system package manager). 3. Restart all Node.js applications and services.

🔧 Temporary Workarounds

Limit cryptographic operations

all

Reduce frequency of cryptographic operations to minimize error stack buildup

Implement circuit breaker

all

Add circuit breaker pattern to detect and handle cryptographic operation failures

🧯 If You Can't Patch

  • Implement rate limiting on endpoints that trigger cryptographic operations
  • Monitor application logs for cryptographic error patterns and implement alerting

🔍 How to Verify

Check if Vulnerable:

Run 'node --version' and compare against affected versions

Check Version:

node --version

Verify Fix Applied:

Verify Node.js version is 19.2.0+, 18.14.1+, 16.19.1+, or 14.21.3+

📡 Detection & Monitoring

Log Indicators:

  • OpenSSL error stack warnings
  • Cryptographic operation failures
  • Application crashes during crypto operations

Network Indicators:

  • Increased failed requests to crypto-related endpoints
  • Unusual patterns of requests triggering crypto operations

SIEM Query:

source="nodejs" AND ("OpenSSL error" OR "crypto error" OR "ERR_CRYPTO")

🔗 References

📤 Share & Export