These could be external advertisements. So they could be kind of you click them and they redirect you to another site. And the process of logging that and kind of tracking the monetary, like the clicks and like how much money that's actually generated would all be done by open source projects.
Rather than, you know, if we were to sit down and say, I want to design a new website from scratch. And I want it to look like this. Like you're not going to have to start actually from scratch. You're going to start implementing different kinds of open source packages in order to automate a lot of the work that goes into this.
So what that actually means in terms of reality is that when you actually think of your application and how it functions, it's like quite a large chunk of like, data and ability and raw power that this application has as a web app. But in reality, like the actual things which you're contributing to it and the ways which you're manipulating things is like a very small part of the overall picture for how data is flowing throughout the application.
And it's really useful to be able to do this in the way that we've explained how you can quickly boot something up or quickly replicate something like this, and get that function across. But it also means that you don't have to own the entirety of this site in the sense that you don't have to own how the basket works and how the Elasticsearch works. If there's any kind of issue with it from like a... like you get bugs or you get some kind of like security vulnerability in it, you yourself as the developer who built that website isn't the one ultimate who's going to be responsible for everything because it's community-driven.
So, it's something where, you know, you get the ability to crowd source that kind of tech help and that kind of support as far as actually like fixing things goes. But that also works out like quite scary in a way, which we'll talk about later.
This is a little bit about how you basically can see NPM and open-source in general has taken off over the last couple of years. You can see NPM in particular is gaining a lot of traction as far as the amount of new packages that are being created in that region each year, where at the moment, you've got something like 1.8 million open-source packages which are currently in use. Obviously, then you have vulnerabilities inside of those as well.
What this stat is here is it's representative of how many vulnerabilities can actually be found in indirect dependencies. What I mean by that is specifically... If you bear in mind that you can find 86% of all vulnerabilities are found in indirect dependencies, if I show this slide, it should be clear what a dependency is. In this case, I've got a package being used called express, which calls in accepts, which calls in MIME, which calls in MIME DB.
What this is effectively like, if you can imagine, let's say I'm a kid, and my parents are out of town for the weekend, and I'm inviting over a friend. That could be my express in this case. I trust him. I know him really well ever since childhood. I feel comfortable letting him into my house. Then he brings over a plus one. I'm like, oh, okay, I trust his judgment. He vouches for this character, I'll let him in. Then the plus one brings over a plus one, and then the plus ones bring over another plus one. Then you end up with this series of escalating uncertainty with regards to what you're actually bringing into your application and what you're not actually being able to see about and have confidence in their security standards and their practices overall.
That's basically what's happening when we see like, when we look into all the vulnerabilities here, where you may trust the parent dependency which you've got inside of your package. I may trust express in this case, but the reality is that I can't see all of the transit dependencies which express will be pulling in very easily. I also can't vouch and look into the security for all of those. You ultimately end up with a situation where you just have a lot of uncertainty in the overall security of that application.
The question is then, we've taken into the consideration like what the risks are with using open source, and we've considered taking into the benefits of using it as well. The question is now like, what is the overall security posture with using open source? Effectively, in the same way which you have crowdsource value out of open source in the same way that everyone's contributing to these projects, you also have people contributing towards databases which uphold information around vulnerabilities.
Effectively, the answer to how can we trust things is basically you trust others again in order to provide open source vulnerability data. People are very open with doing this and they're very proactive with it as well. But it has to be done in a way which you can actually like you have visibility of as well because you're not just going to sit there and kind of watch all the threads and order the different packages which you're using on GitHub because nobody has time for that. You have a life at the end of the day.
We'll go into a little bit about what that actually looks like with Sneak in general, and there are other tools and ways of doing that, but I'll save that to the end. We'll leave that to the end in the meantime.
At the moment, what we're going to do is go into a little bit of Q&A or a little bit of a guess the number kind of thing. So the question is here, what is the percentage of packages on npm that have no dependencies and no dependents? So these are in this case packages which just sit on their own and then they don't have, okay, 6% coming out from pizza, 12%. So these are things which are just independent, you don't need anything to run them, and they aren't used by anyone else. So 28% of packages are actually not using any kind of dependence and they also don't have any dependencies based upon them. But these are the things which aren't necessarily gaining a lot of traction. So these aren't the most popular packages.
Comments