Â
Probably the person I have learned the most from with regard to SBOMs is Steve Springett, chair of the OWASP CycloneDX working group, leader of the OWASP Dependency-Track project, and leader of the OWASP Software Component Verification Standard (SVCS) project (BTW, he has a day job as well!).
Steve is someone who is always far ahead of the âconventional wisdomâ. One illustration of this is the fact that he developed Dependency-Track, which is a tool that ingests SBOMs (actually, BOMs in general) and identifies and tracks vulnerabilities applicable to components. And he did it in 2012, years before the term âsoftware bill of materialsâ was invented, and especially before the idea became prevalent of using SBOMs for vulnerability management purposes.
Another illustration is something that happened this week. Iâve been corresponding with Steve by email regularly (he lives only about ten miles from me in suburban Chicago, and Iâve suggested we have lunch sometime. He said heâd be glad to do that when thereâs a restaurant with outdoor seating where we can meet. However, for some reason I havenât been able to find a restaurant in Chicago that offers outdoor seating in January or February. Iâll keep looking, though!).
Steve and I were corresponding on the subject of VEX in CycloneDX and Dependency-Track, when he wrote, âIâm troubled by the one-way nature of how VEX is positioned. The word âexchangeâ means that two parties both give something and receive something. The case youâre framing is a simple one-way transfer, which may be useful, but will not work in the real world.â
This hit me like a bolt from out of the blue, since Iâve always thought of VEXes (and SBOMs, too) as one-way documents. Theyâre issued by a supplier (or perhaps another party) and provided to their customers. The VEXâs purpose is to tell the customer the status of a vulnerability (i.e. whether or not the vulnerability is exploitable in the product itself, not just in one of the components when considered as a standalone product) in one or more versions of one or more of the supplierâs products. And Iâm not alone in believing that VEXes are only one-way documents. Iâve attended most of the VEX meetings (formerly under the NTIA and now under CISA) since their inception in September 2020, and Iâve never once heard any discussion of the VEX as anything but a one-way document.
So what did Steve mean by two-way transfer of VEXes? He continued, âHaving spent most of my life working for software companies, I can tell you with absolute certainly that customers report issues all the time. Sometimes theyâre for previously unknown vulnerabilities or they prove that a third-party library that was thought not to be exploitable, actually is. Many customers have internal teams that conduct offensive engagements, or they work with consultancies that perform the engagements for them, or software companies work with bug bounty firms like HackerOne.â
What Steve has in mind is customers creating VEXes that state a particular vulnerability is exploitable or not exploitable in a particular product. Of course, they do this both for the supplierâs and their own benefit, so the supplier will patch exploitable vulnerabilities they werenât previously aware of.
Note that the activity â a customer reporting the exploitability status of a vulnerability to a supplier â is something that software customers are already doing. What would be innovative about Steveâs approach is that the customer would be able to deliver the âreportâ in a machine-readable format, which is in fact the same format that the supplier uses to report status of vulnerabilities to the customer.
Who will be the main beneficiary of this two-way communication? The customer will benefit, since two-way VEXes will make it easier for them to report an exploitable vulnerability to a supplier, since â once they get the hang of creating VEXes themselves. Now, the report could be created entirely by an automated process, instead of having to spend time explaining it to someone in tech support on the phone or in an email.
But two-way VEXes will make life a lot easier for the supplier, since getting a vulnerability report from a customer wonât require the help desk staff to spend a long time on the phone with the customer, then transcribe what they just learned into the supplierâs internal vulnerability management system. Since the supplier will already be familiar with the CycloneDX VEX format, they will be able to link that to their internal system, so that future VEX reports from customers can flow directly into the system.
But once we have two-way VEXes in place (and it sounds like doing that will just require some simple tooling on both the customer and supplier sides), are there any other processes that might be automated by this as well? Maybe even new ones we hadnât considered before?
Coincidentally, earlier on Monday I had heard of a vulnerability management communication that would be very helpful, both to end users and suppliers. But since thereâs currently no way now to do this communication cost-effectively, it simply isnât being done at all â in fact, I hadnât even thought of this communication at all until another person (who is very knowledgeable about SBOMs and communication channels) suggested it to me.
To understand this type of communication, think about the main use case for a VEX: A supplier tells a customer that a particular vulnerability â which is listed in the NVD as applicable to a component of a supplierâs product - isnât in fact exploitable in their product. The reason the supplier should tell the customer that a vulnerability isnât exploitable is that, by doing so, theyâll save both themselves and the customer a huge amount of wasted time and effort. The customer wonât waste time bugging the supplier about when theyâll patch a non-exploitable component vulnerability, and the supplierâs help desk wonât waste a lot of time talking to customers about those vulnerabilities.
The reason this is a big deal is that almost without doubt the great majority of software component vulnerabilities arenât exploitable in the product itself â in fact, that number could be around 95%. In other words, if a customer called their supplier about 100 vulnerabilities identified in components of a product in the NVD, 95 of those calls would be a waste of both the customerâs and the supplierâs time.
However, for a VEX to work best and save the most time and money, it needs to be sent as soon as the non-exploitability is discovered â i.e. the same day. If that isnât done, then both the supplier and the consumer are likely to waste significant amounts of time dealing with false positive product vulnerabilities.
If the need for the supplier to communicate that a component isnât exploitable to their customers didnât occur very often, it wouldnât be hard to send a VEX to every customer very soon after the non-exploitability was discovered, so not much time would be wasted.
But consider the case of a supplier that has ten products, each with thousands of components (as in one of the examples in my previous post). The supplier might well discover multiple non-exploitable component vulnerabilities every hour of the day. Rather than be constantly sending VEXes out to their entire customer base multiple times an hour, they may aggregate these notices into one VEX every day or even every week.
The problem is that, when a customer discovers a component vulnerability in the NVD but hasnât seen a VEX saying itâs not exploitable, they will need to assume that the vulnerability is exploitable. So even if a VEX arrives a few days later saying itâs not exploitable, the customer may already have wasted a lot of their and the supplierâs time, under the assumption that it is.
Wouldnât it be nice if, upon discovering a component vulnerability in the NVD, a customer could immediately query the supplier about whether or not itâs exploitable and get an immediate answer â with no human involvement required on either end? Given that the customer might use hundreds of products with collectively tens or hundreds of thousands of components, this would enable them to learn right away about the exploitability status of every component vulnerability they discover in the NVD (or another vulnerability database, of course). Currently, they simply canât do this.
So Steve has given us another gift, which will probably enable a whole cottage industry and make some people â if not rich â at least fully employed for a lifetime. Not bad for a dayâs work.
By the way, would you like to know the technical name for this bi-directional VEX capability?...I didnât think so, but Iâll tell you anyway: itâs biVEXuality. Catchy, no?
Any opinions expressed in this blog post are strictly mine and are not necessarily shared by any of the clients of Tom Alrich LLC. If you would like to comment on what you have read here, I would love to hear from you. Please email me at [email protected].
Â