Giter VIP home page Giter VIP logo

swiftbom's Introduction

SBOM

This repository contains a variant of the original SwiftBOM demo tool supporting enhanced SPDX component input.

A "Software Bill of Materials" (SBOM) is effectively a nested inventory, a list of ingredients that make up software components. You can learn more about SBOM at https://www.ntia.gov/sbom. There are several links to community developed documents in the NTIA's website.

SwiftBOM a SBOM generator tool here is part of CERT's work in supporting SBOM generation efforts for Proof-of-Concepts and Demo purposes. This tool is currently being explored by Healthcare Proof of Concept teams for their PoC efforts.

To start SwiftBOM either download the sources or run it via the following link SwiftBOM.

Import restrictions

Tagged SPDX format

  • Support for importing one or multiple files with automatic reference solving based on SPDXIDs.
  • Output is restricted to supported tags. Any additional tags are discarded on export.
  • In case input doesn't include SPDXID entries these will be filled with GUID values.
  • Relationship support restricted to 'CONTAINS' and 'DEPENDS_ON'.
  • The UI can only show a single parent per component. If multiple exist only one will be shown.
  • No support for file level information beyond package file names and their checksums.

RDF SPDX format

  • Experimental support for files with extension rdf

NPM

  • Creator field not filled automatically.

PIP

  • Creator and supplier fields not filled automatically.

Excel

  • Not supported.

SBOM Output Formats

SwiftBOM currently generates SBOM in SPDX, CycloneDX SWID formats. A tree graph is also generated by SwiftBOM that can be downloaded as a PNG file to quickly visualize relationships between components in an SBOM. Currently the tool uses CONTAINS as the default relationship mode (SWID Relationships)[https://spdx.github.io/spdx-spec/7-relationships-between-SPDX-elements/#71-relationship]. A generated SBOM in all three formats is currently a standalone document and does not support external relationships.

swiftbom's People

Contributors

hansbusch avatar sei-vsarvepalli avatar ahouseholder avatar

Stargazers

R. Myers avatar

Watchers

R. Myers avatar

swiftbom's Issues

Support optional tags

Original implementation assumes that for each package the same tags are present. If not the association between tags and components gets messed up.

Propose to require PackageName as first tag of a component.

Add support for loading bom sets

Implementation assumes that first item is primary. When loading sets of boms then IDs may occur multiple times as reference in parent as well as primary in dependent bom.

  • Simplify parser component access by storing components as hash of component IDs.
  • Hash allows easy matching of existing bom entries avoiding duplicates

Remove NOASSERTION on package relationship

Current implementation adds to each component the following line
Relationship: $SPDXID CONTAINS NOASSERTION

However we expect that all dependent components are fully declared. So why add this line?

Check Nuget external reference

An external nuget reference must consist of a name followed by a slash and followed by a version number.

Add verification regex.

Verify license IDS

Any license ID provided shall be either taken from the license list in Annex A of the SPDX specification or it must be defined within the SBOM.

Check that valid only license IDs are used.

Backslash not allowed

Microsoft file locations have a backslash.

However backslashes are not allowed in Json.

Child BOM handling broken

Child BOM should support two modes:

  1. read primary component into BOM
  2. include full recursive content

Implementation looks very incomplete and does not even read primary component information but locks controls.

Primary component shouldn't be removed from khash

After assigning primary component it is removed from list. Not sure why this is needed. There was a glitch that the removal tested for equal list length which is not guaranteed for optional items resulting in wrong association.

SPDX Relationship support

Current implementation expects exactly one relationship with identifier not starting with "NO" and assumes that this describes how another component CONTAINS itself.
Drawbacks

  • A component can only be included once
  • Any generator defining the inclusion otherwise will result in wrong association

Component add/remove incorrect

On first load one extra component is shown that needs to be removed before being able to export.

Subsequent loads add numerous additional empty components without possibility to remove.

Support for RDF

Some tools output RDF and it would be nice to be able to import.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.