The email I got from security:


-------- Forwarded Message --------
Subject:        Re: SBOM questions
Date:   Mon, 2 Dec 2024 11:41:16 +0100
From:   Arnout Engelen <enge...@apache.org>
To:     Tilmann Zäschke <tilma...@apache.org>
CC:     secur...@apache.org



Hi!

On Fri, Nov 29, 2024 at 7:13 PM Tilmann Zäschke <tilma...@apache.org> wrote:
I have some questions regarding SBOMs, if you could help me with some of
these questions that would be much appreciated:

Happy to!

1) Is it recommended to create SBOMs for pure library projects (or API
projects)?

Yes, I think having SBOMs for libraries is helpful.

The Wiki says "As such, for our purposes, an SBOM would typically be
restricted to run-time and embedded dependencies"

I am not sure what that means, dependencies are either run-time (loaded
during application run-time) or embedded (delivered together with the
application), is there another type?

Ah, what I meant there was that for our purposes it's not very helpful
to also include information about what tools and dependencies are used
at build time.

2) How are SBOMs used (especially for library projects)?

I somehow imagine, from the perspective of someone who wants to analyze
an application, it would be easier and much more secure to run a full
analysis of the dependency tree locally, rather than relying on SBOM
files that are downloaded separately? To verify that an SBOM matches the
used library, I have to download them anyway, or not?

I think the whole ecosystem is still rather in its infancy, and the
questions of 'how should we create SBOMs' and 'how can we use SBOMs'
will develop further in tandem.

Indeed some things are only 'finalized' when a library is used in a
particular context, and if you want to analyze an application, you
want to look at the dependency tree as it's realized for that
application. For example in the Java/Maven ecosystem, a library can
have a dependency on version X of a component, but if an application
uses that dependency and specifies version Y of the component, of
course you should be looking at version Y for the analysis.

SBOMs from libraries could be useful to collect and analyze in their
own right, though - for example for platform-agnotic tools like
https://sbom.security.apache.org/version-diff/ (quick prototype :) ).

Also having an SBOMs for the library might allow us to express things
that can be hard to determine 'after-the-fact'/'downstream'. For
example, when dependencies are shaded/embedded into the artifact
instead of specified as a 'regular' overridable dependency, perhaps
the SBOM is a good way to communicate that information. Early days
though (https://github.com/CycloneDX/cyclonedx-maven-plugin/issues/472)

3) Is it recommended to create SBOMs for past releases?

I assume not, but if it is, is there s stand-alone tool to create such
SBOMs? (Our project is in Java, and using the Maven plugin requires
modifying the .pom, so doing that for existing releases is not really
possible, the Hash would be wrong).

I agree it's completely reasonable to just create SBOMs 'going
forward' and not going back for existing releases.

    Also, our project (DB-JDO) is a bit special, it is essentially an API
standard, so vendors may stay with older versions for a longer time
before moving on.

That makes sense. I enjoyed your questions and will improve
https://cwiki.apache.org/confluence/display/SECURITY/SBOM+Software+Bill+of+Materials
based on them, LMK if you have any follow-ups!


Kind regards,

--
Arnout Engelen
ASF Security Response
Apache Pekko PMC member, ASF Member
NixOS Committer
Independent Open Source consultant

Reply via email to