The security release process covers the steps required to plan/implement a security release. This document is copied into the description of the Next Security Release and used to track progress on the release. It contains TEXT LIKE THIS which will be replaced during the release process with the information described.
For each security release, a security steward will take ownership for coordinating the steps outlined in this process. Security stewards are nominated through an issue in the TSC repository and approved through the regular TSC consensus process. Once approved, they are given access to all of the resources needed to carry out the steps listed in the process as outlined in security steward on/off boarding.
The current security stewards are documented in the main Node.js README.md.
Company | Person | Release Date |
---|---|---|
NearForm | Matteo | 2021-Oct-12 |
Datadog | Bryan | 2022-Jan-10 |
RH and IBM | Joe | 2022-Mar-18 |
NearForm | Matteo / Rafael | 2022-Jul-07 |
Datadog | Vladimir | 2022-Sep-23 |
NodeSource | Juan | 2022-Nov-04 |
RH and IBM | Michael | 2023-Feb-16 |
NearForm | Rafael | 2023-Jun-20 |
NearForm | Rafael | 2023-Aug-09 |
NearForm | Rafael | 2023-Oct-13 |
NodeSource | Rafael | 2024-Feb-14 |
NodeSource | Rafael | 2024-Apr-03 |
NodeSource | Rafael | 2024-Apr-10 |
NodeSource | Rafael | 2024-Jul-08 |
NodeSource | Rafael | 2025-Jan-21 |
NodeSource | Rafael | 2025-May-14 |
Datadog | Bryan | |
IBM | Joe | |
Platformatic | Matteo | |
NodeSource | Juan | |
Red Hat | Michael |
1. Generating Next Security Release PR
git node security --start
inside security-release repository.vulnerabilities.json
file with HackerOne
reports chosen to be released in the security-release/next-security-release
folder.2. Review of Reports:
git node security --add-report=report_id
git node security --remove-report=report_id
3. Assigning Severity and Writing Team Summary:
vulnerabilities.json
.git node security --sync
to update severity and summary in
vulnerabilities.json
.4. Requesting CVEs:
git node security --request-cve
.5. Choosing or Updating Release Date:
git node security --update-date=YYYY/MM/DD
to choose or update the
release date.6. Get release volunteers:
7. Preparing Pre and Post Release Blog Posts:
git node security --pre-release
.git node security --post-release
.1. Publish Pre-Release Blog Post:
nodejs/nodejs.org
repository.2. Send Pre-Release Announcement:
Notify the community about the upcoming security release:
git node security --notify-pre-release
Except for those noted in the list below, this will create automatically the
issues and emails needed for the notifications.Security release pre-alert:
We will release new versions of <add versions> release lines on or shortly
after Day Month Date, Year in order to address:
* # high severity issues
* # moderate severity issues
https://nodejs.org/en/blog/vulnerability/month-year-security-releases/
We specifically ask that collaborators other than the releasers and security steward working on the security release do not tweet or publicize the release until the tweet from Node.js goes out. We have often seen tweets sent out before the release is complete, which may confuse those waiting for the release and take away from the work the releasers have put into shipping the release.
If the security release will only contain an OpenSSL update, consider adding the following to the pre-release announcement:
Since this security release will only include updates for OpenSSL, if you're using
a Node.js version which is part of a distribution that uses a system
installed OpenSSL, this Node.js security update may not concern you, instead,
you may need to update your system OpenSSL libraries. Please check the
security announcements for more information.
1. Lock down the CI:
@nodejs/jenkins-admins
.2. Release:
3. Unlock the CI:
@nodejs/jenkins-admins
.4. Publish Post-Release Blog Post:
nodejs/nodejs.org
repository.5. Notify the community:
#nodejs-social
git node security --cleanup
. This command will:Security Release
.Breaking changes are allowed in existing LTS lines in order to fix important security vulnerabilities. When breaking changes are made it is important to provide a command line option that restores the original behaviour.
The existing Node.js codebase supports the command line
option --security-revert
and has the boilerplate to make additions
for a specific CVE easy.
To add an option to revert for a CVE, for example CVE-2024-1234
simply add this line to
node_revert.h
XX(CVE_2024_1234, "CVE-2024-1234", "Description of cve")
This will allow an easy check of whether a reversion has been requested or not.
In JavaScript code you can check:
if (process.REVERT_CVE_2024_1234);
In C/C++ code you can check:
IsReverted(SECURITY_REVERT_CVE_2024_1234)
From the command line a user can request the revert by using
the --security-revert
option as follows:
node --security-revert=CVE-2024-1234
If there are multiple security reverts then multiple instances of --security-revert can be used. For example:
node --security-revert=CVE-2024-1234 --security-revert=CVE-2024-XXXX
When a CVE is reported as fixed in a security release and it turns out that the
fix was incomplete, a new CVE should be used to cover subsequent fix. This
is best practice and avoids confusion that might occur if people believe
they have patched the original CVE by updating their Node.js version and
then we later change the fixed in
value for the CVE.
The steps to correct CVE information are:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。