Discussion: OpenJS CNA
Adam ‘rudd’ Ruddermann�22 April 2024
Context: DESTF Workstream 2�Coordinated Vulnerability Disclosure (CVD)
2
CVD Program Guidance�for OpenJS Foundation Projects
CVD Runbooks and Templates�for OpenJS Foundation Projects
CVD Compliance Standards�for OpenJS Foundation Projects
(DRAFT) Develop resources and provide direct support to OpenJS Foundation Projects to enable adoption of and consistent adherence to low friction, best practices-based processes for the handling and disclosure of security vulnerabilities.
What is a CNA?
CVE Numbering Authority
What is a CVE?
Common Vulnerabilities and Exposures
Bigger Picture/Fine Print�The CVE Program was created in 1999 and is now funded and managed by the US Department of Homeland Security’s (DHS) Cybersecurity and Infrastructure Security Agency (CISA) via the Homeland Security Systems Engineering and Development Institute (HSSEDI), a US federally funded research and development center (FFRDC). HSSEDI is operated by The MITRE Corporation, a 501(c)3 non-profit. Since 2011, the UN International Telecommunication Union has recommended the use of CVEs share security vulnerability information and coordinate remediation.��The NVD Program, which (not without controversy) analyzes CVEs to provide an independently assessed CVSS Score and other data for CVEs, is also funded by CISA but created and administered by the US NIST Information Technology Lab.
A CVE ID is a unique record of a vulnerability in software that requires coordination between or notification of third parties to remediate.
CNAs issue CVEs within their scope. This scope is delegated from the Top Level Root (TL-Root) / CNA of Last Resort (CNA-LR) operated by MITRE.
Examples of Open Source Foundation CNAs
Examples of Open Source Project CNAs
How does it work?
CNAs provide MITRE with an estimate of how many CVEs they think they’ll issue in that CALENDAR YEAR.
MITRE reserves a block of that year’s CVE IDs and sends the list to the CNA
2
MITRE returns a block of CVE IDs
These CVE IDs are initially marked as *RESERVED* Examples: CVE-2024-29203 / CVE List Search
3
CNAs issue CVE IDs from the list
CNAs choose a CVE ID from their list and publish it by populating the ID’s Record.
Example Scenarios
7
But first: some definitions
Finder
Project
Root CNA
Example: Various Humans
Definitions
Finder
Project
Root CNA
Definitions
Finder
Project
Root CNA
https://www.cve.org/PartnerInformation/ListofPartners
Search “root” for the list of all 7 Roots
Scenario: A valid vulnerability in an actively maintained At Large/Impact Project
1) Finders may request a CVE directly from the MITRE CNA-LR using MITRE's CVE Form:
2) Projects may request a CVE:�
1) Finders may only request a CVE directly from Project maintainers during the disclosure process.��2) Projects may issue a CVE from their OpenJS pre-assigned block or request a CVE:�
11
Without a CNA (current state)
With a CNA
Scenario: A valid bug an actively maintained At Large/Impact Project reasonably does not consider a vulnerability
1) Finders may request a CVE directly from the MITRE CNA-LR using MITRE's CVE Form:
2) Projects may file a dispute to reject the CVE with the MITRE CNA-LR using MITRE's CVE Form.�
3) MITRE will determine if there is *any* theoretical security impact and likely update the CVE record to:
�NOTE: MITRE will NOT reject the CVE unless there is demonstrable proof that it is a true false positive.�
1) Finders may only request a CVE directly from Project maintainers during the disclosure process.��2) Projects may reject the request based on its CVD Policy.�
3) Finders may appeal the Project’s rejection directly with the OpenJS CNA POC(s), who must:
4) Finders may appeal this rejection with OpenJS’ Root CNA (most likely the Red Hat Root CNA).
5) Red Hat must evaluate the appeal using its published process and MITRE's CNA Rules and either:�
12
Without a CNA (current state)
With a CNA
Scenario: A valid vulnerability in a deprecated version of an actively maintained At Large/Impact Project
1) Finders may request a CVE directly from the MITRE CNA-LR using MITRE's CVE Form:
2) Projects may request a CVE:�
1) Finders may only request a CVE directly from Project maintainers during the disclosure process.��2) Projects may issue a CVE from their OpenJS pre-assigned block or request a CVE:�
13
Without a CNA (current state)
With a CNA
Scenario: A valid vulnerability in an Emeritus Project
1) Finders may request a CVE directly from the MITRE CNA-LR using MITRE's CVE Form:
2) Project may request a CVE:�
1) Finders may only request a CVE:
2) If responsive, Projects may issue a CVE from their OpenJS pre-assigned block or request a CVE:�
3) If Projects aren’t responsive, the OpenJS CNA POC(s) must:�
14
Without a CNA / OPTION 1: Emeritus Projects Removed from CNA Scope
OPTION 2: Emeritus Projects Kept in CNA Scope
Scenario: A valid vulnerability in an Incubating Project
1) Finders may request a CVE directly from the MITRE CNA-LR using MITRE's CVE Form:
2) Projects may file a dispute to reject the CVE with the MITRE CNA-LR using MITRE's CVE Form.�
3) MITRE will determine if there is *any* theoretical security impact and likely update the CVE record to:
�NOTE: MITRE will NOT reject the CVE unless there is demonstrable proof that it is a true false positive.�
1) Finders may only request a CVE directly from Project maintainers during the disclosure process.��2) Projects may issue a CVE from their OpenJS pre-assigned block or request a CVE:
15
Without a CNA / Option 1: Incubating Projects Never in OpenJS CNA Scope
Option 2: Incubating Projects added to CNA Scope individually upon meeting specified minimum process criteria
What would OpenJS need to become a CNA?
16
What would OpenJS need to become a CNA?
Example: The Python Software Foundation CNA’s CVE List and machine readable Advisory Database in OSV format
What would OpenJS need to become a CNA?
Example: Google’s CNA references individual programs’ respective rules/disclosure policies and vulnerability reporting workflows
What would OpenJS need to become a CNA?
What would OpenJS need to become a CNA?
How would it work for OpenJS Projects?
Option 2: Break up the OpenJS CVE Block and distribute sub-blocks for Projects to manage locally
Option 1: Designated maintainers have access to OpenJS CVE Block and choose IDs for themselves
Option 3: Security Engineering Champion directly supports CVE issuance as needed
In these Options, to populate/publish the CVE Record with MITRE, Projects would need one of the following:
In this Option, SecEng Champ and one or more backups would have credentials to populate/publish to OpenJS CVEs in coordination with the Project.��This Option can also be used in hybrid with all other Options. It may also make sense to choose the best Option for individual Projects.
a) access to an OpenJS-wide shared credential
b) access to a per-Project shared credential
c) credentials issued to specific maintainers
Option 4: Projects can continue requesting CVE IDs from Github’s CNA by using Github’s Advisory Publication process.
Option 5: If on HackerOne, Projects can continue requesting CVE IDs from H1's CNA by using H1’s CVE Request process (NOTE: this is Node.js’ current approach)
Discussion Summary
22
Pros
Cons
Discussion: OpenJS CNA
Adam ‘rudd’ Ruddermann�11 March 2024