What does the security testing term mean at all? According to Wikipedia, it is an assessment of the software vulnerability to various attacks.
What kind of attacks imply here?
Primarily it is an illegal breach of cybercriminals into the system aiming at extracting data about users or obtaining benefits for their own needs with the help of vulnerabilities present in the software code.
Let’s see which hacking methods are popular nowadays and what dangers and risks they entail.
So how does it even happen that programmers write code with vulnerabilities, testers test it, and these weaknesses remain unrevealed in the process of creating software?
The thing is that both developers and testers use one approach in development and testing while hackers utilize another one when using the software.
The developer takes care of software functionality and operability.
The quality assurance engineer verifies whether the program works correctly and according to the client’s requirements.
Hacker, on the contrary, aims to make a program work not the way it was intended to be. Finding out the ways to get a response from the program containing hidden data, or to send data to the server that it shouldn’t receive from a regular user are some primary goals. If such purposes have been achieved and a hacker gets access to the hidden data by some workaround or a loophole in the software, this is called hacking or finding vulnerabilities.
But as you know, for every action, there is an equal and opposite reaction. There are security experts (the so-called White Hat hackers) who are aware of the most popular system vulnerabilities that the Black Hat hackers most often use.
After testing the system, they can provide a report or recommendations on how to improve its security, get rid of weaknesses, reduce the risks of confidential user data loss for the company and limit unauthorized access.
What Are the Most Widespread System Vulnerabilities?
The OWASP rating (Open Web Application Security Project) has allocated the top 10 software vulnerabilities for 2020. Let’s uncover each of them one by one!
# 1. Injection
Injection flaws are very widespread, especially in legacy code. It can be SQL, XXE, XML insertion into the SQL, LDAP, XPath, or NoSQL queries, OS commands, XML parsers, SMTP headers, expression languages, and ORM queries or the encrypted requests sent to the server database.
Code examination with scanners and fuzzers may easily locate injection flaws.
Injection leads to data loss, corruption, or exposure to unauthorized parties, loss of accountability, access denial, or even to a complete host takeover.
The impact on the business activities business may vary depending on the app and data needs.
# 2. Broken Authentication
A weak authentication vulnerability could allow an attacker to use manual and/or automatic media while trying to gain control of any account that he/she wants in the system. The even worse situation is gaining complete control over the system.
To compromise the whole system gaining access to one administrator account or just a few random ones would be enough.
Such actions result in possible money laundering, social security fraud, and identity theft. Also, very sensitive legal information may be disclosed in these cases.
#3. Sensitive Data Exposure
Confidential data disclosure is one of the most common vulnerabilities. It consists of compromising data that should have been protected.
Examples of sensitive data: passwords, credit card numbers, permissions (such as system administrator privileges), social security numbers, health data, personal information.
#4. XML External Entities
An XML external entity app attack parses XML input. It happens when XML input containing a reference to an external entity is processed by a poorly configured XML parser. Most of such parsers are vulnerable to XXE attacks by default. That’s why the responsibility for ensuring that the application has no such vulnerability falls mainly upon the developer.
#5. Broken Access Control
While ensuring the website security, the access control means restricting access to sections or pages that visitors can visit, depending on their needs.
For example, if you own an online store, you probably need access to the admin panel to add new products or set up a promotion for the upcoming holidays. However, hardly anyone else will need it. If ordinary visitors can access your login page, your online store becomes fragile to attacks. This is a major problem for almost all popular content management systems (CMS) these days. By default, they provide access to the admin panel from any place in the world.
#6. Security Misconfigurations
Hackers are always looking for ways to break-in websites. Improperly configured security can facilitate the task. Here are some examples of what hackers usually try to use to gain unauthorized access: corrected flaws, default configurations, unused pages, unprotected files and directories, unnecessary services.
One of the most common webmasters’ pitfalls is the preservation of the default CMS settings.
Modern CMS applications (albeit easy to use) can be complex in terms of security for end-users. Of course, the most common attacks are fully automated. Many of these attacks rely on the assumption that users use only default settings. This means that you can avoid a large number of attacks by changing the default settings when installing CMS. For example, some CMS applications allow users to make changes like installing any extensions they want, etc.
There are settings that give you an opportunity to manage comments, users, and user information display. File permissions are another example of a default setting that can be enhanced.
#7. Cross-Site Scripting
Cross Site Scripting (XSS) is a widespread vulnerability that affects many web applications. XSS attacks inject client-side malicious scripts into a website and use the website as a distribution method. The danger of XSS is that it allows an attacker to inject content into a website and change the way it is displayed, causing the victim’s browser to execute the code provided by the attacker when the page loads.
XSS is present in about two-thirds of all applications. Typically, such vulnerabilities require the user to initiate some type of interaction through social engineering or visiting a specific page. If the XSS vulnerability is not fixed, it can be very dangerous for any website.
#8. Insecure Deserialization
Every web developer must come to terms with the fact that attackers/security researchers will try to play with everything that interacts with their application – from URLs to serialized objects. In computer science, an object is a data structure; in other words, a way to structure data.
Here are some key concepts for better understanding.
The serialization process converts objects to byte strings. The deserialization process converts byte strings to objects.
One of the attack vectors presented by OWASP regarding this security risk was a super cookie that contains serialized information about the registered user. The user role was specified in this cookie.
If an attacker can successfully deserialize an object, then modify the object to assign an administrator role to it, and serialize it again. This set of actions can jeopardize the entire web application.
#9. Components with Known Vulnerabilities
Mostly it requires using open source components or documents. This vulnerability is exploited by hackers who want to access documentation that is openly used in a project. More than 80% of all software includes at least some open source components. It makes third-party components an attractive target for potential hackers.
#10. Insufficient Logging and Monitoring
Registration and monitoring go hand in hand. Although insufficient logging and monitoring are too abstract to be a direct attack vector, they do affect the detection and response to each violation. If incidents with the web application and server are not properly tracked, you can easily skip the suspicious activity. If security threats are not correctly recorded – or the logs are poorly stored or difficult to access – then these shortcomings will be ignored.
Security testing is a major type of app testing. It makes sure whether confidential data remains confidential by all means. Some security-related bugs can only be detected by highly experienced quality assurance engineers.
In this article, we’ve uncovered the most widespread software vulnerabilities today. A danger foreseen is a danger avoided, you know!