The OWASP Top 10 is a regularly-updated report outlining the top 10 list of security concerns for web application security.
The report is put together by a team of security experts around the world. OWASP refers to the Top 10 as an 'awareness document' and they recommend all companies incorporate the report's findings into the cybersecurity processes.
The Open Web Application Security Project (OWASP) is an international non-profit organization dedicated to improving web application security.
OWASP produces freely-available articles, methodologies, documentation, tools, and technologies, making it possible for anyone to improve their web application security.
The OWASP Top 10 is one of their most well-known projects.
Injection attacks happen when unvalidated or untrusted data is sent to a code interpreter through form input or another data submission field to a web application.
Successful injection attacks can result in data leaks, data corruption, data breaches, loss of accountability, and denial of access.
Almost any source of data can be an injection vector including environment variables, parameters, external and internal web services, and all types of users.
For example, an attacker could inject SQL code into a form that expects a plain text username. If the web application developer has not properly sanitized the input, it could result in the SQL code being executed. This is known as an SQL injection attack.
SQL injection is not the only injection flaw. Common vulnerabilities include XPath, NoSQL, LDAP injections, as well as OS commands, XML parsers, SMTP headers, expression languages, and ORM queries.
In general, an application is vulnerable if:
To prevent injection attacks, user input should be validated and/or sanitized, and where possible use an API that avoids the use of the interpreter entirely.
For server-side input, whitelist input validation, and use LIMIT and other SQL controls within queries to minimize the amount of sensitive data that can be exposed.
To learn more about preventing injection attacks, OWASP recommends:
Authentication systems are some of the most poorly designed and/or implemented systems on many web applications. Additionally, session management is the foundation of any authentication and access control system and is present in all stateful applications.
These vulnerabilities can be detected by an attacker using manual means and exploited using automated tools, brute force attacks, and dictionary attack tools. Read our full post on brute force attacks here.
The success rate of these attacks can be high. Hundreds of millions of username and password combinations have been exposed in large data breaches. And many people reuse passwords across services or don't bother to change the default administrative login credentials.
Additionally, session management attacks, like cookie hijacking, are well understood and easily exploitable.
OWASP states that a web application has poor authentication if it:
There are a number of ways to prevent cyber attacks that exploit poor or broken authentication, including:
To learn more about preventing broken authentication attacks, OWASP recommends:
Many web applications and their APIs don't sufficiently protect sensitive data, such as financials, PHI, and PII.
This means rather than attacking the cipher directly, attackers may steal keys, execute man-in-the-middle attacks or steal clear text data from the server, while in transit, from the victim's browser, and increasingly, from a third-party vendor who has poor information security.
As organizations store and process more sensitive data and worldwide data protection laws are introduced, this becomes a larger cybersecurity risk for any web application. With the most common mistake simply not encrypting data at all.
When encryption is employed, weak key generation and management, weak algorithm, protocol, and cipher usage are common, particularly weak password hashing storage techniques.
Failure to protect sensitive data can result in industrial espionage, reputational damage, financial cost, and increasingly, regulatory action. Driven by new laws and regulations, such as GDPR, LGPD, CCPA, PIPEDA, HIPAA, and CPS 234 that require the protection of PII, PHI and other sensitive information.
Once exposed, credit card numbers, health records, personal information, and trade secrets and result in fraud, identity theft, loss of market position, and cybercrime.
To prevent sensitive data exposure, OWASP recommends:
UpGuard Breach Risk can help you detect leaked credentials and exposed data before it falls into the wrong hands. We were able to detect data exposed in a GitHub repository by an AWS engineer in 30 minutes. We were able to do this because we actively discover exposed datasets on the open and deep web, scouring S3 buckets, public GitHub repos, and unsecured RSync and FTP servers.
To learn more about preventing sensitive data exposures, OWASP recommends:
Attackers can exploit vulnerable Extensible Markup Language (XML) processors that upload XML or include hostile content in an XML document.
This is because many old XML processors allow the specification of an external entity, e.g. a hard drive.
This means that, like injection attacks, XML parsers can be coerced into sending data to an unauthorized external entity, which then passes the sensitive data directly to an attacker.
These flaws can also be used to execute remote requests from the server, scan internal systems, and perform denial-of-service attacks.
To prevent XXE attacks:
To learn more about preventing XXE attacks, OWASP recommends:
Access control refers to the systems that control access to information or functionality.
Poor access control implementation allows attackers to bypass authorization or perform tasks as though they are privileged users.
For example, a web application may allow a user to change which account they are logged into by changing part of the URL, without any additional verification.
Common access control security vulnerabilities include:
To prevent access control access, ensure that access control checks and metadata cannot be modified by:
To learn more about preventing access control exploits, OWASP recommends:
Attackers can exploit unpatched application vulnerabilities or access default accounts, unused pages, unprotected and directories to gain unauthorized access to or gather information on a system.
Misconfiguration can happen at any level of an application stack including network services, platform, web server, application server, database, frameworks, custom code, pre-installed virtual machines, containers, and storage.
To prevent misconfiguration:
Misconfiguration doesn't end with your organization. Use UpGuard Vendor Risk to send security questionnaires to third-parties and your security ratings to automatically detect first, third and fourth-party configuration issues and vulnerabilities.
To learn more about preventing misconfiguration, OWASP recommends:
Cross-site scripting (XSS) occurs when web applications allow users to add custom code to a URL path or a website that will be seen by other users.
These vulnerabilities can be exploited to run malicious JavaScript on the victim's browser.
For example, an attacker could send a phishing email to a victim that appears to be from their bank, with a link to the bank's legitimate website.
If the bank doesn't prevent cross-site scripting, the attacker could add malicious JavaScript to the end of the URL, and run it when the link is clicked.
Attackers can also use XSS to stop any automated Cross-Site Request Forgery (CSRF) defenses.
To prevent cross-site scripting:
To learn more about preventing XSS, OWASP recommends:
This web security risk targets web applications that frequently serialize and deserialize data.
Serialization is the process of translating data structures or object states into a format that can be stored or transmitted, then reconstructed later.
Deserialization is the opposite, converting serialized data into objects the application can use.
When data from an untrusted source is deserialized it can result in DDoS attacks and remote code execution.
To prevent insecure deserialization:
To learn how to prevent insecure deserialization, OWASP recommends:
The use of libraries and frameworks is on the rise, which can introduce vulnerable components that attackers can exploit.
These components speed up software development, helping developers avoid redundant work and providing needed functionality.
Common examples include front-end frameworks like React, back-end frameworks like Ruby on Rails, shared icons or A/B testing solutions.
The most popular components are used by millions of websites, which means if attackers can find security issues in one can leave millions of web applications exposed.
Component developers issue software security patches and updates to fix or mitigate known vulnerabilities (like those listed on CVE), but developers don't always install patches or use the most recent version of components.
To minimize this risk, developers should remove unused components and ensure they are receiving components from a trusted source as malicious sites may post as open source projects to spread malware.
To prevent known vulnerabilities, OWASP recommends:
Many web applications do not take the necessary steps to detect data breaches. In fact, the average discovery time for breach discovery was 206 days in 2019.
This can give attackers a long time to cause damage before incident response plans can kick in.
OWASP recommends that applications:
For further reading, OWASP recommends:
UpGuard Vendor Risk can minimize the amount of time your organization spends assessing related and third-party information security controls by automating vendor questionnaires and providing vendor questionnaire templates.
We can help you continuously monitor your vendors' external security controls and provide an unbiased security rating based on the analysis of 70+ attack vectors including: