Hi Craig,

On 19.03.2025 21:11, Craig Russell wrote:
Users use SBOMs in order to know the entire stack of software they are running. 
This allows them to know whether the products that they use are subject to 
known vulnerabilities. But in order to take advantage of this, they need to 
monitor CVE activity and manually scan their products' SBOMs every time a CVE 
is announced.

There is software that does that kind of matching. Unless I am mistaken Arnout have tried Guac and DependencyTrack. I never used Guac, but DependencyTrack downloads advisories from multiple databases and tries to match them with the SBOMs. It has a REST API, so in the future it could be integrated with Tooling infrastructure.

There are however several challenges to "know whether the products that they use are subject to known vulnerabilities":

1. For a product to be "subject to known vulnerabilities" two conditions must occur: the vulnerable code must be included and the vulnerability must be exploitable.

2. To find if the vulnerable code is included some identifier in the SBOM must match an identical identifier in the vulnerability disclosure. This actually is much harder than it looks:

    * Vulnerability databases used CPEs[1] for a very long time, which is a very crude identifier that marks hundreds of packages as vulnerable (e.g. `cpe:2.3:a:apache:camel`). It's hard to match those with package names.

    * Currently package names can be submitted to the CVE database, but they are not always correct or complete. For example the recent CVE-2025-27636[2] points at `org.apache.camel:camel` as the vulnerable component. This is a POM file, so you won't find it in an SBOM. [Beyond this small inaccuracy, I was impressed in seeing how Apache Camel handled the vulnerability, with PRs reviewed and merged within 5 minutes and a 3 hours release vote].

    * SBOMs are notably incomplete even for Open Source projects (for commercial products this is intentional). In the Java world we currently don't have a way to handle "shaded" dependencies that are embedded in a library and disappear from a POM file. I believe that Python SBOM generators are not able to disclose native libraries that are shipped in some packages.

A lot of initiatives are currently in place to fix these problems:

* Package URL will become an ECMA standard at the end of this year and provides a precise identifier that can be used in vulnerability reports.

* Some vulnerability databases enrich the information submitted by reporters with IDs. The NVD[3] used to do it for a long time, but suddenly stopped for an unknown reason (lack of funding? Not sure if the current USA administration is willing to address this). GitHub Advisories[4] seems to be doing a good job, but to use it we don't need to integrate it into ATR. Submitting SBOMs to GitHub is enough. A lot of other vulnerability databases exists, but are far from being free from false positive and false negatives.

* Personally I think that the solution should come from the community. I am currently looking for funding to produce some Vulnerability Disclosure Reports(VDR)[5] for Apache projects, which in my understanding are the right tool to disclose that a product **contains** a vulnerable dependency even if that dependency does not appear in an SBOM or there is no SBOM for that version of the project.

Summarizing: we could use a solution like DependencyTrack to match SBOMs with vulnerabilities, but I think it would be too soon for ATR to propose its own solution.


3. To find if a vulnerability in an application is **exploitable** is an even harder problem. IMHO, the appropriate tool for that is a Vulnerability Exploitability eXchange(VEX)[6] and it should also be handled by the community. I wrote a small example[7] on how this kind of document could help downstream consumers to evaluate the exploitability of a CVE in their own applications.


Whenever some progress occurs in these areas, I will be certainly ping Dave to see if some of those advances can be integrated into ATR. However, without additional funding, I am not sure if there is enough work power to pursue these goals now. At the end of the year, 3 ECMA standards are expected (Transparency Exchange API, Common Lifecycle Enumeration and Package URL). These standards should help with vulnerability handling, so whenever some final drafts are available, I will try to use my Puss in Boots Eyes with Apache Tooling.


Piotr

[1] https://nvd.nist.gov/products/cpe

[2] https://www.cve.org/CVERecord?id=CVE-2025-27636

[3] https://nvd.nist.gov/

[4] https://github.com/advisories

[5] https://cyclonedx.org/capabilities/vdr/

[6] https://cyclonedx.org/capabilities/vex/

[7] https://github.com/copernik-eu/vexation/


---------------------------------------------------------------------
To unsubscribe, e-mail: security-discuss-unsubscr...@community.apache.org
For additional commands, e-mail: security-discuss-h...@community.apache.org

Reply via email to