[00:00]
Niklas Düster
So DependencyTrack was the reason why we adopted SBOMs in the first place.
[00:03]
Niklas Düster
We didn't use it before.
[00:05]
Niklas Düster
Yeah.
[00:06]
Niklas Düster
But for us we basically used I think a Maven plugin back in the day or a PHP plugin.
[00:12]
Viktor Petersson
So you were a Java shop?
[00:13]
Niklas Düster
Mostly, yeah, but also PHP, JavaScript, a little bit of everything.
[00:17]
Niklas Düster
Luckily there were plugins available for build managers or package managers at that time, so integrating that was quite easy to do for us.
[00:25]
Niklas Düster
So we ended up generating SBOMs for every single build, upload them to DependencyTrack and then went from there.
[00:31]
Niklas Düster
Basically it was quite straightforward.
[00:35]
Viktor Petersson
Welcome back to another episode of Nerding Out with Viktor.
[00:38]
Viktor Petersson
Today I'm joined by Niklas Düster.
[00:40]
Viktor Petersson
Welcome to the show, Niklas.
[00:41]
Niklas Düster
Thank you.
[00:42]
Niklas Düster
Thank you so much for having me.
[00:43]
Viktor Petersson
Very much.
[00:44]
Viktor Petersson
So this is kind of like almost a part two to my episode with Steve Springett where we talked about all things cyclondx and all things SBOMs, really?
[00:46]
Viktor Petersson
So this is kind of like almost a part two to my episode with Steve Springett where we talked about all things cyclondx and all things SBOMs, really?
[00:56]
Viktor Petersson
And you are the maintainer of dependencytrack.
[01:00]
Viktor Petersson
And let's maybe for those not familiar with yourself and DependencyTrack, let's start off with who's Niklas?
[01:08]
Viktor Petersson
What should we know?
[01:09]
Niklas Düster
Okay, so hi, I'm Niklas.
[01:12]
Niklas Düster
I live in Germany.
[01:14]
Niklas Düster
I am German, of course.
[01:16]
Niklas Düster
I'm the co leader of the OWASP DependencyTrack project.
[01:18]
Niklas Düster
As Victor already teased at, I co lead this project together with Steve Springett, who is also the original creator of the project.
[01:25]
Niklas Düster
I'm also involved in the Cyclone DX project, which is a closely related effort in the OWASP Foundation.
[01:31]
Niklas Düster
I maintain the Go Library and the Go SBOM generator for that project.
[01:36]
Niklas Düster
In my day job I'm a contractor for a financial institution.
[01:39]
Niklas Düster
I mostly work with DependencyTrack there as well.
[01:42]
Niklas Düster
Before that I was a security engineer for a European payment service provider.
[01:46]
Niklas Düster
Did everything from AppSec to incident response, developer education, and so on and so forth.
[01:53]
Niklas Düster
When it comes to DependencyTrack itself.
[01:54]
Niklas Düster
Sorry, did I.
[01:55]
Viktor Petersson
No, no, go ahead.
[01:56]
Viktor Petersson
No, I was going to say.
[01:57]
Viktor Petersson
Yeah, perfect.
[01:59]
Niklas Düster
Yeah.
[01:59]
Niklas Düster
So DependencyTrack itself, it's mainly an SBOM platform or a BOM platform, if you will.
[02:05]
Niklas Düster
You can upload sboms or any kinds of bills of materials.
[02:09]
Niklas Düster
DependencyTrack will analyze them for various types of risks, which of course includes vulnerabilities, but also license compliance, component age, whatever have you.
[02:19]
Niklas Düster
We can also generate sboms in certain cases or other artifacts like VEX files, VDR reports, whatever have you.
[02:26]
Niklas Düster
Yeah, but dependencytrack as a core is a BOM ingestion and analysis platform.
[02:32]
Viktor Petersson
Very cool.
[02:33]
Viktor Petersson
So we met in person.
[02:34]
Viktor Petersson
It's About a month or so ago in Barcelona for the.
[02:39]
Viktor Petersson
As part of the AppSec conference, where we had a T conference, the Transparency Exchange API.
[02:46]
Viktor Petersson
And you were part of that, helping out, kind of shaping that out.
[02:48]
Viktor Petersson
So it was really good to meet you in person there.
[02:50]
Viktor Petersson
And that's kind of why I wanted to invite you on the show and do a deep dive on DependencyTrack, because I think there's a lot to uncover there.
[02:56]
Viktor Petersson
But how did you get involved with DependencyTrack in the first place?
[03:01]
Viktor Petersson
What led you down that path?
[03:02]
Niklas Düster
Oh, that's fun because I think it's the typical way that you get involved with open source projects.
[03:06]
Niklas Düster
Right.
[03:07]
Niklas Düster
I mentioned I was security engineer before the payment service company and were of course tasked with finding vulnerabilities in components that the company uses.
[03:17]
Niklas Düster
At the time we used dependency check.
[03:19]
Niklas Düster
So every single pipeline of our products ran this tool, it generated an HTML report and then we as the security team had to go to every single pipeline, look at that report, and then check for false positives, etc.
[03:32]
Niklas Düster
And at some point we just thought, this doesn't scale anymore.
[03:35]
Niklas Düster
And this was, I think, 2018.
[03:37]
Niklas Düster
So we did some research and then found the efforts of Steve Springett, who was just in the process of releasing or evolving DependencyTrack Publishing Cyclone DX as an alternative.
[03:49]
Niklas Düster
So we ended up adopting that.
[03:51]
Niklas Düster
And while were playing with the tool, implementing it in our pipelines, we noticed some things were missing.
[03:56]
Niklas Düster
We would like to have OpenID Connect, for example, so we didn't have to manage our own users all the time.
[04:03]
Niklas Düster
I end up implementing that, contributing it, I contributed more and more, and at some point Steve just said, hey, why don't you just join the project and help me out here?
[04:12]
Viktor Petersson
Good stuff.
[04:13]
Viktor Petersson
So obviously, having worn the security hats in companies before, you're no stranger to SBOMs.
[04:19]
Viktor Petersson
Or were you actually using SBOMs at that point?
[04:22]
Viktor Petersson
I mean, what did that security journey look like?
[04:25]
Viktor Petersson
You said 2018.
[04:26]
Viktor Petersson
That's kind of early days of SBOMs were there, like how that looked like back then.
[04:32]
Niklas Düster
So DependencyTrack was the reason why we adopted SBOMs in the first place.
[04:35]
Niklas Düster
We didn't use it before.
[04:37]
Niklas Düster
Yeah, but for us we basically used I think a Maven plugin back in the day or a PHP plugin.
[04:44]
Viktor Petersson
So you were a Java shop?
[04:45]
Niklas Düster
Mostly, yeah, but also PHP, JavaScript, a little bit of everything.
[04:49]
Niklas Düster
Luckily there were plugins available for build managers or package managers at that time, so integrating that was quite easy to do for us.
[04:57]
Niklas Düster
So we ended up generating SBOMs for every single build, upload them to DependencyTrack and then went from there.
[05:03]
Niklas Düster
Basically it was quite straightforward.
[05:06]
Niklas Düster
And if I may add, that as well.
[05:09]
Niklas Düster
So one of the biggest successes that we had was during the time of log 4J where everyone was just scrambling around.
[05:17]
Niklas Düster
So one of my colleagues ended up finding the announcement of log 4J of the vulnerability essentially on Twitter before there was a CVE for it.
[05:25]
Niklas Düster
And while everyone else was kind of scrambling, hey, where do we use log4j?
[05:29]
Niklas Düster
We were just able to go to DependencyTrack, search for that library name, and at least for the projects that generated SBoMS at the time, were able to immediately find where it was used, fix it.
[05:41]
Viktor Petersson
I mean, that's a success story, right?
[05:42]
Viktor Petersson
That's exactly like, I think post Log4j and the likes off.
[05:47]
Viktor Petersson
Right.
[05:47]
Viktor Petersson
That was when a lot of companies realized like, holy shit, we have no idea what goes into our software stack.
[05:53]
Viktor Petersson
Right?
[05:54]
Niklas Düster
Yeah.
[05:55]
Viktor Petersson
And it goes back to like the use case for how people want SBoM.
[05:59]
Viktor Petersson
That is usually one of the things where people like there is a sense of urgency because this is not the last time this will happen.
[06:05]
Viktor Petersson
This was the wake up call.
[06:07]
Viktor Petersson
But it will certainly happen again.
[06:08]
Viktor Petersson
Maybe not in that same domain, but somewhere in your stack.
[06:11]
Viktor Petersson
Right?
[06:12]
Niklas Düster
For sure, yes.
[06:14]
Viktor Petersson
So DependencyTrack, great tool for analyzing an SBoM, essentially.
[06:22]
Viktor Petersson
Talk me through kind of how people use DependencyTrack.
[06:27]
Viktor Petersson
You mentioned in your example you used in a CI CD pipeline.
[06:31]
Viktor Petersson
Is that the normal case where people basically upload SBOMs from their CI CD pipeline straight into DependencyTrack.
[06:37]
Viktor Petersson
Is that the workflow usually you usually see?
[06:40]
Niklas Düster
Yeah, that's the most prominent workflow, I would say.
[06:42]
Niklas Düster
It's also the most straightforward to set up given you already have a CI CD infrastructure.
[06:47]
Niklas Düster
Right.
[06:48]
Niklas Düster
We also have seen shops that have or security teams that run separate pipelines where they basically pull in all the repositories their company has or iterate over their GitLab instance, whatever else, and then run a generic SBoM generation tool.
[07:00]
Niklas Düster
Right.
[07:01]
Niklas Düster
Like CDX Gen, for example, is one.
[07:03]
Niklas Düster
Other people might use Sift or Trivi and then upload those SBOMs in bulk, let's say every.
[07:08]
Niklas Düster
Every day, every week, whatever.
[07:10]
Niklas Düster
So that is another workflow we know of.
[07:12]
Niklas Düster
People who manually are upload sboms, for example, for mergers and acquisitions, if you buy a company, you may ask them, hey, like, what is your maturity?
[07:21]
Niklas Düster
Like, can you provide an S BOM for us?
[07:23]
Niklas Düster
We can analyze what you have.
[07:25]
Niklas Düster
So people end uploading SBOMs manually there?
[07:30]
Viktor Petersson
Yeah, more like a one off operation than yes.
[07:33]
Niklas Düster
Most of the time, yes and yeah.
[07:36]
Viktor Petersson
Interesting so let's walk me through, let's take a step further.
[07:40]
Viktor Petersson
Further in that step.
[07:41]
Viktor Petersson
Right.
[07:41]
Viktor Petersson
So I've heard of companies in the financial sector, for instance, that heavily rely on DependencyTrack for vulnerability management.
[07:51]
Viktor Petersson
They even integrate it in their deployment pipelines.
[07:54]
Viktor Petersson
So not only do their CICD pipeline kind of send S pumps to DependencyTrack, but also they gate deployments based on the output of DependencyTrack.
[08:05]
Viktor Petersson
Right.
[08:07]
Viktor Petersson
And that opens up an interesting conversation because I'm curious about what your view on that is because there are.
[08:16]
Viktor Petersson
Just because the predator track found the vulnerability today doesn't mean it wasn't there yesterday on the last deploy.
[08:21]
Viktor Petersson
But all of a sudden now you're gating deployments.
[08:24]
Viktor Petersson
How do you see kind of like, I guess the output being used and how to best leverage that to kind of gate against.
[08:33]
Viktor Petersson
I mean, just because.
[08:36]
Viktor Petersson
Halting the deployment process just because you found the vulnerability necessarily not the best approach.
[08:39]
Viktor Petersson
So I'm curious but like what you see in terms of best practices, how to use these tools.
[08:44]
Niklas Düster
Okay, so first off, I would really not recommend to block like a deployment process just because a tool found something.
[08:50]
Niklas Düster
You can use that as a warning signal and you can probably have someone being notified about that to look into it.
[08:55]
Niklas Düster
But really as security team, if you block hotfix deployments, for example, people are going to hate you.
[09:01]
Niklas Düster
Like that is just straight up the reality.
[09:04]
Niklas Düster
So just please do not do it.
[09:06]
Niklas Düster
And of course, even tools or tools like DependencyTrack, they can have false positives, they can have bugs, sometimes it is again, I would not rely on those tools to block deployments.
[09:17]
Niklas Düster
Block CI builds, sure, do it if you want, but don't fail.
[09:22]
Niklas Düster
Yeah, yeah.
[09:23]
Niklas Düster
As soon as you can, like fail things.
[09:25]
Niklas Düster
Entering master, of course, or main.
[09:27]
Niklas Düster
The main branch.
[09:28]
Niklas Düster
Right.
[09:28]
Niklas Düster
But don't block deployments.
[09:29]
Niklas Düster
That, that would be my first recommendation.
[09:31]
Niklas Düster
I think the biggest value of DependencyTrack is really also in the name track.
[09:36]
Niklas Düster
You upload the SBoM you deploy and then while the application runs in your environment, DependencyTrack keeps reanalyzing that bom.
[09:45]
Niklas Düster
And if it finds something, you are being notified and then you can act on it.
[09:48]
Niklas Düster
That's really the main use case I would say for dependencytrack and that's also what I would recommend to do.
[09:54]
Viktor Petersson
Right, okay, very good point.
[09:56]
Viktor Petersson
Let's dive deeper into the pedestri track because I think I'm not the only one who.
[10:03]
Viktor Petersson
When I first started using the pedest track, I was a bit confused by.
[10:07]
Viktor Petersson
There's a lot of terminology.
[10:08]
Viktor Petersson
It's a complex product.
[10:09]
Viktor Petersson
Right.
[10:09]
Viktor Petersson
There's no doubt to that it is.
[10:11]
Viktor Petersson
Right.
[10:12]
Viktor Petersson
It has a lot of terminology that may mean different to different people.
[10:17]
Viktor Petersson
Right.
[10:17]
Viktor Petersson
Like maybe I don't put you on spot, but like can you go over the building blocks of DependencyTrack.
[10:25]
Viktor Petersson
How to best use it and set it up from zero, how you track projects, what are the best practices really?
[10:31]
Niklas Düster
Okay, so let's start with the building blocks.
[10:34]
Niklas Düster
The first major building block is your portfolio.
[10:36]
Niklas Düster
And the portfolio is just a collection of all your projects.
[10:41]
Niklas Düster
A project then is basically what you would describe in let's say an SBoM.
[10:45]
Niklas Düster
Right?
[10:46]
Niklas Düster
It's your application.
[10:47]
Niklas Düster
It could be a hardware piece, whatever have you, and then within that project you have components and this could be like your third party libraries, your first party libraries.
[10:56]
Niklas Düster
Again, whatever else.
[10:58]
Viktor Petersson
Sorry, are components the same as components in an SBOM?
[11:02]
Viktor Petersson
Or components are your top level component, so to speak in CycloneDX terminology.
[11:09]
Viktor Petersson
And then.
[11:10]
Viktor Petersson
Or like how does that matter?
[11:11]
Viktor Petersson
Because that's the problem that we've had the same conversation in the TEA project.
[11:15]
Niklas Düster
Right?
[11:15]
Viktor Petersson
Like what's the component?
[11:16]
Viktor Petersson
Because there are.
[11:17]
Viktor Petersson
So definition of what a component is, Right?
[11:19]
Niklas Düster
It is a very generic term to be fair.
[11:21]
Niklas Düster
Yes.
[11:21]
Niklas Düster
So how you map it to Cyclone DX is in Cyclone DX you have this metadata section, every bom and that metadata dot Component.
[11:30]
Viktor Petersson
Top level component.
[11:30]
Niklas Düster
Yes, top level component.
[11:32]
Niklas Düster
That is basically what you would map to a project DependencyTrackDependencyTrack.
[11:35]
Niklas Düster
And then everything in the components array of a Cyclone DX bill of materials would then be your list of components.
[11:45]
Viktor Petersson
Okay, now I'm with you.
[11:45]
Viktor Petersson
Okay, A bit confusing, but yeah.
[11:49]
Niklas Düster
It kind of DependencyTrack evolved side by side with SiteGroundX.
[11:53]
Niklas Düster
So it's not like the standard already existed and we could implement it one to one.
[11:56]
Niklas Düster
DependencyTrack, right, yeah.
[11:58]
Niklas Düster
There's also this little wrinkle here where if you upload a bom to DependencyTrack, the name of your top level component is not automatically set as your project name.
[12:09]
Niklas Düster
Right.
[12:09]
Niklas Düster
Because you can create a project ahead of time and then upload a BOM to it.
[12:13]
Viktor Petersson
Right.
[12:14]
Niklas Düster
And again people might want like human readable names in their projects.
[12:18]
Niklas Düster
Whereas in the SBOM it says Company X stats component.
[12:23]
Viktor Petersson
Yeah, yeah.
[12:24]
Niklas Düster
So there's this part.
[12:26]
Niklas Düster
Yeah, but yeah, you have portfolio, list of projects and then within the project you have components.
[12:32]
Niklas Düster
Now every single component can have vulnerabilities.
[12:35]
Niklas Düster
They can have what we call internally policy violations.
[12:39]
Niklas Düster
So you can set up DependencyTrack, certain conditions for which we will then flag the component.
[12:44]
Niklas Düster
One example of a policy would be users copy left license or Uses non copyleft license.
[12:53]
Niklas Düster
If we detect that, we will flag something that is visible in the UI and that you can then take action on.
[13:01]
Niklas Düster
Yeah, I mentioned findings.
[13:03]
Niklas Düster
The vulnerability findings are there.
[13:06]
Niklas Düster
We track.
[13:07]
Niklas Düster
So we mirror vulnerability databases, we mirror the NVD, we mirror optionally GitHub advisories and OSV.
[13:15]
Niklas Düster
You can view all of these things in the UI and you can also backtrack.
[13:18]
Niklas Düster
So if you search for a CVE, you can look up, hey, which project or which component is affected by that CVE.
[13:26]
Niklas Düster
For most things there are multiple ways to arrive at the same conclusion, if you will.
[13:30]
Viktor Petersson
Yeah, let's double down a little bit on licensing because that's a hot topic and B a complicated topic.
[13:39]
Viktor Petersson
Right?
[13:39]
Viktor Petersson
Because obviously you have the simple example of like this is Apache license.
[13:44]
Viktor Petersson
Cool, that's easy.
[13:45]
Viktor Petersson
But then we have far more complicated examples of license expressions, right, where you have multiple things how you built an engine around that.
[13:54]
Viktor Petersson
Because what does copyleft mean when you have these really complicated expressions which might have custom licenses and whatnot as well?
[14:04]
Viktor Petersson
How does that engine actually work behind the scenes?
[14:08]
Niklas Düster
Good question.
[14:09]
Niklas Düster
So the core engine really is quite simplistic.
[14:11]
Niklas Düster
So in SiteGroundX you can have an array of licenses and you can have, of course, license expressions.
[14:19]
Niklas Düster
The core engine of DependencyTrack mainly focuses on the license objects where the ID is known.
[14:25]
Niklas Düster
So the SPDX ID is known and we can flag based on that.
[14:28]
Niklas Düster
We do support expressions, but the expressions are then evaluated at runtime, basically.
[14:34]
Niklas Düster
So every time you check for a policy, we have to step through that expression and then check if your policy would be violated by the concluded license of that expression.
[14:47]
Viktor Petersson
Okay, yeah.
[14:48]
Viktor Petersson
Okay, yeah.
[14:49]
Viktor Petersson
So because that's hard to know ahead of time, like do that calculation.
[14:51]
Viktor Petersson
Right.
[14:52]
Viktor Petersson
So you have to essentially do it on the.
[14:54]
Viktor Petersson
At a calculator at runtime.
[14:55]
Viktor Petersson
Interesting.
[14:56]
Niklas Düster
But it is definitely something that we want to improve on.
[14:58]
Niklas Düster
Right?
[14:59]
Niklas Düster
Because ideally you can click on every single license in that expression or even the conclude license would be displayed in the UI for you.
[15:05]
Niklas Düster
So you can make your.
[15:08]
Niklas Düster
Or no, sorry.
[15:09]
Niklas Düster
So the expression, sometimes you get the choice between multiple licenses, right?
[15:13]
Niklas Düster
Because it.
[15:14]
Niklas Düster
Or mit.
[15:15]
Niklas Düster
And really to make an informed decision about whether this is a problem for you, someone needs to step up and say, I want choosing Apache 2 or I'm choosing MIT or whatever.
[15:24]
Niklas Düster
Right.
[15:25]
Niklas Düster
Someone needs to make this decision.
[15:27]
Niklas Düster
This is something we want to.
[15:28]
Viktor Petersson
Or matching your criteria that you're looking up for, like is it compatible with my expression?
[15:32]
Viktor Petersson
Or my, my criteria.
[15:34]
Niklas Düster
Right, correct.
[15:35]
Viktor Petersson
One of those two.
[15:36]
Viktor Petersson
Right.
[15:36]
Viktor Petersson
But yeah, it Gets a lot more complicated.
[15:38]
Viktor Petersson
Right.
[15:38]
Viktor Petersson
I think people are new to the SBOM world or are up for a world of pain when you start to realize how complicated this can get, right?
[15:45]
Niklas Düster
Oh yes.
[15:46]
Viktor Petersson
Can get, yes.
[15:49]
Viktor Petersson
And so you have this.
[15:51]
Viktor Petersson
And I guess one obvious thing is, at least to me, is when you run this in production, you start chucking S boms.
[16:00]
Viktor Petersson
Imagine you're a mid sized shop and you might deploy every day.
[16:05]
Viktor Petersson
Like maybe you deploy multiple times a day for every single microservice.
[16:09]
Viktor Petersson
You have a new SBOM every time you deploy.
[16:11]
Viktor Petersson
Right.
[16:13]
Viktor Petersson
That directory of SBOMs becomes very large very quickly.
[16:19]
Viktor Petersson
How, if you're going to run queries against that and vulnerability checks against that, how have you solved a the scalability side of that?
[16:28]
Viktor Petersson
Because that's the sheer data.
[16:29]
Viktor Petersson
Like we could talk like gigabytes or terabytes of SBOMs.
[16:34]
Viktor Petersson
Right.
[16:34]
Viktor Petersson
And sifting through that is very expensive.
[16:37]
Viktor Petersson
Talk me through the architectural decisions of how you scale DependencyTrack, really for the real world.
[16:43]
Niklas Düster
So there are two parts.
[16:45]
Niklas Düster
There's currently the major version 4 of DependencyTrack that most people use.
[16:48]
Niklas Düster
We are currently working on a version 5 that addresses some of these scalability issues that we identified.
[16:55]
Niklas Düster
But you mentioned microservices and deploy multiple times a day potentially.
[17:02]
Niklas Düster
One thing to Note first about DependencyTrack is DependencyTrack does not store the raw SBoM.
[17:08]
Niklas Düster
Dependency Check is a processing platform, which means it takes information out of the SBOM and then ingests or stores just this information in its database.
[17:16]
Niklas Düster
Even if you have like, let's say 1 gigabyte sbom file.
[17:19]
Niklas Düster
Right.
[17:19]
Niklas Düster
I hope you don't.
[17:20]
Niklas Düster
But if you have Depends guys, they do.
[17:24]
Niklas Düster
Oh my God.
[17:25]
Niklas Düster
Yeah.
[17:26]
Niklas Düster
Poor souls.
[17:28]
Niklas Düster
So even if you have a large SBOM like that, not all of this information might be relevant to DT or to DependencyTrack.
[17:33]
Niklas Düster
So we might end up just storing subsection or sub some of this information.
[17:41]
Niklas Düster
So you don't really acquire a huge amount of data even if you upload many sboms.
[17:50]
Viktor Petersson
Yeah, because I guess you could deduplicate most of the data.
[17:53]
Viktor Petersson
Right?
[17:54]
Niklas Düster
Yeah, that's also another point.
[17:55]
Niklas Düster
Like the quality of some SBOMs is really all over the place.
[17:58]
Niklas Düster
Some are just broken.
[17:59]
Niklas Düster
If you just insert them into your database and make them searchable like this, people will have a very bad experience finding stuff.
[18:06]
Niklas Düster
But yeah, it's mostly just a database, a relational database.
[18:10]
Niklas Düster
Behind the scenes components have their own table, projects have their own table, obviously vulnerabilities, etc.
[18:17]
Niklas Düster
And this really works quite well.
[18:20]
Niklas Düster
The biggest bottleneck that we had in version 4 is mostly around processing of things.
[18:26]
Niklas Düster
So if you upload a large SBoM that needs to be validated, it needs to be parsed and converted to internal model and analysis needs to happen in various forms.
[18:35]
Niklas Düster
Right.
[18:35]
Niklas Düster
Could be vulnerability analysis, license, whatever else.
[18:38]
Niklas Düster
These are all asynchronous, quite IO heavy tasks in some way.
[18:43]
Niklas Düster
And the version 4 architecture was basically an in memory event system.
[18:50]
Niklas Düster
So you could hammer the instance with lots of events, it would pile up in memory until it would be processed.
[18:56]
Niklas Düster
And that just has a limit.
[18:58]
Niklas Düster
Right.
[18:58]
Niklas Düster
If you deploy hundreds of thousands of times per day, you know, you end up with a huge queue.
[19:03]
Niklas Düster
Your memory usage goes all over the place.
[19:05]
Niklas Düster
So that is a problem that we are going to be addressing in version 5.
[19:09]
Niklas Düster
Sorry.
[19:12]
Niklas Düster
We investigated or we first tried to use an external message broker.
[19:17]
Niklas Düster
In this case it was Kafka.
[19:19]
Niklas Düster
We separated out a few services.
[19:21]
Niklas Düster
For example, vulnerability analysis doesn't have to happen in the main instance of DependencyTrack.
[19:26]
Niklas Düster
So it was a separate service that could survive mostly without database access.
[19:31]
Niklas Düster
So it will also not hammer the database.
[19:34]
Niklas Düster
We then later on decided we need to scale this back just because the message broker itself is such a huge operational burden, especially for newcomers.
[19:43]
Viktor Petersson
It's not a lean thing anymore.
[19:45]
Niklas Düster
Yeah, correct.
[19:46]
Niklas Düster
So now we will be dialing back to only requiring a Postgres database in version 5.
[19:52]
Niklas Düster
And we will like all the messaging asynchronous stuff will happen on a separate database if you so wish.
[19:57]
Niklas Düster
Like you can run the main application one database, scale that up to whatever data requirements you have and then for like all the messaging stuff, you can deploy a separate smaller instance that just doesn't interfere with the main operations of the application anymore.
[20:13]
Niklas Düster
And this is optional.
[20:15]
Viktor Petersson
Yeah.
[20:15]
Viktor Petersson
Does it scale horizontally though?
[20:16]
Viktor Petersson
Because right now it's one big monolith.
[20:19]
Viktor Petersson
Right?
[20:19]
Niklas Düster
Correct.
[20:20]
Niklas Düster
Yes, it will scale horizontally and it already does.
[20:23]
Niklas Düster
Like the version 5 that we have on GitHub right now already can scale horizontally and it does.
[20:28]
Niklas Düster
Like we have a pretty huge user of that version already and it runs with three instances in production at the moment.
[20:35]
Viktor Petersson
Yeah, okay, fantastic.
[20:37]
Viktor Petersson
No, it's a really cool project.
[20:41]
Viktor Petersson
All right.
[20:41]
Viktor Petersson
And you said postgres is where you store all the data sound choice.
[20:45]
Niklas Düster
Right.
[20:45]
Viktor Petersson
So that makes it very battle tested.
[20:49]
Viktor Petersson
All right, so we talked about SBOMs in decent track, but I think when we're speaking about DependencyTrack, one obvious thing we also need to talk about like what happens when a vulnerability is discovered.
[21:02]
Viktor Petersson
Right.
[21:03]
Viktor Petersson
Maybe we start the conversation but about talk about vex files and the likes of.
[21:09]
Viktor Petersson
Right.
[21:09]
Viktor Petersson
Like maybe for those unfamiliar, can you brief the audience on what are Vex files, how do they fit into the DependencyTrack ecosystem.
[21:17]
Niklas Düster
Okay, so VEX files are.
[21:18]
Niklas Düster
Or VEX just means Vulnerability Exploitability Exchange.
[21:21]
Niklas Düster
It's an.
[21:22]
Niklas Düster
I would say it's an attempt of going.
[21:26]
Niklas Düster
Making lights go off.
[21:27]
Niklas Düster
So whenever a vulnerability is found, a red light turns on in your UI.
[21:31]
Niklas Düster
Basically speaking, a Vex file can then describe if a vulnerability is found.
[21:35]
Niklas Düster
Is this actually exploitable?
[21:36]
Niklas Düster
Is this something you have to worry about?
[21:38]
Niklas Düster
And ideally, these VEX files would come from the vendor of the software.
[21:42]
Niklas Düster
Because.
[21:42]
Niklas Düster
Because only they can know is this actually affecting that given piece of software?
[21:47]
Niklas Düster
Right.
[21:48]
Niklas Düster
They can give various types of analyses, I think they're called.
[21:52]
Niklas Düster
Or states.
[21:53]
Niklas Düster
They can state this is not applicable because the code is not present at runtime or because I have certain guidelines in place, certain guardrails.
[22:01]
Niklas Düster
Sorry.
[22:03]
Niklas Düster
So they can make all these different assessments, provide you the Vex file and you as a consumer of the Vex file, can then turn the lights in your scanner off.
[22:11]
Niklas Düster
Figuratively speaking.
[22:14]
Viktor Petersson
Yeah, go ahead.
[22:15]
Viktor Petersson
Yeah.
[22:16]
Niklas Düster
DependencyTrack supports VEX files, so whenever DependencyCheck identifies a vulnerability, it creates a record in the database.
[22:23]
Niklas Düster
There is a table that you as a user can look at that provides all the information about the vulnerability.
[22:28]
Niklas Düster
And we provide you the option to upload a VEX file to apply analysis, which could then lead to a suppression of the.
[22:34]
Niklas Düster
Of the finding.
[22:37]
Viktor Petersson
So you can generate Excel from DependencyTrack and then you can federate out to however you see fit, which then, if you are shipping SBoMS to your customers, you would then in your SBoM point to that VEX file and say, here's an addendum essentially to the SBOM saying that yes, you will find this, but even if you do find this vulnerability when you scan this sbom, I ignore it because it's not impacted.
[23:05]
Viktor Petersson
Right.
[23:06]
Niklas Düster
You could, but Dependency Check currently does not automatically fetch VEX files that are mentioned in the.
[23:10]
Niklas Düster
In the BOM that you upload.
[23:11]
Niklas Düster
So this is currently a missing piece of automation, I would say.
[23:14]
Niklas Düster
Yeah.
[23:15]
Viktor Petersson
Okay.
[23:17]
Viktor Petersson
Does DependencyTrack pull in any external references?
[23:21]
Viktor Petersson
Because obviously that's a.
[23:22]
Viktor Petersson
It doesn't.
[23:23]
Viktor Petersson
Because that's a big concept in Cyclone.
[23:26]
Viktor Petersson
Right.
[23:26]
Viktor Petersson
Particular as you go in larger scale.
[23:30]
Viktor Petersson
I know Cyclone takes a very different approach than SPDX when it comes to what's considered an SBOM cycle.
[23:37]
Viktor Petersson
DX is heavily lenient on external references.
[23:40]
Viktor Petersson
So is that something that's coming in five or what's the roadmap for allowing lookup for external references?
[23:47]
Niklas Düster
I wouldn't say this currently on the roadmap but it is definitely planned.
[23:51]
Niklas Düster
So we know we have a gap there.
[23:52]
Niklas Düster
Especially if you talk about linking BOMs, right.
[23:55]
Niklas Düster
You can have a super bom, if you will, that then describes your entire system that links down to SBoMS of the services you deploy.
[24:01]
Niklas Düster
So, so we know this is a heavily asked for use case and we definitely want to implement that.
[24:06]
Niklas Düster
It is currently not on the roadmap per se, but yeah, we have plans.
[24:12]
Niklas Düster
I think a big part of complexity here is can you really trust the URLs that are being linked there in the SBoM?
[24:19]
Niklas Düster
So there's a lot of trust being.
[24:22]
Viktor Petersson
You need to provide a SHA, right, as part of the SBOM or some kind of algorithm that says you can fetch this file, but here's the hash for that file that you can validate against.
[24:31]
Viktor Petersson
Right?
[24:32]
Niklas Düster
Sure.
[24:32]
Niklas Düster
But even from the application security side of things, even if the SHA is valid, is even the like the artifact that is being described there, is that even trustworthy?
[24:39]
Niklas Düster
Right.
[24:40]
Niklas Düster
I can give you an SBoM and the SHA might match, but the artifact being described by the SHA might still be malicious.
[24:46]
Viktor Petersson
Now we come back to trust, right?
[24:48]
Viktor Petersson
Like ideally you need to have some, you need to do kind of some signing off the initial SBOMs and then you can trust.
[24:56]
Niklas Düster
Yeah, correct.
[24:57]
Niklas Düster
Yes.
[24:58]
Viktor Petersson
So if we, I mean I think if you're actually going to use SBOMs in the real world and actually rely it.
[25:03]
Viktor Petersson
I think attestation is kind of table sticks and honestly with GitHub these days it's so easy to do attestation.
[25:11]
Viktor Petersson
But yeah, that's.
[25:12]
Viktor Petersson
Yeah, if you do attestation and then, yeah, then you can trust the SHA and then you can trust the link, right?
[25:17]
Niklas Düster
Correct.
[25:18]
Viktor Petersson
Assuming there's no collision.
[25:19]
Viktor Petersson
But yes, generally speaking you can trust it.
[25:21]
Viktor Petersson
Right?
[25:21]
Viktor Petersson
Yeah, hopefully people are not using MD5 anymore.
[25:25]
Viktor Petersson
All right, cool.
[25:26]
Viktor Petersson
So we covered a bit of that.
[25:29]
Viktor Petersson
What I'm really interesting is understanding more the roadmap in general.
[25:34]
Viktor Petersson
So you mentioned five focus a lot on scalability.
[25:39]
Viktor Petersson
What else can we see in the fiber release?
[25:42]
Niklas Düster
So what we've built is that kind of ties into the whole VEX conversation.
[25:47]
Niklas Düster
What we have noticed is if you as a secure team, or even as a team lead whatever, you have many projects to.
[25:54]
Niklas Düster
Or many services to administer.
[25:56]
Niklas Düster
Right.
[25:57]
Niklas Düster
You might see the same vulnerabilities pop up over and over again.
[26:01]
Niklas Düster
Or you might just have false positives that will never be exploited by your services.
[26:05]
Niklas Düster
But.
[26:05]
Niklas Düster
But the scanners still find it, including DependencyTrack at some time.
[26:10]
Niklas Düster
And sometimes you cannot just like false positives are One thing, but also stuff not being exploitable.
[26:17]
Niklas Düster
And the problem with stuff not being exploitable is it is highly contextual.
[26:21]
Niklas Düster
You cannot at the system level, say always silence this specific vulnerability and call it a day.
[26:28]
Niklas Düster
Because then you might suppress true positives.
[26:30]
Niklas Düster
Right, True.
[26:31]
Niklas Düster
And this is where VEX kind of falls short.
[26:34]
Niklas Düster
Either you have to generate VEX files for all your internal services and someone has to constantly check is this still applicable?
[26:42]
Niklas Düster
Or you have one giant VEX file or one main VEX file that you upload to all your services to reduce the noise.
[26:49]
Niklas Düster
Right.
[26:50]
Niklas Düster
What this means is it's kind of, it's contextual.
[26:52]
Niklas Düster
You need more information to make this decision.
[26:55]
Niklas Düster
Can I suppress this?
[26:57]
Niklas Düster
So what we've built in version 5 is it kind of mixes into the policy engine stuff.
[27:04]
Niklas Düster
It is a way to attach a condition to essentially what is a VEX file.
[27:08]
Niklas Düster
So we will give you the option to provide a cell expression.
[27:11]
Niklas Düster
So cell is a common expression language.
[27:14]
Niklas Düster
It's from Google, I think it's used in Kubernetes as well for admission, webhooks, I think.
[27:20]
Viktor Petersson
Oh yeah.
[27:22]
Niklas Düster
So we allow you to use this expression language to attach a condition to your Vex statement and you can then say if this specific component is introduced through another component and it is only present in, or let's say it's present in a project tagged with a specific tag or that has specific property only, then apply the suppression so you get a lot more flexibility.
[27:45]
Viktor Petersson
So like if you have a shared component across multiple projects, for instance, you can say, well, I ignore this because we know what it's being used as part of.
[27:52]
Niklas Düster
Yeah, correct.
[27:54]
Niklas Düster
Just one example.
[27:54]
Niklas Düster
Right.
[27:55]
Niklas Düster
But you can get very creative with the expressions that you create and we think this can alleviate a lot of pain points that people currently have with like suppressing stuff that just doesn't matter.
[28:05]
Niklas Düster
But scanners still bring up including DependencyTrack.
[28:09]
Viktor Petersson
Right.
[28:09]
Niklas Düster
So this is one thing we are also heavily interested or planning to evolve DependencyTrack for more use cases beyond just software and hardware.
[28:19]
Niklas Düster
There is this concept of a cryptography bill of materials that we really want to support.
[28:24]
Niklas Düster
So which cryptographic algorithms do you use potentially?
[28:27]
Niklas Düster
Which certificates?
[28:28]
Niklas Düster
This is all risk.
[28:30]
Niklas Düster
Right.
[28:30]
Niklas Düster
And we like to look, or we want to look at DependencyTrack as a supply chain risk management platform.
[28:37]
Niklas Düster
Eventually it should not just be software and formats like SiteGroundX provide its information.
[28:44]
Niklas Düster
It would be nice to act on it.
[28:45]
Niklas Düster
Right.
[28:46]
Niklas Düster
So this is on the longer term roadmap as well.
[28:49]
Niklas Düster
We are currently also heavily implementing user management improvements so if you are a large organization, you cannot just give everyone access to every single project and that is something where DependencyTrack version 4 currently falls a little bit short.
[29:04]
Niklas Düster
There's a limited amount of access control mechanisms that you can use to prevent people from looking at projects, modifying projects.
[29:15]
Niklas Düster
So this is something we are heavily currently working on and I hope we can demo something very soon.
[29:21]
Niklas Düster
On that note, we have a community meeting every single month, which you are welcome to join.
[29:25]
Niklas Düster
Everyone watching this.
[29:27]
Niklas Düster
Yeah, maybe if you're interested, join us there.
[29:30]
Viktor Petersson
Absolutely.
[29:31]
Viktor Petersson
That's super cool.
[29:32]
Viktor Petersson
Let's talk about use cases and what are the craziest and I mean actually let me rephrase that question.
[29:43]
Viktor Petersson
Give us an order of magnitude of scale of how DependencyTrack being used both in terms of.
[29:48]
Viktor Petersson
I know it's an open source project so you might not have exact data, but how popular is DependencyTrack and amongst those people who are using it, like what's the scale of this?
[29:59]
Viktor Petersson
Like how large are the dependent track organizations or like use cases?
[30:03]
Niklas Düster
That is a very good question.
[30:05]
Niklas Düster
I would love to give you an accurate answer.
[30:06]
Niklas Düster
The problem is of course we are an open source project.
[30:09]
Niklas Düster
Up until recently we didn't have any telemetry at all.
[30:11]
Niklas Düster
Like we didn't know how many users actually use or deploy DependencyTrack.
[30:15]
Niklas Düster
But that being said, we, in the last major version, the last minor version, sorry we introduced just very basic telemetry that tells us which version you are using, right?
[30:25]
Niklas Düster
It's people can turn it off, they can see in the settings what is being sent, etc.
[30:29]
Niklas Düster
It's quite transparent.
[30:31]
Niklas Düster
And we released that version I think one or two months ago.
[30:34]
Niklas Düster
Since then, I think this week is the first week where we had on two consecutive days 3000 instances reporting back to us on the latest like minor version, right.
[30:46]
Niklas Düster
And people are sometimes reluctant to update to newer versions.
[30:50]
Niklas Düster
Subjectively I think those are quite good numbers like for adoption on its own.
[30:56]
Niklas Düster
Of course we hope this will increase over time as we roll up new releases.
[30:59]
Niklas Düster
Right.
[30:59]
Niklas Düster
And people really want to upgrade to that as per scale of individual instances.
[31:05]
Niklas Düster
I know like the majority of instances are probably mid sized, small to mid sized shops.
[31:10]
Niklas Düster
They might have hundreds to a few thousands of projects.
[31:14]
Niklas Düster
I am working for a, I can't call it customer, but a big user of DependencyTrack who's looking at over 100 thousands of projects who are like deployed in production that are constantly being scanned.
[31:26]
Niklas Düster
Right.
[31:27]
Niklas Düster
And we are like this is one example.
[31:31]
Niklas Düster
But large companies do have lots of services that they run production.
[31:36]
Niklas Düster
We know a Few I can't name drop, of course, but we know larger companies are running DependencyTrack.
[31:41]
Niklas Düster
They do not disclose to us how many projects they run on DependencyTrack, but we can guesstimate it will be in the same ballpark as that one big user.
[31:51]
Viktor Petersson
I know Monzo is a big shop of DependencyTrack, if I'm not wrong.
[31:55]
Niklas Düster
Right, yes, sorry, yeah, go ahead.
[31:59]
Niklas Düster
They also present at one of our community meetings about their experience with DependencyTrack.
[32:03]
Niklas Düster
They even mentioned like the cost of running it in their environment.
[32:06]
Niklas Düster
Yep.
[32:08]
Viktor Petersson
Right.
[32:08]
Viktor Petersson
And I think there are quite a few other banks.
[32:10]
Viktor Petersson
I think JP is one of the customers or users of as well.
[32:16]
Viktor Petersson
I believe I've heard.
[32:18]
Viktor Petersson
Yeah, you can't, you may or may not know, I don't know.
[32:22]
Viktor Petersson
But for those larger instances, like you say hundred thousand of components, what does it translate to?
[32:30]
Viktor Petersson
Like, let's go back to like scalability.
[32:33]
Viktor Petersson
What have you seen?
[32:34]
Viktor Petersson
Because obviously the big ones will.
[32:36]
Viktor Petersson
I mean this is how it tends to work even in open source.
[32:39]
Viktor Petersson
Right.
[32:39]
Viktor Petersson
Like if the real big guys, they will find their way to you if they want to have your support as they scale up.
[32:45]
Viktor Petersson
Right.
[32:45]
Viktor Petersson
So talk to me about some scalability scenarios where you've seen like what, I mean, 100,000 components.
[32:53]
Viktor Petersson
Yeah, maybe it's only one S.1 per component, but like give me some data on like scalability problems you've encountered so far.
[33:02]
Niklas Düster
Okay, so first off, what I meant was not components but like projects.
[33:06]
Niklas Düster
Right.
[33:06]
Niklas Düster
And every single project can have thousands of components.
[33:09]
Niklas Düster
So it is not unusual to end up with like millions of records in your components table, if you will.
[33:14]
Viktor Petersson
Right.
[33:16]
Niklas Düster
As per, like how people deal with it.
[33:18]
Niklas Düster
I think most people just end up like scaling the database until it doesn't work anymore.
[33:22]
Viktor Petersson
Right.
[33:23]
Niklas Düster
You can, you can crank up hardware pretty far if you want.
[33:26]
Niklas Düster
There have been some performance issues in the past that we addressed if people point them out to us.
[33:32]
Niklas Düster
But really my experience is that people tend to not reach out to us directly when they have performance issues.
[33:39]
Niklas Düster
What ends up happening is they think this is an open source project, we can just take the code, make adjustments to it as we need, as we please.
[33:45]
Niklas Düster
And this of course also includes the database schema.
[33:48]
Niklas Düster
If they end up finding something, a missing index or whatever, they just apply to their production database.
[33:53]
Niklas Düster
They may tell us about it, may contribute it back, but many simply don't.
[33:59]
Niklas Düster
That's my, that's my experience.
[34:02]
Viktor Petersson
That's fair enough.
[34:04]
Viktor Petersson
So the next thing I want to talk a bit about is, I mean a lot of it is still around SBOMs.
[34:04]
Viktor Petersson
So the next thing I want to talk a bit about is, I mean a lot of it is still around SBOMs.
[34:10]
Viktor Petersson
Right.
[34:10]
Viktor Petersson
So I.
[34:12]
Viktor Petersson
We have some pretty fast movements in the SBOMs world.
[34:16]
Viktor Petersson
We have Cyclone DX2 coming out shortly.
[34:19]
Viktor Petersson
I mean, obviously that must be something that you guys got your eyes on pretty carefully with Steve behind the roadmap.
[34:27]
Viktor Petersson
So talk to me about that.
[34:30]
Viktor Petersson
Talk to me about SPDX as well.
[34:33]
Viktor Petersson
Are you aiming for feature parity?
[34:35]
Viktor Petersson
What's the status today?
[34:37]
Viktor Petersson
Talk to me about how you see the landscape of formats or the format war, if you will.
[34:44]
Niklas Düster
Yeah, format war, that's interesting.
[34:47]
Niklas Düster
So SPDX is currently not supported by DependencyTrack.
[34:50]
Niklas Düster
There is a history around that.
[34:51]
Niklas Düster
SPDX was at one point supported.
[34:53]
Niklas Düster
It was removed.
[34:54]
Niklas Düster
I will not go into that specifically because it's kind of political, but there is currently an open issue in DependencyTrack to add SPDX version 3 support back and really I don't think we should be.
[35:06]
Niklas Düster
We should be bound to a specific format.
[35:09]
Niklas Düster
I would like everything to be agnostic.
[35:11]
Niklas Düster
That's the whole purpose of ingesting data from the BOMs into our own format.
[35:16]
Niklas Düster
Right.
[35:16]
Niklas Düster
So we don't have to rely on any specific format anymore.
[35:21]
Niklas Düster
So it is on the roadmap, if you will.
[35:23]
Niklas Düster
No one is actively working on it.
[35:24]
Niklas Düster
I think the SPDX folks themselves would be.
[35:27]
Niklas Düster
Are interested in contributing that to DependencyTrack.
[35:31]
Niklas Düster
It might just be a matter of having a good conversation between the two of us and figuring out how.
[35:37]
Viktor Petersson
Yeah, I mean, I had Alan Friedman on the show last year and I think to paraphrase what he said, like, if we're still talking about formats in five years, we've lost the battle of S BOMs.
[35:47]
Niklas Düster
Yeah, right, for sure.
[35:48]
Viktor Petersson
And I, I kind of agree with that.
[35:49]
Viktor Petersson
Right.
[35:50]
Viktor Petersson
Like it's just a way to express data slightly differently like that.
[35:53]
Viktor Petersson
It should just be an implementation detail, hopefully soon enough.
[35:57]
Viktor Petersson
Right.
[35:58]
Viktor Petersson
But even on Cyclone you were pretty late to add support for Cyclone 1.6.
[36:03]
Viktor Petersson
Even that took a while.
[36:06]
Viktor Petersson
Walk to me like, what are the complexities?
[36:07]
Viktor Petersson
Like what?
[36:08]
Viktor Petersson
Because I mean, you would expect, given that it's a OS project tightly coupled with Cyclone, what are the internals of like keeping up with the development there?
[36:18]
Niklas Düster
You mean on the DependencyTrack side of things or.
[36:20]
Viktor Petersson
Yes, yes, yes.
[36:22]
Niklas Düster
Okay, so whenever a new major version of CycloneDX comes out, generators adopt it very quickly.
[36:28]
Niklas Düster
So it doesn't take long for people to upload the BOM DependencyTrack and then discover it's breaking.
[36:28]
Niklas Düster
I think CDX gen was probably the first one to generate it.
[36:31]
Niklas Düster
So it doesn't take long for people to upload the Bomb 3 Pensi track and then discover it's breaking.
[36:36]
Viktor Petersson
Yeah, that's what I did.
[36:38]
Niklas Düster
Yeah, it's kind of so there are multiple parts to it.
[36:42]
Niklas Düster
The main thing why uploads might be failing is because we do schema validation.
[36:45]
Niklas Düster
Right?
[36:46]
Niklas Düster
We try to keep everything kind of enfor that it follows the spec.
[36:50]
Niklas Düster
And of course, if you do JSON schema validation, you need the schema to be present in order to validate against it.
[36:56]
Viktor Petersson
Yes.
[36:57]
Niklas Düster
And that schema is currently embedded into a CycloneDX library.
[37:01]
Niklas Düster
So before we can adopt new CycloneDX versions, the library needs to update.
[37:06]
Niklas Düster
It needs to update the embedded schema.
[37:08]
Niklas Düster
Only then can schema validation succeed and we can accept new SBOM files or files in that format.
[37:15]
Viktor Petersson
So that's the bottleneck.
[37:17]
Niklas Düster
That is one part of the story.
[37:19]
Niklas Düster
There might be some changes in the format itself that we need to adopt to.
[37:22]
Niklas Düster
So if there are new fields that users are interested in, we need to lay this out.
[37:25]
Niklas Düster
What do we need to support?
[37:26]
Niklas Düster
Additionally, was some field renamed, did some format change of a field or did the type change?
[37:33]
Niklas Düster
All of this needs to be prepared.
[37:34]
Niklas Düster
Obviously we cannot just allow people to upload documents and then present broken data.
[37:41]
Niklas Düster
Yeah, of course, yeah.
[37:42]
Niklas Düster
But otherwise that's pretty straightforward.
[37:47]
Viktor Petersson
I'm probably going to have Steve talk about Cyclone 2.0 on some future episode.
[37:55]
Viktor Petersson
Do you want to give some kind of hints on where you see things are heading with Cyclone 2.0 or how that's going to fit into or make the life easier for the likes of the bandage strike?
[38:05]
Niklas Düster
I have to admit, I'm not too deep into the CycloneDX 2.0 work at the moment.
[38:10]
Niklas Düster
I know there's a very big aspect or a very big priority on discoverability this time.
[38:17]
Niklas Düster
I think Steve is very keen on making the data not really format bound, but more like, yeah, discoverable in a sense.
[38:25]
Niklas Düster
I would love DependencyTrack to really leverage that to maybe offload some of the stuff that DependencyTrack currently does to something that is more standardized, centralized.
[38:36]
Niklas Düster
That's coming from SiteGround DX.
[38:37]
Niklas Düster
Yeah, right.
[38:39]
Viktor Petersson
And for uploading SBOMs, is it purely JSON or do you support XML as well?
[38:47]
Niklas Düster
We also support XML.
[38:48]
Niklas Düster
Yep.
[38:49]
Viktor Petersson
Okay.
[38:49]
Viktor Petersson
Okay, good.
[38:51]
Viktor Petersson
All right, so for people who wants to get involved with DependencyTrack, where can they kind of, where should they, who should they talk to, where should they get started, and so on.
[39:01]
Niklas Düster
So the first would obviously be dependencytrack.org, which is our main website.
[39:06]
Niklas Düster
The second would be the GitHub organization.
[39:08]
Niklas Düster
It's just called DependencyTrack.
[39:10]
Niklas Düster
On GitHub we have a community repository which includes the links to our previous community meetings.
[39:17]
Niklas Düster
There's a calendar invite if you want to join the community meetings in the future.
[39:20]
Niklas Düster
I guess there are lots of open issues in the DependencyTrack repository.
[39:25]
Niklas Düster
If you find something that you would like to work on, we have help wanted labels for all those issues.
[39:31]
Niklas Düster
You're more than welcome to contribute.
[39:34]
Niklas Düster
Otherwise we have a Slack channel in the owasp.
[39:36]
Niklas Düster
Slack.
[39:36]
Niklas Düster
It's hashtag dependency.
[39:38]
Niklas Düster
No project DependencyTrack.
[39:42]
Niklas Düster
Yeah.
[39:43]
Niklas Düster
So we are very open to anyone who's interested in the project to come.
[39:46]
Viktor Petersson
In and say hello and the stack you're working in Java and any other skills people should be like when you look for contributors.
[39:55]
Niklas Düster
Yeah.
[39:55]
Niklas Düster
So one very big aspect that we really need more help on is user experience.
[39:59]
Niklas Düster
Front end work.
[40:01]
Niklas Düster
I have to admit I'm very much a backend guy.
[40:03]
Niklas Düster
I'm terrible at ui.
[40:05]
Niklas Düster
Steve was a lot better than me on this aspect.
[40:07]
Niklas Düster
Steve is very visionary when it comes to designing UX and I don't have that skill, to be honest.
[40:13]
Niklas Düster
So if Anyone looks at DependencyTrack thinks oh my God, what is this?
[40:18]
Niklas Düster
And knows how to improve the user experience, we would be very happy to have you.
[40:22]
Niklas Düster
But of course, if you know front end Vue JS JavaScript we have that stack as well for the backend work.
[40:28]
Niklas Düster
It's mostly Java as you mentioned.
[40:30]
Niklas Düster
It's Maven Docker.
[40:33]
Niklas Düster
Yeah, that's pretty much it.
[40:35]
Niklas Düster
Thankful for every contribution.
[40:37]
Viktor Petersson
Perfect.
[40:38]
Viktor Petersson
Nicholas, this has been super helpful.
[40:40]
Viktor Petersson
I think it has helped people navigate the pentacy track.
[40:44]
Viktor Petersson
I think it gives a quick intro to it, help avoid common pitfalls, hopefully when they are starting to use DependencyTrack.
[40:53]
Viktor Petersson
So again, thank you for coming on the show and really appreciate it.
[40:57]
Viktor Petersson
Thank you so much.
[40:57]
Niklas Düster
Thank you for having me.
[40:58]
Niklas Düster
It was a big honor.
[40:59]
Niklas Düster
Thank you.
[40:59]
Niklas Düster
Thank you.
[41:00]
Viktor Petersson
Cheers.