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

Process to handle security reports #56

Open
wants to merge 20 commits into
base: main
Choose a base branch
from

Conversation

UlisesGascon
Copy link
Member

I am working on this process for the @expressjs/security-triage team.

I would love to get your feedback (@expressjs/express-tc @expressjs/security-wg @expressjs/security-triage ) on the current state before I begin defining this process in detail, as the changes will become more complex. Could you please share your first impressions of this process?

Note: This flow also covers unusual scenarios, such as when someone submits a security report as an issue or directly in a PR as a patch. I wanted to align this process with what Node.js has in place today. Reference

@UlisesGascon UlisesGascon self-assigned this Mar 5, 2025
@bjohansebas
Copy link
Member

In general, i'm okay

Copy link
Member

@wesleytodd wesleytodd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! I know you said "early", so I look forward to seeing what else we add. I know for myself it would be awesome to have some more of these steps have more details and links, similar to a runbook format.

Aside: the mermaid rendering is awesome. I need to use this more often.

@UlisesGascon
Copy link
Member Author

Looks great! I know you said "early", so I look forward to seeing what else we add. I know for myself it would be awesome to have some more of these steps have more details and links, similar to a runbook format.

100% if this mermaid flow seems "good" I will start working on the runbook part (I just wanted to avoid many logic/text changes combined). Sounds good if we include the runbook in this document and PR? Or do we prefer to do it in a separate one to simplify the review process?

@UlisesGascon
Copy link
Member Author

Ok, so based on the positive early feedback on the process I included the runbook too 🥳

@UlisesGascon UlisesGascon marked this pull request as ready for review March 7, 2025 14:40
@UlisesGascon
Copy link
Member Author

I solved the format issues in 054ab8a

Copy link
Member

@wesleytodd wesleytodd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had enough comments I should have started a review. I am going to keep my approval, but I think we might want to address at least the one before we land.

F --> G[Handle Related PRs & Issues]
G --> H[Request GitHub to Remove Public PR/Issues]
H --> I[Create Public Placeholder Issue]
I --> J[Acknowledge within 5 days to the Reporter]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, re-reading again and I see it is here: https://github.com/expressjs/security-wg/pull/56/files#diff-e6c76e85b62187db4232abf6ad2299fea45f03b96798e0a40b2510cf8854fbbdR80

That said, I would not be surprised if the "steps" get used more like a "checklist" for us, so I still think it would be good to include in the steps.

- Acknowledge receipt of security reports within the required timeframe.
- Assign an Analyst to assess and validate the report.
- Ensure communication with the reporter throughout the process.
- Coordinate the remediation process if a vulnerability is confirmed.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You mention assigning an Analyst, are we specifically not "assigning a remediation developer" here for a reason?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, of all the roles need to be assigned (though the act of "assigning" in reality doesn't need to be so formal)

each issue would need an analyst at minimum, and if it was determined to be a vuln, then remediation developer(s) and reviewer(s) will be needed


2.2 At this stage we are capable of determining the severity of the report based on the information provided and also if the report is still relevant. In case that the team has considered the report to be irrelevant or not valid, the Security Report Coordinator (SRC) will need to close the issue and inform the reporter that the report has been dismissed, ideally we can provide a reason for dismissal to prevent the report from being resubmitted within the project(s) in the future.

2.3 If the report is considered relevant and valid, the Security Report Coordinator (SRC) will create an advisory and request a CVE number. The Security Report Coordinator (SRC) will also include the remediation developer(s), analyst(s) and potentially the reporter in the advisory, so they can start to work on private fork to fix the security issue (example: [GHSA-qw6h-vgh9-j6wx](https://github.com/expressjs/express/security/advisories/GHSA-qw6h-vgh9-j6wx)).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How to do this stuff in detail is exactly what I hope we can get training for the team on via the STF funding. @ctcpip has been incredibly helpful with this but having a more cross training and depth here will help keep it sustainable. I wonder if the GH training also intends to cover this, @sheplu have you gotten an update on that?

```

## Roles & Responsibilities

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

suggest adding a role for Finder, which is often, but not always, the same person as the reporter

### Security Report Coordinator (SRC)


This person acts the focal point for an specific security report and ensures the report follows all responsible disclosure guidelines, also coordinates the remediation process if a vulnerability is confirmed. The SRC ensures that the security report follows the process and coordinates necessary actions, but does not perform analysis, remediation, or patching themselves.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

coordinators are often involved in analysis, remediation, and review. I don't see why we would need to codify a restriction on those activities

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The idea was to clarify that the coordinator is not necessarily responsible for performing the patch or conducting the analysis. However, this does not mean the coordinator can't also be the remediation developer or the analyst. In other words, one person can hold multiple roles 🤔

- Assess the security report and determine its severity (assist in CVSS).
- Validate the reported vulnerability against best practices.
- Identify potential mitigation strategies.
- Prepare a report for the Security Report Coordinator.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is this report?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well maybe report is not the best world, the idea is to ensure that is "sharing the findings" with the coordinator 🤔


### Step 1: Assign Security Report Coordinator (SRC) and consolidate the report

1.1 One person from the Security Triage Team will volunteer and self-assign to oversee the case. It is expected that the person will remain assigned until the end of the process, so they effectively take the rol of [the Security Report Coordinator (SRC)](#security-report-coordinator-src).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This need not be limited to one person, but I'm fine with leaving this doc referring to that, just for simplicity. In practice, having two coordinators is acceptable, and often better than just one. Also, someone needs to be reviewing the actual advisory content before it goes out, and this role is best addressed by a second coordinator.


* Move the issue to the private repository called [expressjs/security-triage](https://github.com/expressjs/security-triage).
* For any related pull requests, create an associated issue in [expressjs/security-triage](https://github.com/expressjs/security-triage) repository. Add a copy of the patch for the pull request to the issue. Add screenshots of discussion from the pull request to the issue.
* [Open a ticket with GitHub](https://support.github.com/contact) to delete the pull request using Expressjs (team) as the account organization.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should add an item here to force-push overwriting the PR code. generally people leave the checkbox "allow edits by maintainers" checked by default, so this will usually be doable

in a PR comment, we can also note to the PR author that we did this and why

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

Successfully merging this pull request may close these issues.

6 participants