Is it Node policy that backwards incompatible security fixes are released in patch releases? #4689
-
It looks like there were a number of fixes in Node 20.11.1 that were security fixes, where the implementation just disabled some code. For example, this commit, nodejs/node@7079c062bb, "disable PKCS#1 padding for privateDecrypt", broke some widely used code from OpenPGP (see openpgpjs/openpgpjs#1727). I completely understand why this change was made, but why was it done in a patch release? This change is by definition not backwards compatible, so why wasn't it held off to a major release? Is there a general policy that backwards-incompatible security fixes are OK for patch releases? The Marvin attack described in the CVE, CVE-2023-46809, that this change is meant to fix was very low risk to us based on our usage of OpenPGP. Again, I of course understand that this may be critical risk to other users, but just generally want to understand why this change was made in a patch release. |
Beta Was this translation helpful? Give feedback.
Replies: 0 comments 7 replies
-
The policy allows backwards incompatible changes to land in existing release lines, but they should have caused the version to increment to the next semver-minor:
Perhaps https://nodejs.org/en/blog/vulnerability/february-2024-security-releases/ could have explicitly mentioned the |
Beta Was this translation helpful? Give feedback.
-
Following up on this, again thanks for your earlier response @richardlau. Upon further testing, just want to point out the the change in the recent security patch releases is going to break a ton of code everywhere. I updated the issue I filed on OpenPGP, openpgpjs/openpgpjs#1727, but this breaks any usage of OpenPGP that uses RSA keys. The "fix" in the patch release was simply to disable PKCS#1 in Basically, I understand the argument that RSA PKCS#1 has some fundamental issues, but I question if this is the right path forward. |
Beta Was this translation helpful? Give feedback.
-
The --security-revert=CVE-2023-46809 revert flag is in place to allow reverting to the old behavior. Does this not work in the use cases you are running into? The other thing in play is that if a version of OpenSSL is used which has addressed the issue, Node.js will detect that and not throw an error. |
Beta Was this translation helpful? Give feedback.
The policy allows backwards incompatible changes to land in existing release lines, but they should have caused the version to increment to the next semver-minor:
https://github.com/nodejs/Release/blob/42a1d7c5f3bce8d2efc8d96c7aeb147a173ed396/README.md?plain=1#L36-L38
Perhaps https://nodejs.org/en/blog/vulnerability/february-2024-security-releases/ could have explicitly mentioned the
--security-revert=CVE-2023-46809
revert flag.