You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// A special type of software that provides low-level control over a devices hardware. Refer to https://en.wikipedia.org/wiki/Firmware
59
59
CLASSIFICATION_FIRMWARE=8;
60
+
// A special type of software that operates or controls a particular type of device. Refer to https://en.wikipedia.org/wiki/Device_driver
61
+
CLASSIFICATION_DEVICE_DRIVER=9;
60
62
// A runtime environment which interprets or executes software. This may include runtimes such as those that execute bytecode or low-code/no-code application platforms.
61
-
CLASSIFICATION_PLATFORM=9;
63
+
CLASSIFICATION_PLATFORM=10;
62
64
// A model based on training data that can make predictions or decisions without being explicitly programmed to do so.
63
-
CLASSIFICATION_MACHINE_LEARNING_MODEL=10;
65
+
CLASSIFICATION_MACHINE_LEARNING_MODEL=11;
64
66
// A collection of discrete values that convey information.
65
-
CLASSIFICATION_DATA=11;
67
+
CLASSIFICATION_DATA=12;
66
68
}
67
69
68
70
messageCommit {
@@ -131,16 +133,24 @@ message Component {
131
133
optionalComponentDatadata=26;
132
134
}
133
135
134
-
// Specifies the data classification.
135
-
messageDataClassification {
136
+
// Specifies the data flow.
137
+
messageDataFlow {
136
138
// Specifies the flow direction of the data.
137
-
DataFlowflow=1;
138
-
// SimpleContent value of element
139
+
DataFlowDirectionflow=1;
140
+
// Data classification tags data according to its type, sensitivity, and value if altered, stolen, or destroyed.
139
141
stringvalue=2;
142
+
// Name for the defined data
143
+
optionalstringname=3;
144
+
// Short description of the data content and usage
145
+
optionalstringdescription=4;
146
+
// The URI, URL, or BOM-Link of the components or services the data came in from
147
+
repeatedstringsource=5;
148
+
// The URI, URL, or BOM-Link of the components or services the data is sent to
149
+
repeatedstringdestination=6;
140
150
}
141
151
142
152
// Specifies the flow direction of the data. Valid values are: inbound, outbound, bi-directional, and unknown. Direction is relative to the service. Inbound flow states that data enters the service. Outbound flow states that data leaves the service. Bi-directional states that data flows both ways, and unknown states that the direction is not known.
143
-
enumDataFlow {
153
+
enumDataFlowDirection {
144
154
DATA_FLOW_NULL=0;
145
155
DATA_FLOW_INBOUND=1;
146
156
DATA_FLOW_OUTBOUND=2;
@@ -205,8 +215,36 @@ enum ExternalReferenceType {
205
215
EXTERNAL_REFERENCE_TYPE_BUILD_SYSTEM=14;
206
216
// Specifies a way to contact the maintainer, supplier, or provider in the event of a security incident. Common URIs include links to a disclosure procedure, a mailto (RFC-2368) that specifies an email address, a tel (RFC-3966) that specifies a phone number, or dns (RFC-4501]) that specifies the records containing DNS Security TXT.
207
217
EXTERNAL_REFERENCE_TYPE_SECURITY_CONTACT=15;
218
+
// Human or machine-readable statements containing facts, evidence, or testimony
219
+
EXTERNAL_REFERENCE_TYPE_ATTESTATION=16;
220
+
// An enumeration of identified weaknesses, threats, and countermeasures, dataflow diagram (DFD), attack tree, and other supporting documentation in human-readable or machine-readable format
221
+
EXTERNAL_REFERENCE_TYPE_THREAT_MODEL=17;
222
+
// 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;
224
+
// 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
// 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
// Results from an authorized simulated cyberattack on a component or service, otherwise known as a penetration test
229
+
EXTERNAL_REFERENCE_TYPE_PENTEST_REPORT=21;
230
+
// 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
// 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.
209
-
EXTERNAL_REFERENCE_TYPE_MODEL_CARD=16;
247
+
EXTERNAL_REFERENCE_TYPE_MODEL_CARD=30;
210
248
}
211
249
212
250
enumHashAlg {
@@ -365,7 +403,7 @@ message Metadata {
365
403
// The date and time (timestamp) when the document was created.
366
404
optionalgoogle.protobuf.Timestamptimestamp=1;
367
405
// The tool(s) used in the creation of the BOM.
368
-
repeatedTooltools=2;
406
+
optionalTooltools=2;
369
407
// The person(s) who created the BOM. Authors are common in BOMs created through manual processes. BOMs created through automated means may not have authors.
370
408
repeatedOrganizationalContactauthors=3;
371
409
// The component that the BOM describes.
@@ -463,7 +501,7 @@ message Service {
463
501
optionalboolauthenticated=8;
464
502
// A boolean value indicating if use of the service crosses a trust zone or boundary. A value of true indicates that by using the service, a trust boundary is crossed. A value of false indicates that by using the service, a trust boundary is not crossed.
465
503
optionalboolx_trust_boundary=9;
466
-
repeatedDataClassificationdata=10;
504
+
repeatedDataFlowdata=10;
467
505
repeatedLicenseChoicelicenses=11;
468
506
// Provides the ability to document external references related to the service.
469
507
repeatedExternalReferenceexternal_references=12;
@@ -473,6 +511,8 @@ message Service {
473
511
repeatedPropertyproperties=14;
474
512
// Specifies optional release notes.
475
513
optionalReleaseNotesreleaseNotes=15;
514
+
// The name of the trust zone the service resides in.
515
+
optionalstringtrustZone=16;
476
516
}
477
517
478
518
messageSwid {
@@ -494,15 +534,20 @@ message Swid {
494
534
495
535
// Specifies a tool (manual or automated).
496
536
messageTool {
497
-
// The vendor of the tool used to create the BOM.
498
-
optionalstringvendor=1;
499
-
// The name of the tool used to create the BOM.
500
-
optionalstringname=2;
501
-
// The version of the tool used to create the BOM.
502
-
optionalstringversion=3;
503
-
repeatedHashhashes=4;
504
-
// Provides the ability to document external references related to the tool.
505
-
repeatedExternalReferenceexternal_references=5;
537
+
// DEPRECATED - DO NOT USE - The vendor of the tool used to create the BOM.
538
+
optionalstringvendor=1 [deprecated = true];
539
+
// DEPRECATED - DO NOT USE - The name of the tool used to create the BOM.
540
+
optionalstringname=2 [deprecated = true];
541
+
// DEPRECATED - DO NOT USE - The version of the tool used to create the BOM.
542
+
optionalstringversion=3 [deprecated = true];
543
+
// DEPRECATED - DO NOT USE
544
+
repeatedHashhashes=4 [deprecated = true];
545
+
// DEPRECATED - DO NOT USE - Provides the ability to document external references related to the tool.
// A list of software and hardware components used as tools
548
+
repeatedComponentcomponents=6;
549
+
// A list of services used as tools. This may include microservices, function-as-a-service, and other types of network or intra-process services.
550
+
repeatedServiceservices=7;
506
551
}
507
552
508
553
// Specifies a property
@@ -543,6 +588,82 @@ message EvidenceCopyright {
543
588
messageEvidence {
544
589
repeatedLicenseChoicelicenses=1;
545
590
repeatedEvidenceCopyrightcopyright=2;
591
+
repeatedEvidenceIdentityidentity=3;
592
+
repeatedEvidenceOccurrencesoccurrences=4;
593
+
optionalCallstackcallstack=5;
594
+
}
595
+
596
+
// Evidence of the components use through the callstack.
597
+
messageCallstack {
598
+
repeatedFramesframes=1;
599
+
600
+
messageFrames {
601
+
// A package organizes modules into namespaces, providing a unique namespace for each type it contains.
602
+
optionalstringpackage=1;
603
+
// A module or class that encloses functions/methods and other code.
604
+
stringmodule=2;
605
+
// A block of code designed to perform a particular task.
606
+
optionalstringfunction=3;
607
+
// Optional arguments that are passed to the module or function.
608
+
repeatedstringparameters=4;
609
+
// The line number the code that is called resides on.
610
+
optionalint32line=5;
611
+
// The column the code that is called resides.
612
+
optionalint32column=6;
613
+
// The full path and filename of the module.
614
+
optionalstringfullFilename=7;
615
+
}
616
+
}
617
+
618
+
messageEvidenceIdentity {
619
+
// The identity field of the component which the evidence describes.
620
+
EvidenceFieldTypefield=1;
621
+
// The overall confidence of the evidence from 0 - 1, where 1 is 100% confidence.
622
+
optionalfloatconfidence=2;
623
+
// The methods used to extract and/or analyze the evidence.
624
+
repeatedEvidenceMethodsmethods=3;
625
+
// The object in the BOM identified by its bom-ref. This is often a component or service, but may be any object type supporting bom-refs. Tools used for analysis should already be defined in the BOM, either in the metadata/tools, components, or formulation.
626
+
repeatedstringtools=4;
627
+
}
628
+
629
+
messageEvidenceMethods {
630
+
// The technique used in this method of analysis.
631
+
EvidenceTechniquetechnique=1;
632
+
// The confidence of the evidence from 0 - 1, where 1 is 100% confidence. Confidence is specific to the technique used. Each technique of analysis can have independent confidence.
633
+
floatconfidence=2;
634
+
// The value or contents of the evidence.
635
+
optionalstringvalue=3;
636
+
}
637
+
638
+
messageEvidenceOccurrences {
639
+
// An optional identifier which can be used to reference the occurrence elsewhere in the BOM. Every bom-ref MUST be unique within the BOM.
640
+
optionalstringbom_ref=1;
641
+
// The location or path to where the component was found.
642
+
stringlocation=2;
643
+
}
644
+
645
+
enumEvidenceFieldType {
646
+
EVIDENCE_FIELD_NULL=0;
647
+
EVIDENCE_FIELD_GROUP=1;
648
+
EVIDENCE_FIELD_NAME=2;
649
+
EVIDENCE_FIELD_VERSION=3;
650
+
EVIDENCE_FIELD_PURL=4;
651
+
EVIDENCE_FIELD_CPE=5;
652
+
EVIDENCE_FIELD_SWID=6;
653
+
EVIDENCE_FIELD_HASH=7;
654
+
}
655
+
656
+
enumEvidenceTechnique {
657
+
EVIDENCE_TECHNIQUE_SOURCE_CODE_ANALYSIS=0;
658
+
EVIDENCE_TECHNIQUE_BINARY_ANALYSIS=1;
659
+
EVIDENCE_TECHNIQUE_MANIFEST_ANALYSIS=2;
660
+
EVIDENCE_TECHNIQUE_AST_FINGERPRINT=3;
661
+
EVIDENCE_TECHNIQUE_HASH_COMPARISON=4;
662
+
EVIDENCE_TECHNIQUE_INSTRUMENTATION=5;
663
+
EVIDENCE_TECHNIQUE_DYNAMIC_ANALYSIS=6;
664
+
EVIDENCE_TECHNIQUE_FILENAME=7;
665
+
EVIDENCE_TECHNIQUE_ATTESTATION=8;
666
+
EVIDENCE_TECHNIQUE_OTHER=9;
546
667
}
547
668
548
669
messageNote {
@@ -592,7 +713,7 @@ message Vulnerability {
592
713
repeatedint32cwes=6;
593
714
// A description of the vulnerability as provided by the source.
594
715
optionalstringdescription=7;
595
-
// If available, an in-depth description of the vulnerability as provided by the source organization. Details often include examples, proof-of-concepts, and other information useful in understanding root cause.
716
+
// If available, an in-depth description of the vulnerability as provided by the source organization. Details often include information useful in understanding root cause.
596
717
optionalstringdetail=8;
597
718
// Recommendations of how the vulnerability can be remediated or mitigated.
598
719
optionalstringrecommendation=9;
@@ -607,7 +728,7 @@ message Vulnerability {
607
728
// Individuals or organizations credited with the discovery of the vulnerability.
608
729
optionalVulnerabilityCreditscredits=14;
609
730
// The tool(s) used to identify, confirm, or score the vulnerability.
610
-
repeatedTooltools=15;
731
+
optionalTooltools=15;
611
732
// An assessment of the impact and exploitability of the vulnerability.
612
733
optionalVulnerabilityAnalysisanalysis=16;
613
734
// affects
@@ -616,6 +737,19 @@ message Vulnerability {
616
737
repeatedPropertyproperties=18;
617
738
// The date and time (timestamp) when the vulnerability record was rejected (if applicable).
618
739
optionalgoogle.protobuf.Timestamprejected=19;
740
+
// Evidence used to reproduce the vulnerability.
741
+
optionalProofOfConceptproofOfConcept=20;
742
+
// A bypass, usually temporary, of the vulnerability that reduces its likelihood and/or impact. Workarounds often involve changes to configuration or deployments.
743
+
optionalstringworkaround=21;
744
+
}
745
+
746
+
messageProofOfConcept {
747
+
// Precise steps to reproduce the vulnerability.
748
+
optionalstringreproductionSteps=1;
749
+
// A description of the environment in which reproduction was possible.
750
+
optionalstringenvironment=2;
751
+
// Supporting material that helps in reproducing or understanding how reproduction is possible. This may include screenshots, payloads, and PoC exploit code.
752
+
repeatedAttachedTextsupportingMaterial=3;
619
753
}
620
754
621
755
messageVulnerabilityReference {
@@ -663,6 +797,8 @@ enum ScoreMethod {
663
797
SCORE_METHOD_OWASP=4;
664
798
// Other scoring method
665
799
SCORE_METHOD_OTHER=5;
800
+
// Common Vulnerability Scoring System v3.1 - https://www.first.org/cvss/v4-0/
0 commit comments