And you see that the list, both the order and the elements of the list are changing. Which means that this list is evolving over and over. Like all the time. Because new issues or new risks are appearing and we have to make our apps more and more secure based on changing environments.
And there is also a big, very big resource of knowledge in terms of making your app more secure on OWASP's website, which is basically a list of checklists, like cheat sheets, that you can review to see if your application is secure in a certain area. So, for example, we have cheat sheet for REST applications, GraphQL applications, applications built with Ruby and so on and so on.
So, let's take a look at some of these security risks. We won't be taking a look at all of them, we'll be focusing only on a few selected ones. So, first of all, we have injections. And the two main attacks here, or risks, are cross-site scripting and SQL injections. And in terms of SQL injections, you might think that this is a very old vulnerability and it doesn't appear anymore, but you would be surprised how many production websites have this kind of vulnerability still.
In both cases, the idea is that the attacker is injecting some kind of malicious code in either SQL, so our database, or in the applications through JavaScript, for example, and then this malicious code is basically getting the data getting the shouldn't have access to, like users, passwords, stuff like that. Going further, we have broken access control. Access control means that our application will allow to get certain data if we are properly authorized.
So, for example, we are logged in, or we are part of organization, or group, that has access to certain resource. So, broken access control means that the attacker can have access to the data that basically he or she shouldn't have. And my favorite one, which is DOS, or DDOS, which means denial of service, means that our application is served on a server that can serve or handle only a certain amount of requests. So, if attacker manages to send too many requests, our application won't be able to serve the responses to these requests and basically give up.
So, we have DOS, which is denial of service, and DDOS, which is like the distributed denial of service, which is the routing is basically distributed between many different so-called zombie devices. It can be mobile phones, it can be desktop devices, and so on and so on. And I have one interesting bonus case, which is called malicious NPM packages and dependency confusion. This can happen for anyone who is building web applications nowadays.
So, how it works is basically we have a user that is supposed to fetch a package that is stored in a private registry. Like private NPM registry. It could be something else. The idea is that this registry is like a private one, and only authorized users should have access to it, should be able to fetch this package. So, what the user does instead unintentionally is to fetch the package with the same name, but from the public registry, like the public NPM. And this package can contain a malicious code. And this is a real case. And this is, unfortunately, this is in Polish.
Comments