CVE-2023-46809 Overview
Node.js versions which bundle an unpatched version of OpenSSL or run against a dynamically linked version of OpenSSL which are unpatched are vulnerable to the Marvin Attack. This vulnerability affects systems if PKCS #1 v1.5 padding is allowed when performing RSA decryption using a private key. The Marvin Attack is a timing side-channel attack that can allow attackers to decrypt ciphertext and forge signatures without possessing the private key.
Critical Impact
This timing side-channel vulnerability in RSA PKCS#1 v1.5 padding could allow attackers to decrypt sensitive data or forge digital signatures through precise timing measurements during RSA decryption operations.
Affected Products
- Node.js versions bundling unpatched OpenSSL
- Node.js versions linked against unpatched system OpenSSL libraries
- Systems using RSA with PKCS #1 v1.5 padding for decryption
Discovery Timeline
- 2024-09-07 - CVE CVE-2023-46809 published to NVD
- 2025-11-04 - Last updated in NVD database
Technical Details for CVE-2023-46809
Vulnerability Analysis
This vulnerability is classified under CWE-385 (Covert Timing Channel), indicating that the flaw relates to information disclosure through timing variations in cryptographic operations. The Marvin Attack exploits subtle timing differences in how RSA decryption handles PKCS#1 v1.5 padding validation. When an application uses RSA private key operations with PKCS#1 v1.5 padding, the time taken to process different ciphertexts can vary slightly depending on the padding validity. An attacker who can measure these timing differences with sufficient precision can gradually recover the plaintext or forge valid signatures without access to the private key.
The attack requires network access and high complexity to execute successfully, as the attacker must capture precise timing measurements across multiple decryption attempts. However, successful exploitation can lead to significant confidentiality and integrity impacts, potentially exposing encrypted communications or enabling signature forgery.
Root Cause
The root cause lies in the OpenSSL library's implementation of RSA PKCS#1 v1.5 decryption, which does not execute in constant time. The padding verification process introduces measurable timing variations that correlate with the structure of the decrypted data. Node.js applications are affected when they bundle or link against vulnerable OpenSSL versions and use RSA decryption with PKCS#1 v1.5 padding mode.
Attack Vector
The attack is conducted over the network, where an attacker sends specially crafted ciphertexts to a target server performing RSA decryption. By measuring response times for numerous decryption attempts, the attacker can build a statistical model of timing variations. This information is then used to iteratively recover the plaintext or derive information sufficient to forge signatures.
The Marvin Attack requires:
- A target system performing RSA private key operations with PKCS#1 v1.5 padding
- The ability to submit ciphertexts and measure decryption timing with high precision
- Sufficient network proximity or conditions to minimize timing noise
- A large number of oracle queries (potentially millions) depending on key size and conditions
For detailed technical information about the Marvin Attack methodology, refer to the Node.js Security Release Blog.
Detection Methods for CVE-2023-46809
Indicators of Compromise
- Unusual patterns of RSA decryption requests with high frequency from single sources
- Timing anomalies in TLS handshakes or other RSA-based authentication workflows
- Large volumes of failed decryption attempts followed by successful operations
Detection Strategies
- Monitor for high-volume RSA decryption operations from individual IP addresses or clients
- Implement network traffic analysis to detect potential timing oracle probing patterns
- Deploy application-level logging for cryptographic operations to identify anomalous usage patterns
- Use intrusion detection systems with rules targeting timing attack reconnaissance behavior
Monitoring Recommendations
- Enable detailed logging for TLS handshake operations and RSA key usage
- Monitor OpenSSL version deployments across your Node.js infrastructure
- Track cryptographic operation latencies for statistical anomalies that may indicate probing
- Audit applications for use of RSA PKCS#1 v1.5 padding in decryption workflows
How to Mitigate CVE-2023-46809
Immediate Actions Required
- Update Node.js to the latest patched version that includes fixed OpenSSL libraries
- If using system OpenSSL, ensure it is updated to a version patched against the Marvin Attack
- Audit applications to identify usage of RSA PKCS#1 v1.5 padding and migrate to OAEP where possible
- Review cryptographic configurations to minimize exposure to timing attacks
Patch Information
Node.js released security updates addressing this vulnerability in February 2024. Administrators should update to the patched versions as detailed in the Node.js Security Release Blog. Debian users should apply updates from the Debian LTS Advisory March 2024 and the Debian LTS Advisory September 2024.
Workarounds
- Migrate from RSA PKCS#1 v1.5 padding to RSA-OAEP (Optimal Asymmetric Encryption Padding) which is designed to be resistant to timing attacks
- Where migration is not immediately possible, implement additional network-level rate limiting on endpoints performing RSA decryption
- Add artificial random delays to RSA operations to obscure timing information (note: this is not a complete mitigation)
- Use hardware security modules (HSMs) for RSA operations which may provide constant-time implementations
# Check Node.js version and update
node --version
# Update using package manager (example for npm-based version management)
nvm install --lts
nvm use --lts
# Check linked OpenSSL version
node -e "console.log(process.versions.openssl)"
# For Debian-based systems, update OpenSSL
sudo apt update && sudo apt upgrade openssl libssl-dev
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


