I'll try to make issues/PR's etc but I want to hitchhike on some of the discussion last meeting.
We didn't discuss 'types' of SBOMs – where type is as used in the CISA workgroups. Let me digress and say the work "type" is my fault in that context as since the beginning I would bring up SBOMs of source code are a different 'type' of SBOM than build artifacts then an SBOM made by an executable scanners. The word stuck even though everybody hates it (just like they hate VEX as a word). We have the opportunity to correct these misnomers and the more I think about it, the more I think we need to address the information model of the provenance and pedigree of both the software that is the subject of the SBOM, and of the SBOM itself. I say this because the 'type' (ie what process used to create it) is just Pedigree/ Provenance "information".
This implies we need to define Pedigree and Provenance in our context. The NTIA SBOM use case doc (from 2019) has the following text along with related text on 'integrity' which we will also need to define:
Provenance
The Provenance of an SBOM is the term of art for having information about the chain of custody of the software and all of the constituent components that comprise that software, capturing information about the authors and locations from where the components were obtained. Whether a component comes directly from the supplier's distribution site or some other location can be a concern for some organizations. Similarly, understanding the exact identity of the supplier can help an organization establish where to go for updates or to communicate about bugs or enhancements. Finally, access to authorship allows organizations to correlate their experience with components to the creators and rank their internal preferences through reputation-like scoring of providers of software.
Pedigree
The Pedigree of an SBOM is the term of art for having information on all of the components that have come together to make a piece of software and process under which they came together. This can include details beyond components, such as compiler options. For example, understanding whether compilation options invoking ASLR were used or not used indicates that the resultant piece of deployable code is hardened against certain types of attacks. Understanding of the process used in taking the source code and incorporated components and libraries to formulate the resultant executable is an important source of insight for those who need to know what selection of options were used in creating the executable software.
Integrity
The Integrity of the SBOM refers to the use of cryptographic techniques to indicate that the SBOM hasn't been altered since written by its author or if there was a modification it indicates that alteration by some subsequent SBOM author. Being able to determine the SBOM's integrity can help, for example, in situations where there is concern about whether an adversary may be purposefully trying to alter the SBOM to mislead those using them for analysis of vulnerabilities. If someone edits the SBOM to indicate it has a later, non-vulnerable version of a component, the organization will be left susceptible to attacks against that vulnerability even though the altered SBOM indicates they are using a non-vulnerable version. Similarly, alteration of the authorship or source information would undermine the Provenance of the SBOM or alteration of the details of the formulation choices would undermine the Pedigree of the SBOM.
Does this make sense (ie the concept that 'type' is really just pedigree/provenance)? If so, I'll make into PR's. If not, let's discuss.
--
Duncan Sparrell
sFractal Consulting
iPhone, iTypo, iApologize
I welcome VSRE emails. Learn more at http://vsre.info/