|
1 | 1 | # Security
|
2 | 2 |
|
3 |
| -If you find a security vulnerability in Node.js, please report it to |
4 |
| -[email protected]. Please withhold public disclosure until after the security |
5 |
| -team has addressed the vulnerability. |
| 3 | +## Reporting a Bug in Node.js |
6 | 4 |
|
7 |
| -The security team will acknowledge your email within 24 hours. You will receive |
8 |
| -a more detailed response within 48 hours. |
| 5 | +Report security bugs in Node.js via [HackerOne](https://hackerone.com/nodejs). |
9 | 6 |
|
10 |
| -There are no hard and fast rules to determine if a bug is worth reporting as a |
11 |
| -security issue. Here are some examples of past issues and what the Security |
12 |
| -Response Team thinks of them. When in doubt, please do send us a report |
13 |
| -nonetheless. |
| 7 | +Your report will be acknowledged within 24 hours, and you’ll receive a more |
| 8 | +detailed response to your report within 48 hours indicating the next steps in |
| 9 | +handling your submission. |
14 | 10 |
|
15 |
| -## Public disclosure preferred |
| 11 | +After the initial reply to your report, the security team will endeavor to keep |
| 12 | +you informed of the progress being made towards a fix and full announcement, |
| 13 | +and may ask for additional information or guidance surrounding the reported |
| 14 | +issue. These updates will be sent at least every five days; in practice, this |
| 15 | +is more likely to be every 24-48 hours. |
16 | 16 |
|
17 |
| -* [#14519](https://github.com/nodejs/node/issues/14519): _Internal domain |
18 |
| - function can be used to cause segfaults_. Requires the ability to execute |
19 |
| - arbitrary JavaScript code. That is already the highest level of privilege |
20 |
| - possible. |
| 17 | +### Node.js Bug Bounty Program |
21 | 18 |
|
22 |
| -## Private disclosure preferred |
| 19 | +The Node.js project engages in an official bug bounty program for security |
| 20 | +researchers and responsible public disclosures. The program is managed through |
| 21 | +the HackerOne platform. See <https://hackerone.com/nodejs> for further details. |
23 | 22 |
|
24 |
| -* [CVE-2016-7099](https://nodejs.org/en/blog/vulnerability/september-2016-security-releases/): |
25 |
| - _Fix invalid wildcard certificate validation check_. This was a high-severity |
26 |
| - defect. It caused Node.js TLS clients to accept invalid wildcard certificates. |
| 23 | +## Reporting a Bug in a third party module |
27 | 24 |
|
28 |
| -* [#5507](https://github.com/nodejs/node/pull/5507): _Fix a defect that makes |
29 |
| - the CacheBleed Attack possible_. Many, though not all, OpenSSL vulnerabilities |
30 |
| - in the TLS/SSL protocols also affect Node.js. |
| 25 | +Security bugs in third party modules should be reported to their respective |
| 26 | +maintainers and should also be coordinated through the Node Ecosystem Security |
| 27 | +Team via [HackerOne](https://hackerone.com/nodejs-ecosystem). |
31 | 28 |
|
32 |
| -* [CVE-2016-2216](https://nodejs.org/en/blog/vulnerability/february-2016-security-releases/): |
33 |
| - _Fix defects in HTTP header parsing for requests and responses that can allow |
34 |
| - response splitting_. This was a remotely-exploitable defect in the Node.js |
35 |
| - HTTP implementation. |
| 29 | +Details regarding this process can be found in the |
| 30 | +[Security Working Group repository](https://github.com/nodejs/security-wg/blob/master/processes/third_party_vuln_process.md). |
36 | 31 |
|
37 |
| -When in doubt, please do send us a report. |
| 32 | +Thank you for improving the security of Node.js and its ecosystem. Your efforts |
| 33 | +and responsible disclosure are greatly appreciated and will be acknowledged. |
| 34 | + |
| 35 | +## Disclosure Policy |
| 36 | + |
| 37 | +Here is the security disclosure policy for Node.js |
| 38 | + |
| 39 | +* The security report is received and is assigned a primary handler. This |
| 40 | + person will coordinate the fix and release process. The problem is confirmed |
| 41 | + and a list of all affected versions is determined. Code is audited to find |
| 42 | + any potential similar problems. Fixes are prepared for all releases which are |
| 43 | + still under maintenance. These fixes are not committed to the public |
| 44 | + repository but rather held locally pending the announcement. |
| 45 | + |
| 46 | +* A suggested embargo date for this vulnerability is chosen and a CVE (Common |
| 47 | + Vulnerabilities and Exposures (CVE®)) is requested for the vulnerability. |
| 48 | + |
| 49 | +* On the embargo date, the Node.js security mailing list is sent a copy of the |
| 50 | + announcement. The changes are pushed to the public repository and new builds |
| 51 | + are deployed to nodejs.org. Within 6 hours of the mailing list being |
| 52 | + notified, a copy of the advisory will be published on the Node.js blog. |
| 53 | + |
| 54 | +* Typically the embargo date will be set 72 hours from the time the CVE is |
| 55 | + issued. However, this may vary depending on the severity of the bug or |
| 56 | + difficulty in applying a fix. |
| 57 | + |
| 58 | +* This process can take some time, especially when coordination is required |
| 59 | + with maintainers of other projects. Every effort will be made to handle the |
| 60 | + bug in as timely a manner as possible; however, it’s important that we follow |
| 61 | + the release process above to ensure that the disclosure is handled in a |
| 62 | + consistent manner. |
| 63 | + |
| 64 | +## Receiving Security Updates |
| 65 | + |
| 66 | +Security notifications will be distributed via the following methods. |
| 67 | + |
| 68 | +* <https://groups.google.com/group/nodejs-sec> |
| 69 | +* <https://nodejs.org/en/blog/> |
| 70 | + |
| 71 | +## Comments on this Policy |
| 72 | + |
| 73 | +If you have suggestions on how this process could be improved please submit a |
| 74 | +[pull request](https://github.com/nodejs/nodejs.org) or |
| 75 | +[file an issue](https://github.com/nodejs/security-wg/issues/new) to discuss. |
0 commit comments