Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Security releases and coordinated release #1047

Closed
AdamMajer opened this issue Jun 28, 2021 · 15 comments
Closed

Security releases and coordinated release #1047

AdamMajer opened this issue Jun 28, 2021 · 15 comments

Comments

@AdamMajer
Copy link

The current security practice for nodejs project is to notify everyone of upcoming security release approximately a week in advance and then do a release centered around these security issues only. The security issues could be Node specific or in the currently bundled 3rd party dependencies.

Security notifications are limited to members of https://groups.google.com/g/nodejs-sec

There are two-fold issues here when it comes to Linux distros (or BSD),

  1. most distributions are subscribed to issues via oss-security mailing list - https://oss-security.openwall.org/wiki/mailing-lists/oss-security . CC'ing this mailing list would raise awareness of security issues.
  2. coordinated release dates (CRD) for embargoed bugs via https://oss-security.openwall.org/wiki/mailing-lists/distros

Regarding the second point, and I will use OpenSSL as an example, normally 1 week prior to a public release of a security fix, a member of openssl project would mail the distros mailing list a description of the bug along with pending patches. This allowed distributions to analyze these issues and backport fixes while keeping the issue non-public. Then when the issue is made public (generally by same person that sent the embargoed report in the first place), distributions are ready with the fixes, or at least they've had some time to analyze the impact. There is a header-only archive where you can see this followed few days later by public announcement,

https://www.openwall.com/lists/linux-distros/2020/12/01/8
https://www.openssl.org/news/secadv/20191206.txt

The question that remains is Why? The main answer is that the lifecycle of Node releases in some distributions is longer than the LTS lifecycle in the nodejs project. At SUSE we still have nodejs8 maintained for some customers. Furthermore, the release process needs to account for additional testing by distributions which also requires time. A few days advance warning would prevent this race between the issue being public and being fixable by all the integrators. This was especially important in more visible linux kernel or openssl issues in the recent past.

Finally, this is not about the 3rd party bugs, like bugs in V8 or OpenSSL or ICU (since those issues are public before being fixed in Node), but reserved to the core node code.

So, my questions here are,

  1. would NodeJS project consider using CRD via the already curated security-centered web-of-trust that is the distros mailing list?
  2. could oss-security ML be cc'ed when there is a security release from node?
@Trott
Copy link
Member

Trott commented Jun 28, 2021

@nodejs/security @nodejs/releasers

@MylesBorins
Copy link
Contributor

I think this should likely be transferred to https://github.com/nodejs/release for discussion by the release wg

@richardlau
Copy link
Member

I think this should likely be transferred to https://github.com/nodejs/release for discussion by the release wg

I dunno, it feels like this is more security policy rather than a release policy (that's not to say we can't also discuss this in the Release WG).

@targos
Copy link
Member

targos commented Jun 28, 2021

I vaguely remember an existing related discussion. It was more generally about giving early access to security patches to some trusted entities.

@Trott
Copy link
Member

Trott commented Jun 28, 2021

@nodejs/distros

@Trott
Copy link
Member

Trott commented Jun 28, 2021

I vaguely remember an existing related discussion. It was more generally about giving early access to security patches to some trusted entities.

Same and I'm frustrated I can't find it now.

@mhdawson
Copy link
Member

mhdawson commented Jun 28, 2021

  • With my TSC "hat" on:

    • There has been discussion of special notice, CRDs etc. in the past several times over the years. From what I've seen
      the project has always been open to these, but what has been missing are people who are willing to champion them
      and help do extra work/co-ordination etc.
    • There are some harder questions in terms of how you define the line of who can/cannot get special access that will
      take effort to work through and then there is likely going to be additional ongoing work to support additional
      process.
  • Putting on my Red Hat "hat".

    • Our RH collaborators work closely with the our RHEL team that builds Node.js and we've explored if
      championing this on our own would make sense. The answer has been that it would be more of a "nice-to-have" and
      have no current plans to do so by ourselves.
  • Looking at the specific requests:

    • would NodeJS project consider using CRD via the already curated security-centered web-of-trust that
      is the distros mailing list?
    • could oss-security ML be cc'ed when there is a security release from node?

The second one is a small extension on what we do, and is reasonable to be PR'd into https://github.com/nodejs/node/blob/master/doc/guides/security-release-process.md (@danbev please sanity check me on this one as somebody else who has stewarded security releases).

The first one I think would require people from the distro's most interested getting more involved in the Node.js project
and then helping to champion and support the execution of the required co-ordination, planning etc. It's been proposed/discussed in the past but without somebody willing to champion and take on the work the discussions have stalled out.

@danbev
Copy link
Contributor

danbev commented Jun 29, 2021

The second one is a small extension on what we do, and is reasonable to be PR'd into https://github.com/nodejs/node/blob/master/doc/guides/security-release-process.md (@danbev please sanity check me on this one as somebody else who has stewarded security releases).

Yes, this sounds like something we could do 👍

danbev added a commit to danbev/node that referenced this issue Jun 29, 2021
This commit adds step to CC oss-security@lists.openwall.com as part of
the security release process.

Refs: nodejs/TSC#1047
@AdamMajer
Copy link
Author

The first one I think would require people from the distro's most interested getting more involved in the Node.js project
and then helping to champion and support the execution of the required co-ordination, planning etc. It's been proposed/discussed in the past but without somebody willing to champion and take on the work the discussions have stalled out.

Indeed, this would be an unattainable task for a single project hence the mention of the distros mailing list. It's already self-organized.

https://github.com/nodejs/node/blob/master/doc/guides/security-release-process.md

In the process that already exists, during the per-annoucement the patches already exist and the CVEs are assigned. The planned release date is already, well, planned and within the maximum embargoed timeframe. My request here is to forward the patches for medium and higher priority CVEs to the distros ML at the time of the pre-annoucement. Further co-ordination is not really required on the part of the project.

Regarding additional work, I understand that every addition to the security release process is like adding straw camel's back. If desired, I could help in coordinating this with distros in the future, though I'm not involved in the day to day activity of either nodejs nor am I a member of distros (we do have people at SUSE that are members).

In many ways this is a wishlist issue. All security issues in Node have been very well handled and are not difficult to backport thanks to their unit tests that accompany them.

@mcollina
Copy link
Member

The technical reason why we cannot do this at this time is that the patches are not final when we announce the security release. We cannot run CI for the security patches until we lock down CI for the security release. Adding the requirement to announce the patches one week before the release would lock our CI for 2 weeks instead of one.

Ideally this should not be needed and we would have the means to run CI for the security fixes in a secure way. However this is not possible right now and I do not think we have the bandwidth or resources to do it.

@mhdawson
Copy link
Member

Since @AdamMajer has said using CRD is a "wishlist" issue, my take would be that we add the extra CC to our process and leave it at that until there is a strong need/champions to do more. @danbev do you want to PR the change to the security process or should I do that?

@danbev
Copy link
Contributor

danbev commented Jun 30, 2021

@danbev do you want to PR the change to the security process or should I do that?

I created nodejs/node#39191 for this yesterday 👍

@AdamMajer
Copy link
Author

The technical reason why we cannot do this at this time is that the patches are not final when we announce the security release. We cannot run CI for the security patches until we lock down CI for the security release.

Thank you for the explanation. Since there are still technical issues here, the issue with the CRD should probably be punted into the future for now.

@mhdawson
Copy link
Member

@danbev thanks!

@AdamMajer thanks for the follow up. Since @danbev has opened the PR to add the CC is there anything else we should discuss before closing out this issue?

danbev added a commit to nodejs/node that referenced this issue Jul 1, 2021
This commit adds step to CC oss-security@lists.openwall.com as part of
the security release process.

PR-URL: #39191
Refs: nodejs/TSC#1047
Reviewed-By: Beth Griggs <bgriggs@redhat.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
@AdamMajer
Copy link
Author

@mhdawson I believe everything has been discussed now.

targos pushed a commit to nodejs/node that referenced this issue Jul 11, 2021
This commit adds step to CC oss-security@lists.openwall.com as part of
the security release process.

PR-URL: #39191
Refs: nodejs/TSC#1047
Reviewed-By: Beth Griggs <bgriggs@redhat.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
targos pushed a commit to nodejs/node that referenced this issue Sep 4, 2021
This commit adds step to CC oss-security@lists.openwall.com as part of
the security release process.

PR-URL: #39191
Refs: nodejs/TSC#1047
Reviewed-By: Beth Griggs <bgriggs@redhat.com>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michael Dawson <midawson@redhat.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

9 participants