-
-
Notifications
You must be signed in to change notification settings - Fork 32.7k
Closed
Labels
cryptoIssues and PRs related to the crypto subsystem.Issues and PRs related to the crypto subsystem.securityIssues and PRs related to security.Issues and PRs related to security.
Description
Version
v22.11.0, v23.1.0
Platform
Linux 6.8.0-47-generic #47-Ubuntu SMP PREEMPT_DYNAMIC Fri Sep 27 21:40:26 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Subsystem
No response
What steps will reproduce the bug?
Trying to run this sample code:
import('node:crypto').then(
({ constants, generateKeyPairSync, privateDecrypt, publicEncrypt }) => {
console.log(`Running on ${process.version}`);
const padding = constants.RSA_PKCS1_PADDING;
const { publicKey, privateKey } = generateKeyPairSync('rsa', {
modulusLength: 2048,
});
const source = Buffer.from('test');
const encrypted = publicEncrypt({ key: publicKey, padding }, source);
const decrypted = privateDecrypt({ key: privateKey, padding }, encrypted);
console.log(
source.toString() === decrypted.toString() ? 'Match' : 'Failure'
);
}
);
How often does it reproduce? Is there a required condition?
I've tested on v22.0.0, v22.10.0, v22.11.0 and v23.1.0 - all return
TypeError: RSA_PKCS1_PADDING is no longer supported for private decryption,
this can be reverted with --security-revert=CVE-2024-PEND
What is the expected behavior? Why is that the expected behavior?
It should run with a warning as v20.17.0
SECURITY WARNING: Reverting CVE-2023-46809: Marvin attack on PKCS#1 padding
What do you see instead?
It complains about unknown CVE
node: Error: Attempt to revert an unknown CVE [CVE-2024-PEND]
Additional information
Complete 'test' session
$ nvm use v20
Now using node v20.17.0 (npm v10.8.3)
$ node test.js
Running on v20.17.0
node:internal/crypto/cipher:79
return method(data, format, type, passphrase, buffer, padding, oaepHash,
^
TypeError: RSA_PKCS1_PADDING is no longer supported for private decryption, this can be reverted with --security-revert=CVE-2023-46809
at node:internal/crypto/cipher:79:12
at file:///.../test.js:11:23 {
code: 'ERR_INVALID_ARG_VALUE'
}
Node.js v20.17.0
$ node --security-revert=CVE-2023-46809 test.js
SECURITY WARNING: Reverting CVE-2023-46809: Marvin attack on PKCS#1 padding
Running on v20.17.0
Match
$ nvm use v22
Now using node v22.11.0 (npm v10.9.0)
$ node test.js
Running on v22.11.0
node:internal/crypto/cipher:79
return method(data, format, type, passphrase, buffer, padding, oaepHash,
^
TypeError: RSA_PKCS1_PADDING is no longer supported for private decryption, this can be reverted with --security-revert=CVE-2024-PEND
at node:internal/crypto/cipher:79:12
at file:///.../test.js:11:23 {
code: 'ERR_INVALID_ARG_VALUE'
}
Node.js v22.11.0
$ node --security-revert=CVE-2024-PEND test.js
node: Error: Attempt to revert an unknown CVE [CVE-2024-PEND]
$ nvm use v23
Now using node v23.1.0 (npm v10.9.0)
$ node test.js
Running on v23.1.0
node:internal/crypto/cipher:79
return method(data, format, type, passphrase, buffer, padding, oaepHash,
^
TypeError: RSA_PKCS1_PADDING is no longer supported for private decryption, this can be reverted with --security-revert=CVE-2024-PEND
at node:internal/crypto/cipher:79:12
at file:///.../test.js:11:23 {
code: 'ERR_INVALID_ARG_VALUE'
}
Node.js v23.1.0
$ node --security-revert=CVE-2024-PEND test.js
node: Error: Attempt to revert an unknown CVE [CVE-2024-PEND]
aryehb
Metadata
Metadata
Assignees
Labels
cryptoIssues and PRs related to the crypto subsystem.Issues and PRs related to the crypto subsystem.securityIssues and PRs related to security.Issues and PRs related to security.