OWASP Top 10: 2021 Edition

OWASP Top 10 Jinson Varghese

The OWASP Top 10 is a list of the most critical web application security risks as determined by the Open Web Application Security Project (OWASP). The list is updated every three to four years, with the latest version being the OWASP Top 10 – 2021.

Let’s now look into the top 10 vulnerabilities in the 2021 edition of OWASP Top 10.

#1 – Broken Access Control

Broken Access Control, also known as insecure direct object references, is a common vulnerability in web applications. It occurs when an application does not properly restrict access to sensitive resources, allowing unauthorized users to gain access to them.

This vulnerability can be exploited by an attacker to gain unauthorized access to sensitive data, such as user accounts, financial information, or confidential documents. In some cases, it can even allow the attacker to modify or delete this data.

One common way that broken access control is exploited is through the use of URL manipulation. For example, an attacker may be able to access a user’s account information by simply changing the ID number in the URL. For example, if the URL to access a user’s account information is “www.example.com/users/12345”, the attacker could try changing the ID number to “www.example.com/users/54321” to access a different user’s account.

Another way that broken access control is exploited is through the use of privileged accounts. If an application does not properly restrict access to certain accounts, an attacker may be able to gain access to them and use their privileges to access sensitive resources.

To prevent broken access control, web developers must ensure that their applications properly restrict access to sensitive resources. This can be done through the use of authentication and authorization mechanisms, such as user accounts and permissions. Additionally, applications should properly validate user input and sanitize URLs to prevent attackers from manipulating them.

In summary, broken access control is a common vulnerability in web applications that can be exploited by attackers to gain unauthorized access to sensitive data. By implementing proper authentication and authorization mechanisms, as well as input validation and sanitization, web developers can help prevent this vulnerability and keep their users’ data secure.

#2 – Cryptographic Failures

Cryptographic failures refer to vulnerabilities in cryptographic systems that allow attackers to compromise the security of the system. These vulnerabilities can arise from a variety of causes, including poor design, implementation errors, or the use of outdated or weak cryptographic algorithms.

One common example of a cryptographic failure is the use of weak cryptographic keys. In cryptography, keys are used to encrypt and decrypt data, and the strength of the keys directly affects the security of the system. If a system uses weak keys, it can be easily broken by an attacker, allowing them to gain access to sensitive information.

Another example of a cryptographic failure is the use of outdated or insecure cryptographic algorithms. As technology and computing power evolve, older cryptographic algorithms may become vulnerable to attack. If a system uses an outdated or insecure algorithm, an attacker may be able to break it and gain access to sensitive data.

Cryptographic failures can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these failures, it is important for organizations to regularly review and update their cryptographic systems, using strong, secure algorithms and regularly rotating keys to maintain their security.

In summary, cryptographic failures are vulnerabilities in cryptographic systems that can allow attackers to compromise the security of the system. By using strong, secure algorithms and regularly rotating keys, organizations can help prevent these failures and keep their sensitive data safe.

#3 – Injection

Injection vulnerabilities refer to a type of security flaw that occurs when an attacker is able to insert malicious code into a web application. This code is then executed by the application, allowing the attacker to gain access to sensitive data or perform other malicious actions.

One common example of an injection vulnerability is SQL injection, which occurs when an attacker is able to insert malicious SQL code into a web application. This code is then executed by the application, allowing the attacker to gain access to sensitive information stored in the database, such as user accounts and passwords.

Another example of an injection vulnerability is cross-site scripting (XSS), which occurs when an attacker is able to insert malicious JavaScript code into a web application. This code is then executed by the application, allowing the attacker to perform various actions, such as stealing user data or redirecting users to malicious websites.

Injection vulnerabilities can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected web application. To prevent these vulnerabilities, it is important for organizations to properly validate user input and sanitize it to remove any potentially malicious code.

In summary, injection vulnerabilities are a type of security flaw that occurs when an attacker is able to insert malicious code into a web application. By properly validating and sanitizing user input, organizations can help prevent these vulnerabilities and keep their sensitive data safe.

#4 – Insecure Design

Insecure design vulnerabilities refer to weaknesses in the design of a system or application that can compromise its security. These vulnerabilities can arise from a variety of causes, including the lack of security considerations during the design phase, the use of outdated or insecure design patterns, or the failure to properly implement security controls.

One common example of an insecure design vulnerability is the failure to properly implement authentication and authorization mechanisms. If a system does not properly verify the identity of users and restrict access to sensitive resources, it may be vulnerable to attack. An attacker could exploit this vulnerability to gain unauthorized access to sensitive data or perform other malicious actions.

Another example of an insecure design vulnerability is the lack of input validation and sanitization. If a system does not properly validate and sanitize user input, it may be vulnerable to injection attacks, in which an attacker is able to insert malicious code into the system. This code could then be executed by the system, allowing the attacker to gain access to sensitive data or perform other malicious actions.

Insecure design vulnerabilities can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these vulnerabilities, it is important for organizations to consider security during the design phase and implement robust authentication, authorization, and input validation and sanitization mechanisms.

In summary, insecure design vulnerabilities are weaknesses in the design of a system or application that can compromise its security. By considering security during the design phase and implementing robust security controls, organizations can help prevent these vulnerabilities and keep their sensitive data safe.

#5 – Security Misconfiguration

Security misconfiguration vulnerabilities refer to weaknesses in the configuration of a system or application that can compromise its security. These vulnerabilities can arise from a variety of causes, including the failure to properly configure security controls, the use of insecure default settings, or the lack of regular security updates.

One common example of a security misconfiguration vulnerability is the use of default passwords. Many systems and applications come with default passwords that are well-known and easily guessed by attackers. If these default passwords are not changed, an attacker could easily gain access to the system or application and compromise its security.

Another example of a security misconfiguration vulnerability is the failure to properly configure access controls. If a system or application does not properly restrict access to sensitive resources, it may be vulnerable to attack. An attacker could exploit this vulnerability to gain unauthorized access to sensitive data or perform other malicious actions.

Security misconfiguration vulnerabilities can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these vulnerabilities, it is important for organizations to properly configure security controls, change default passwords, and regularly update their systems and applications to ensure their security.

In summary, security misconfiguration vulnerabilities are weaknesses in the configuration of a system or application that can compromise its security. By properly configuring security controls, changing default passwords, and regularly updating systems and applications, organizations can help prevent these vulnerabilities and keep their sensitive data safe.

#6 – Vulnerable and Outdated Components

Vulnerable and outdated components refer to components of a system or application that are no longer supported or have known security vulnerabilities. These components can include libraries, frameworks, and other software modules that are used by the system or application.

One common example of vulnerable and outdated components is the use of outdated software libraries. Many systems and applications rely on third-party libraries to provide certain functionality, such as encryption or data storage. If these libraries are outdated or no longer supported, they may contain known security vulnerabilities that can be exploited by attackers.

Another example of vulnerable and outdated components is the use of unsupported software frameworks. Many systems and applications are built using software frameworks, such as Java or .NET, which provide a set of reusable components and tools for building applications. If these frameworks are no longer supported, they may contain vulnerabilities that can be exploited by attackers.

Vulnerable and outdated components can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these vulnerabilities, it is important for organizations to regularly review and update their components, replacing outdated or unsupported libraries and frameworks with newer, more secure versions.

In summary, vulnerable and outdated components are components of a system or application that are no longer supported or have known security vulnerabilities. By regularly reviewing and updating these components, organizations can help prevent vulnerabilities and keep their sensitive data safe.

#7 – Identification and Authentication Failures

Identification and authentication failures refer to vulnerabilities in the identification and authentication mechanisms of a system or application. These vulnerabilities can arise from a variety of causes, including the use of weak or easily guessable passwords, the failure to properly validate user credentials, or the lack of secure authentication methods.

One common example of an identification and authentication failure is the use of weak passwords. If a system or application allows users to choose passwords that are easy to guess or can be easily cracked using brute-force attacks, it may be vulnerable to attack. An attacker could exploit this vulnerability to gain access to sensitive data or perform other malicious actions.

Another example of an identification and authentication failure is the failure to properly validate user credentials. If a system or application does not properly verify the identity of users, it may be vulnerable to attack. An attacker could exploit this vulnerability by providing fake or stolen credentials to gain unauthorized access to sensitive data or perform other malicious actions.

Identification and authentication failures can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these vulnerabilities, it is important for organizations to implement robust identification and authentication mechanisms, including the use of strong passwords and secure authentication methods.

In summary, identification and authentication failures are vulnerabilities in the identification and authentication mechanisms of a system or application. By implementing strong passwords and secure authentication methods, organizations can help prevent these vulnerabilities and keep their sensitive data safe.

#8 – Software and Data Integrity Failures

Software and data integrity failures refer to vulnerabilities in the integrity of a system or application. These vulnerabilities can arise from a variety of causes, including the failure to properly verify the authenticity of software or data, the lack of data backup and recovery mechanisms, or the use of insecure storage mechanisms.

One common example of a software and data integrity failure is the failure to properly verify the authenticity of software or data. If a system or application does not properly verify the origin or integrity of the software or data it uses, it may be vulnerable to attack. An attacker could exploit this vulnerability by introducing fake or malicious software or data, which could compromise the security of the system or application.

Another example of a software and data integrity failure is the lack of data backup and recovery mechanisms. If a system or application does not have adequate data backup and recovery mechanisms, it may be vulnerable to data loss or corruption. This could compromise the integrity of the data and potentially lead to the loss of sensitive information.

Software and data integrity failures can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these vulnerabilities, it is important for organizations to implement robust data integrity mechanisms, including the use of cryptographic hashes to verify the authenticity of software and data, as well as data backup and recovery mechanisms to prevent data loss.

In summary, software and data integrity failures are vulnerabilities in the integrity of a system or application. By implementing robust data integrity mechanisms, organizations can help prevent these vulnerabilities and keep their sensitive data safe.

#9 – Security Logging and Monitoring Failures

Security logging and monitoring failures refer to vulnerabilities in the security logging and monitoring mechanisms of a system or application. These vulnerabilities can arise from a variety of causes, including the lack of adequate security logs, the failure to properly monitor security events, or the lack of response mechanisms to security incidents.

One common example of a security logging and monitoring failure is the lack of adequate security logs. If a system or application does not maintain adequate security logs, it may be difficult to detect and respond to security incidents. This could allow an attacker to gain access to sensitive data or perform other malicious actions without being detected.

Another example of a security logging and monitoring failure is the failure to properly monitor security events. If a system or application does not have mechanisms in place to monitor security events, it may be difficult to detect security incidents in a timely manner. This could allow an attacker to gain access to sensitive data or perform other malicious actions without being detected.

Security logging and monitoring failures can have serious consequences, including the compromise of sensitive data and the loss of trust in the affected system. To prevent these vulnerabilities, it is important for organizations to implement robust security logging and monitoring mechanisms, including the maintenance of adequate security logs and the monitoring of security events in real-time.

In summary, security logging and monitoring failures are vulnerabilities in the security logging and monitoring mechanisms of a system or application. By implementing robust security logging and monitoring mechanisms, organizations can help prevent these vulnerabilities and keep their sensitive data safe.

#10 – Server-Side Request Forgery

Server-side request forgery (SSRF) is a type of security vulnerability that allows an attacker to send malicious requests to a server from a vulnerable application. This vulnerability can be exploited by an attacker to gain access to sensitive information or perform other malicious actions on the server.

One common way that SSRF is exploited is by sending a request to a server that contains a malicious URL. The vulnerable application will then send this URL to the server, allowing the attacker to gain access to sensitive information or perform other malicious actions.

Another way that SSRF is exploited is by sending a request to a server that contains a malicious file. The vulnerable application will then send this file to the server, allowing the attacker to execute arbitrary code on the server and potentially compromise its security.

To prevent SSRF vulnerabilities, it is important for organizations to properly validate user input and sanitize URLs and files to remove any potentially malicious content. Additionally, applications should implement mechanisms to restrict access to sensitive resources and prevent unauthorized requests from being sent to the server.

In summary, SSRF is a type of security vulnerability that allows an attacker to send malicious requests to a server from a vulnerable application. By properly validating and sanitizing user input, and implementing access controls, organizations can help prevent SSRF vulnerabilities and keep their sensitive data safe.


Disclaimer: This article is part of an experiment with a tool. It will get updated as and when required.

Written by
Jinson Varghese
Join the discussion