Skip to content

Commit 5d99490

Browse files
Merge branch 'v1.5-dev' into licenses-streamlined
2 parents 4c85896 + b83a2f1 commit 5d99490

15 files changed

+612
-141
lines changed

.github/workflows/js.yml

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# docs: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions
2+
3+
name: JS CI
4+
5+
on: [push, pull_request, workflow_dispatch]
6+
7+
concurrency:
8+
group: ${{ github.workflow }}-${{ github.ref }}
9+
cancel-in-progress: true
10+
11+
12+
defaults:
13+
run:
14+
working-directory: tools/src/test/js
15+
16+
jobs:
17+
test:
18+
timeout-minutes: 30
19+
runs-on: ubuntu-latest
20+
steps:
21+
- name: Checkout
22+
# see https://github.com/actions/checkout
23+
uses: actions/checkout@v3
24+
- name: Setup Node.js
25+
# see https://github.com/actions/setup-node
26+
uses: actions/setup-node@v3
27+
with:
28+
node-version: '20.x'
29+
- name: Install Depenencies
30+
run: npm install
31+
- name: Run test
32+
run: npm test

schema/bom-1.5.proto

Lines changed: 66 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ message Bom {
2929
repeated ExternalReference external_references = 7;
3030
// Provides the ability to document dependency relationships.
3131
repeated Dependency dependencies = 8;
32-
// Provides the ability to document aggregate completeness
32+
// Compositions describe constituent parts (including components, services, and dependency relationships) and their completeness. The completeness of vulnerabilities expressed in a BOM may also be described.
3333
repeated Composition compositions = 9;
3434
// Vulnerabilities identified in components or services.
3535
repeated Vulnerability vulnerabilities = 10;
@@ -219,32 +219,36 @@ enum ExternalReferenceType {
219219
EXTERNAL_REFERENCE_TYPE_ATTESTATION = 16;
220220
// An enumeration of identified weaknesses, threats, and countermeasures, dataflow diagram (DFD), attack tree, and other supporting documentation in human-readable or machine-readable format
221221
EXTERNAL_REFERENCE_TYPE_THREAT_MODEL = 17;
222+
// The defined assumptions, goals, and capabilities of an adversary.
223+
EXTERNAL_REFERENCE_TYPE_ADVERSARY_MODEL = 18;
224+
// Identifies and analyzes the potential of future events that may negatively impact individuals, assets, and/or the environment. Risk assessments may also include judgments on the tolerability of each risk.
225+
EXTERNAL_REFERENCE_TYPE_RISK_ASSESSMENT = 19;
222226
// The location where a component was published to. This is often the same as "distribution" but may also include specialized publishing processes that act as an intermediary
223-
EXTERNAL_REFERENCE_TYPE_DISTRIBUTION_INTAKE = 18;
227+
EXTERNAL_REFERENCE_TYPE_DISTRIBUTION_INTAKE = 20;
224228
// A Vulnerability Disclosure Report (VDR) which asserts the known and previously unknown vulnerabilities that affect a component, service, or product including the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on a component, service, or product
225-
EXTERNAL_REFERENCE_TYPE_VULNERABILITY_ASSERTION = 19;
229+
EXTERNAL_REFERENCE_TYPE_VULNERABILITY_ASSERTION = 21;
226230
// A Vulnerability Exploitability eXchange (VEX) which asserts the known vulnerabilities that do not affect a product, product family, or organization, and optionally the ones that do. The VEX should include the analysis and findings describing the impact (or lack of impact) that the reported vulnerability has on the product, product family, or organization
227-
EXTERNAL_REFERENCE_TYPE_EXPLOITABILITY_STATEMENT = 20;
231+
EXTERNAL_REFERENCE_TYPE_EXPLOITABILITY_STATEMENT = 22;
228232
// Results from an authorized simulated cyberattack on a component or service, otherwise known as a penetration test
229-
EXTERNAL_REFERENCE_TYPE_PENTEST_REPORT = 21;
233+
EXTERNAL_REFERENCE_TYPE_PENTEST_REPORT = 23;
230234
// SARIF or proprietary machine or human-readable report for which static analysis has identified code quality, security, and other potential issues with the source code
231-
EXTERNAL_REFERENCE_TYPE_STATIC_ANALYSIS_REPORT = 22;
235+
EXTERNAL_REFERENCE_TYPE_STATIC_ANALYSIS_REPORT = 24;
232236
// Dynamic analysis report that has identified issues such as vulnerabilities and misconfigurations
233-
EXTERNAL_REFERENCE_TYPE_DYNAMIC_ANALYSIS_REPORT = 23;
237+
EXTERNAL_REFERENCE_TYPE_DYNAMIC_ANALYSIS_REPORT = 25;
234238
// Report generated by analyzing the call stack of a running application
235-
EXTERNAL_REFERENCE_TYPE_RUNTIME_ANALYSIS_REPORT = 24;
239+
EXTERNAL_REFERENCE_TYPE_RUNTIME_ANALYSIS_REPORT = 26;
236240
// Report generated by Software Composition Analysis (SCA), container analysis, or other forms of component analysis
237-
EXTERNAL_REFERENCE_TYPE_COMPONENT_ANALYSIS_REPORT = 25;
241+
EXTERNAL_REFERENCE_TYPE_COMPONENT_ANALYSIS_REPORT = 27;
238242
// Report containing a formal assessment of an organization, business unit, or team against a maturity model
239-
EXTERNAL_REFERENCE_TYPE_MATURITY_REPORT = 26;
243+
EXTERNAL_REFERENCE_TYPE_MATURITY_REPORT = 28;
240244
// Industry, regulatory, or other certification from an accredited (if applicable) certification body
241-
EXTERNAL_REFERENCE_TYPE_CERTIFICATION_REPORT = 27;
245+
EXTERNAL_REFERENCE_TYPE_CERTIFICATION_REPORT = 29;
242246
// Report or system in which quality metrics can be obtained
243-
EXTERNAL_REFERENCE_TYPE_QUALITY_METRICS = 28;
247+
EXTERNAL_REFERENCE_TYPE_QUALITY_METRICS = 30;
244248
// Code or configuration that defines and provisions virtualized infrastructure, commonly referred to as Infrastructure as Code (IaC)
245-
EXTERNAL_REFERENCE_TYPE_CODIFIED_INFRASTRUCTURE = 29;
249+
EXTERNAL_REFERENCE_TYPE_CODIFIED_INFRASTRUCTURE = 31;
246250
// A model card describes the intended uses of a machine learning model, potential limitations, biases, ethical considerations, training parameters, datasets used to train the model, performance metrics, and other relevant data useful for ML transparency.
247-
EXTERNAL_REFERENCE_TYPE_MODEL_CARD = 30;
251+
EXTERNAL_REFERENCE_TYPE_MODEL_CARD = 32;
248252
}
249253

250254
enum HashAlg {
@@ -416,6 +420,36 @@ message Metadata {
416420
optional LicenseChoice licenses = 7;
417421
// Specifies optional, custom, properties
418422
repeated Property properties = 8;
423+
// The product lifecycle(s) that this BOM represents.
424+
repeated Lifecycles lifecycles = 9;
425+
}
426+
427+
message Lifecycles {
428+
oneof choice {
429+
// A pre-defined phase in the product lifecycle.
430+
LifecyclePhase phase = 1;
431+
// The name of the lifecycle phase
432+
string name = 2;
433+
}
434+
// The description of the lifecycle phase
435+
optional string description = 2;
436+
}
437+
438+
enum LifecyclePhase {
439+
// BOM produced early in the development lifecycle containing inventory of components and services that are proposed or planned to be used. The inventory may need to be procured, retrieved, or resourced prior to use.
440+
LIFECYCLE_PHASE_DESIGN = 0;
441+
// BOM consisting of information obtained prior to a build process and may contain source files and development artifacts and manifests. The inventory may need to be resolved and retrieved prior to use.
442+
LIFECYCLE_PHASE_PRE_BUILD = 1;
443+
// BOM consisting of information obtained during a build process where component inventory is available for use. The precise versions of resolved components are usually available at this time as well as the provenance of where the components were retrieved from.
444+
LIFECYCLE_PHASE_BUILD = 2;
445+
// BOM consisting of information obtained after a build process has completed and the resulting components(s) are available for further analysis. Built components may exist as the result of a CI/CD process, may have been installed or deployed to a system or device, and may need to be retrieved or extracted from the system or device.
446+
LIFECYCLE_PHASE_POST_BUILD = 3;
447+
// BOM produced that represents inventory that is running and operational. This may include staging or production environments and will generally encompass multiple SBOMs describing the applications and operating system, along with HBOMs describing the hardware that makes up the system. Operations Bill of Materials (OBOM) can provide full-stack inventory of runtime environments, configurations, and additional dependencies.
448+
LIFECYCLE_PHASE_OPERATIONS = 4;
449+
// BOM consisting of information observed through network discovery providing point-in-time enumeration of embedded, on-premise, and cloud-native services such as server applications, connected devices, microservices, and serverless functions.
450+
LIFECYCLE_PHASE_DISCOVERY = 5;
451+
// BOM containing inventory that will be, or has been retired from operations.
452+
LIFECYCLE_PHASE_DECOMMISSION = 6;
419453
}
420454

421455
message OrganizationalContact {
@@ -557,18 +591,26 @@ message Property {
557591
}
558592

559593
enum Aggregate {
560-
// Default, no statement about the aggregate completeness is being made
594+
// The relationship completeness is not specified.
561595
AGGREGATE_NOT_SPECIFIED = 0;
562-
// The aggregate composition is complete
596+
// The relationship is complete. No further relationships including constituent components, services, or dependencies are known to exist.
563597
AGGREGATE_COMPLETE = 1;
564-
// The aggregate composition is incomplete
598+
// The relationship is incomplete. Additional relationships exist and may include constituent components, services, or dependencies.
565599
AGGREGATE_INCOMPLETE = 2;
566-
// The aggregate composition is incomplete for first party components, complete for third party components
600+
// The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented.
567601
AGGREGATE_INCOMPLETE_FIRST_PARTY_ONLY = 3;
568-
// The aggregate composition is incomplete for third party components, complete for first party components
602+
// The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented.
569603
AGGREGATE_INCOMPLETE_THIRD_PARTY_ONLY = 4;
570-
// The aggregate composition completeness is unknown
604+
// The relationship may be complete or incomplete. This usually signifies a 'best-effort' to obtain constituent components, services, or dependencies but the completeness is inconclusive.
571605
AGGREGATE_UNKNOWN = 5;
606+
// The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.
607+
AGGREGATE_INCOMPLETE_FIRST_PARTY_PROPRIETARY_ONLY = 6;
608+
// The relationship is incomplete. Only relationships for first-party components, services, or their dependencies are represented, limited specifically to those that are opensource.
609+
AGGREGATE_INCOMPLETE_FIRST_PARTY_OPENSOURCE_ONLY = 7;
610+
// The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are proprietary.
611+
AGGREGATE_INCOMPLETE_THIRD_PARTY_PROPRIETARY_ONLY = 8;
612+
// The relationship is incomplete. Only relationships for third-party components, services, or their dependencies are represented, limited specifically to those that are opensource.
613+
AGGREGATE_INCOMPLETE_THIRD_PARTY_OPENSOURCE_ONLY = 9;
572614
}
573615

574616
message Composition {
@@ -578,6 +620,10 @@ message Composition {
578620
repeated string assemblies = 2;
579621
// The dependencies the aggregate completeness applies to
580622
repeated string dependencies = 3;
623+
// The bom-ref identifiers of the vulnerabilities being described.
624+
repeated string vulnerabilities = 4;
625+
// An optional identifier which can be used to reference the composition elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.
626+
optional string bom_ref = 5;
581627
}
582628

583629
message EvidenceCopyright {

0 commit comments

Comments
 (0)