SPDX or CycloneDX – which should we choose?
Both are common and both are accepted. SPDX is an ISO standard and is widely used where licence information is central, for example in due diligence. CycloneDX comes from the security side and fits slightly more naturally with vulnerability management and VEX. In practice, you can convert almost any list between the two, so it is rarely a choice you're locked into. We look at what your customers ask for and which tooling you already use, and follow that.
How deep should the list go?
The Cyber Resilience Act requires at least the top layer of dependencies. For answering the question "does this affect us?", that is too shallow: most reported vulnerabilities sit in components that came in with your choices and that you never wrote down yourself. By default we generate the full tree and, where the top layer suffices, supply an extract of it as well. It takes the same effort, and the answer becomes far more useful.
Do we have to make the list public?
No. The obligation is that you have it and can produce it on request to those entitled to see it, primarily the market surveillance authority. What you share with customers is your decision. Some organisations share a complete copy under non-disclosure, others only confirm that a specific component is not used. That is a commercial consideration rather than a legal one.
What if a supplier won't give us a list?
It's the same question, one link further along the chain. For purchased components you can often establish what's inside by scanning the delivered artefacts yourself, but that is rarely complete. The practical route is to write it into your procurement terms and enforce it at renewal. We can help draft that wording; it is the same clause your own customers are now putting to you.
What is VEX and do we need it?
VEX stands for Vulnerability Exploitability eXchange: a statement recording whether a reported vulnerability actually affects your product. A critical flaw in a component you ship but never invoke is no problem for your customer, but without a statement their scanner only sees the component and its score. You need this as soon as your customers start scanning for themselves, because it saves you both a lot of needless questions.
Does this change how we develop?
Very little, and that is the point. Generation happens automatically and requires no action. What does change is that a new dependency with an unwanted licence or a known flaw becomes visible the moment someone adds it, rather than months later. That is a short conversation at the right time, and it prevents the long conversation at the wrong time.
What does the first list usually show?
Almost always the same picture: the number of components is a multiple of what the team expected, a handful have not been updated in years, and there is at least one licence nobody consciously accepted. Most findings are resolved with a version update. The value lies not in the count but in the fact that the question can be answered for the first time.
Does this also work for older software?
Yes, and that is often where it is most useful. For a system that has been running for years, nobody usually knows exactly what is in it any more. Generation works the same way, although very old build pipelines may require some integration work. In practice the first list delivers the most value there, and it is often the starting point for a conversation about
modernisation.
What about containers and operating systems?
They are part of it. A container image contains, alongside your code, an operating system layer with dozens of packages, and a large share of reported vulnerabilities sit there. We include that layer in the list, because otherwise the scan gives a clean picture while the flaw sits one level down. The same applies to base images you obtain from a supplier.
Will this cost us a new subscription?
Not necessarily. Generation itself can be done with open tooling that fits your existing build pipeline. For managing the lists across many products and versions, a central system is useful, and there are both open and paid options. We advise based on how many products and versions you have, and start from what you already run. Any recurring costs we will set out for you in advance.
Who should manage this on our side?
Generation maintains itself. What requires attention is reviewing the exceptions: which component deliberately stays on an older version and why, and when we look at it again. That belongs with the same person or role who assesses vulnerabilities, because it is the same judgement. Without an owner, the exceptions register grows until nobody looks at it any more.