DependencyTrack / dependency-track

Dependency-Track is an intelligent Component Analysis platform that allows organizations to identify and reduce risk in the software supply chain.
https://dependencytrack.org/
Apache License 2.0
2.48k stars 536 forks source link

SBOM Details and Management - List of Suggested Improvements #1789

Open matamorphosis opened 2 years ago

matamorphosis commented 2 years ago

The enhancement may already be reported! Please search for the enhancement before creating one. Hi I have a list of enhancements that I think would really make DependencyTrack a really solid solution. For context I am currently doing work for a medical device company, and there are some recent newly drafted FDA guidelines, which while definitely not written by a security professional, have resulted in me capturing some gaps in the information available in the CycloneDX SBOMs my company is dynamically generating and sending to DependencyTrack. If you are interested in the guidance for any future R&D ideas it might spark beyond this ticket, you can find it here.

Current Behavior:

  1. SBOM Export: I can only export SBOMs in a JSON format, which while great for programmatical use, is still limiting. Additionally I can export these SBOMs with or without a list of OSS vulnerabilities provided by DependencyTrack.
  2. Third-party integrations for components: Currently the only information that is acquired through this method, is the open-source vulnerabilities (as far as I can tell)

Proposed Behavior:

  1. Inline with DependencyTrack's ability to ingest XML SBOMs, XML support for export should be added. I had someone asking for an XML format due to it being a preferred format by the FDA.
  2. Additionally, I have other people requesting the SBOM in a CSV format, which is easier to read as a human, than XML or JSON. SO it would be nice to have that as an option.
  3. There are some key missing fields, which I currently have to obtain the details for myself, that are:
    a. The FDA guidance refers to "manufacturer" as a required field, which with modern dependencies is referred to as Maintainer/Author Name and Email b. Latest Version c. Whether the current version is up-to-date (This shows in DependencyTrack but not in the SBOM export) These details can be fetched at: a. NodeJS via the NPM JS registry API (https://registry.npmjs.org/{PACKAGE}) b. Python via the PyPi registry API (https://pypi.org/pypi/{PACKAGE}/json) c. Other languages would require further R&D.
  4. In addition to the above, I don't have a clear way of working this out, but if a dependency is no longer maintained. I recognise this may be an existing feature in DependencyTrack, but haven't had a situation where I've had a dependency that is no longer maintained in my project to find out. If it is an existing feature, that would also be information I would want added to the SBOM upon export.
  5. Option to import vulnerabilities from a third-party vulnerability scanner. I know DefectDojo supports a series of vulnerability scan reports in terms of ingesting findings, the parsers for which are found here. It would be awesome if you could do something similar with a DependencyTrack project, and then have the option to choose to include either the DependencyTrack OSS vulns, or the vulns from the imported vulnerability report.
  6. Inline with the above proposed changes it may make sense to have a series of drop-down boxes, as follows: a. The first box should allow you to select the SBOM format: SUGGESTED OPTIONS: json, xml, or csv b. The second box should allow you to select vulnerabilities, whether to include them, and from what source. SUGGESTED OPTIONS: DependencyTrack OSS Vulnerabilities, {VULNERABILITY SCANNER NAME} Vulnerabilities
  7. Support Python packages from Conda that aren't available on PyUp. Check out _libgcc_mutex as it doesn't exist in PyUp, but can be found on the Anaconda site here.

Thanks in advance for your consideration of these features.

stevespringett commented 2 years ago

@matamorphosis thank you for the feedback. I'll try to reply however, for every enhancement, you'll need to create a ticket so each piece of work can be prioritized and tracked.

Inline with DependencyTrack's ability to ingest XML SBOMs, XML support for export should be added. I had someone asking for an XML format due to it being a preferred format by the FDA.

Dependency-Track already supports export to XML, but it can only be done via the API. The UI defaults to JSON. Hopefully, medical device makers are not manually exporting BOMs. Consult the swagger docs for info on how to specify xml as the serialization format.


Additionally, I have other people requesting the SBOM in a CSV format, which is easier to read as a human, than XML or JSON. SO it would be nice to have that as an option.

The CycloneDX standard does not support CSV, nor are there plans to support it. For human readable and editable use cases, please provide feedback to the CycloneDX Authoring Tool project.


There are some key missing fields, which I currently have to obtain the details for myself, that are: a. The FDA guidance refers to "manufacturer" as a required field, which with modern dependencies is referred to as Maintainer/Author Name and Email b. Latest Version c. Whether the current version is up-to-date (This shows in DependencyTrack but not in the SBOM export)

Dependency-Track already supports 'author' and 'publisher' fields. All of this data is supplied from CycloneDX, stored in DT, and is available via the API as well as SBOM export.

The latest version of every component is available via API. Determining if the component is up-to-date or not is also available via the API along with last published data. This data does not belong in an SBOM.


In addition to the above, I don't have a clear way of working this out, but if a dependency is no longer maintained. I recognise this may be an existing feature in DependencyTrack, but haven't had a situation where I've had a dependency that is no longer maintained in my project to find out. If it is an existing feature, that would also be information I would want added to the SBOM upon export.

This information is generally hard to come by and is typically provided by commercial sources of vulnerability intelligence. This data does not belong in an SBOM, but could be provided via API. We would first need to identify a source of intelligence that provided this type of data. Once identified, evaluate whether an integration between the provider and Dependency-Track could be created.


Option to import vulnerabilities from a third-party vulnerability scanner. I know DefectDojo supports a series of vulnerability scan reports in terms of ingesting findings, the parsers for which are found here. It would be awesome if you could do something similar with a DependencyTrack project, and then have the option to choose to include either the DependencyTrack OSS vulns, or the vulns from the imported vulnerability report.

Dependency-Track allows uses to create their own vulnerabilities, via UI or API along with the vulnerable software affected by those vulnerabilities. Any SBOM imported that matches the affected software will have the custom vulnerability applied to it. Currently, Dependency-Track does not import vulnerabilities from other source. If this is a feature you'd like to see, please create an enhancement ticket specific for that case.


Inline with the above proposed changes it may make sense to have a series of drop-down boxes, as follows: a. The first box should allow you to select the SBOM format: SUGGESTED OPTIONS: json, xml, or csv b. The second box should allow you to select vulnerabilities, whether to include them, and from what source. SUGGESTED > > OPTIONS: DependencyTrack OSS Vulnerabilities, {VULNERABILITY SCANNER NAME} Vulnerabilities

Excluding CSV, you can create an enhancement request to add options for JSON and XML export from the UI. And another enhancement for the vulnerabilities.


Support Python packages from Conda that aren't available on PyUp. Check out _libgcc_mutex as it doesn't exist in PyUp, but can be found on the Anaconda site

Dependency-Track currently does not support Conda repositories. If you'd like this feature added, please create an enhancement request and specify the default public conda repositories (such as Anaconda) you'd like DT to support by default.

matamorphosis commented 2 years ago

Thanks for your responses to this, I will raise relevant enhancement requests as you have suggested.