Back to All Articles
Security

OWASP Top 10 for QA Engineers — Security Testing Guide

Honnesh Muppala May 5, 2026 15 min read

Why Every QA Engineer Needs to Know OWASP

Security is no longer the exclusive domain of penetration testers and security engineers. In modern Agile and DevSecOps teams, QA engineers are the last line of defence before code ships to production. Understanding the OWASP Top 10 — the authoritative list of the most critical web application security risks — transforms a functional tester into a security-aware quality engineer.

The OWASP Top 10 (2021 edition) is maintained by the Open Web Application Security Project, a non-profit foundation dedicated to improving software security. It is updated every three to four years based on real-world vulnerability data from hundreds of contributing organizations. If your application ships with any of these ten vulnerabilities, the impact ranges from data leakage to full system compromise.

This guide covers each of the ten categories through a QA lens: what the vulnerability is, a real-world example of how it has been exploited, and the concrete test cases you should be running on every sprint. By the end of this article you will have a security testing checklist you can bring into any project immediately.

From Virtusa: While working at Virtusa on a financial services web portal, our team was not running any security tests beyond basic auth checks. After I introduced OWASP-based test cases during a sprint review, we discovered two A01 Broken Access Control issues — authenticated users could access other users' account statements by incrementing an ID in the URL. These were P1-severity findings that would have been catastrophic in production. Security testing is not optional — it is table stakes for any serious QA function.

Attack Surface Architecture

Before diving into individual vulnerabilities, it helps to visualize the layers an attacker targets and where QA testing fits into that picture.

Attacker / External User
Public Network (Internet)
Web / API Layer (TLS, WAF)
Auth & Session Layer
A07: ID & Auth Failures
Input Validation Layer
A03: Injection
Access Control Layer
A01: Broken Access Control
Business Logic & Application
Database / Data Store

OWASP vulnerability categories map to each layer of the stack

A01 — Broken Access Control

What it is: The application does not properly enforce restrictions on what authenticated users are allowed to do or access, allowing them to act outside their intended permissions.

Real-world example

In 2019, a major US financial institution exposed customer tax documents because the API endpoint /api/documents?userId=12345 performed no server-side ownership check — any authenticated user who changed the userId parameter could retrieve another customer's documents. This is a classic IDOR (Insecure Direct Object Reference) under A01.

What QA should test

A02 — Cryptographic Failures

What it is: Sensitive data is transmitted or stored without adequate encryption, or weak/deprecated cryptographic algorithms are used, exposing data to attackers who can intercept or retrieve it.

Real-world example

LinkedIn's 2012 breach exposed 6.5 million password hashes — all using unsalted SHA-1, which is trivially crackable with rainbow tables. By 2016, the full 117 million records were posted publicly. The entire breach was enabled by cryptographic failure at the storage layer.

What QA should test

A03 — Injection

What it is: User-supplied data is sent to an interpreter (SQL, OS shell, LDAP, XML parser) without sanitization, allowing attackers to execute unintended commands or access unauthorized data.

Real-world example

The 2008 Heartland Payment Systems breach — at the time the largest credit card data breach in history — was initiated via SQL injection in a web form. Attackers injected SQL into an authentication field, bypassed login, and installed malware on internal servers, ultimately capturing 130 million card numbers.

What QA should test

A04 — Insecure Design

What it is: Security weaknesses arising from flawed application design and architecture — not implementation bugs — such as missing threat modelling, incorrect trust boundaries, or business logic flaws that cannot be patched after deployment.

Real-world example

A ride-sharing application allowed users to book rides on behalf of other accounts by knowing only the target user's phone number — no secondary verification required. This was not a code bug; it was a design decision that did not account for account takeover via social engineering. Fixing it required redesigning the booking flow entirely.

What QA should test

A05 — Security Misconfiguration

What it is: Default configurations, unnecessary features, open cloud storage, verbose error messages, or missing security hardening leave the application or its infrastructure unnecessarily exposed.

Real-world example

In 2017, Uber suffered a breach when attackers found AWS credentials accidentally pushed to a public GitHub repository. The credentials gave access to an S3 bucket containing 57 million user and driver records. The misconfiguration was not in the application code but in the deployment and secret management practices.

What QA should test

A06 — Vulnerable and Outdated Components

What it is: The application uses libraries, frameworks, or other software components with known vulnerabilities, either because they have not been updated or because the team is unaware of which versions are in use.

Real-world example

The 2017 Equifax breach, which exposed 147 million people's personal and financial data, was traced directly to a known vulnerability in Apache Struts (CVE-2017-5638) that had a published patch available for two months before exploitation. The application had not been updated.

What QA should test

A07 — Identification and Authentication Failures

What it is: Weaknesses in authentication mechanisms that allow attackers to compromise passwords, session tokens, or user identity — including weak credential policies, insecure session management, and missing multi-factor authentication.

Real-world example

The 2020 Twitter hack, in which high-profile accounts including Obama's, Biden's, and Musk's were compromised to run a Bitcoin scam, exploited weak internal admin tooling with no MFA. Attackers gained access via social engineering of Twitter employees who had access to an internal admin portal with single-factor authentication.

What QA should test

From Amazon: During regression testing on an internal Amazon logistics portal, I added automated checks that verified session token rotation on every login event. We discovered that in one edge case — logging in via SSO after a password change — the session token was not regenerated, leaving a 30-second window for session fixation. This was caught in QA before the feature shipped. Authentication flows are complex and need explicit, automated test coverage for every state transition.

A08 — Software and Data Integrity Failures

What it is: Code and infrastructure that does not protect against integrity violations — for example, using untrusted plugins or libraries, insecure CI/CD pipelines, or auto-update mechanisms that do not verify the integrity of downloaded packages.

Real-world example

The SolarWinds attack (2020) compromised the software build pipeline of SolarWinds' Orion product. Attackers inserted malicious code into the legitimate software update that was then cryptographically signed and distributed to 18,000 customers, including US government agencies. The attack was a supply chain integrity failure at the CI/CD level.

What QA should test

A09 — Security Logging and Monitoring Failures

What it is: Insufficient logging, monitoring, and alerting means that breaches go undetected, attackers can cover their tracks, and incident response is impaired because there is no audit trail.

Real-world example

The 2013 Target breach, in which 40 million credit card records were stolen, went undetected for three weeks despite the company's security vendor sending alerts. The alerts were ignored due to alert fatigue caused by poor signal-to-noise ratio in their monitoring — a monitoring failure compounding a logging failure.

What QA should test

A10 — Server-Side Request Forgery (SSRF)

What it is: The server fetches a remote resource based on user-supplied input without validating the target URL, allowing attackers to make the server send requests to internal services, cloud metadata endpoints, or other unintended destinations.

Real-world example

The 2019 Capital One breach, which exposed over 100 million customer records, was carried out via SSRF against the AWS EC2 metadata endpoint (http://169.254.169.254/). The attacker used a misconfigured WAF to make the server query the metadata endpoint, retrieve IAM credentials, and use those credentials to access S3 buckets containing customer data.

What QA should test

Security Testing Approaches: SAST vs DAST vs Pen Testing vs Bug Bounty

OWASP vulnerabilities can be caught at different stages using different methodologies. Understanding which approach is appropriate for which phase of the SDLC is a critical skill for security-aware QA engineers.

Approach What It Tests When to Use Tooling Examples Who Runs It
SAST (Static Analysis) Source code, dependencies, config files without executing the app During development, in CI pipeline on every commit SonarQube, Semgrep, Checkmarx, Bandit (Python) Developers + QA in CI
DAST (Dynamic Analysis) Running application from outside — sends payloads and analyzes responses Against deployed staging environment, nightly or per-release OWASP ZAP, Burp Suite, Nikto, Nuclei QA engineers + security team
Penetration Testing Full adversarial simulation — manual + automated, tests business logic Pre-release, quarterly, or after major architecture changes Burp Suite Pro, Metasploit, custom scripts Dedicated security / pen test team
Bug Bounty Continuous testing by external researchers on production or staging Ongoing — supplements internal testing after initial hardening HackerOne, Bugcrowd, Intigriti platforms External security researchers

QA Security Testing Checklist

Use this checklist as a minimum baseline on every sprint that ships new features or modifies auth/data flows:

# Check OWASP Category Pass Condition
1User A cannot access User B's resourcesA01403 Forbidden returned
2Admin endpoints blocked for standard usersA01403 returned, no data leaked
3All traffic served over HTTPSA02HTTP redirects to HTTPS (301/302)
4Cookies have Secure + HttpOnly flagsA02Flags present in Set-Cookie header
5SQL injection in all input fieldsA03Generic error, no SQL details exposed
6XSS payloads in all input fieldsA03Script tags escaped in output
7Multi-step flow cannot be shortcutA04Server validates each state server-side
8No stack traces in error responsesA05Generic error message only
9Default paths return 404/403A05/admin, /phpinfo.php blocked
10No known CVEs in dependenciesA06npm audit / pip audit: 0 high-severity
11Account lockout after failed loginsA07Locked after N attempts
12Session token rotated on login/logoutA07New token issued each session
13File uploads validated by MIME typeA08Non-image files rejected from image fields
14Failed logins appear in logsA09Event logged with IP + timestamp
15SSRF via URL input fieldsA10Internal/metadata URLs rejected
From Virtusa: We integrated this checklist as a QA gate in our Jira workflow. Any story touching authentication, authorization, or data retrieval required a security test sign-off before moving to the "Done" column. In the first quarter after we introduced this gate, we caught five security issues that would previously have reached production. The checklist is not a guarantee of security — it is the minimum bar every feature must clear.

Security testing is a craft that improves with practice. Start by running through this checklist on one feature per sprint. Over time, it becomes muscle memory and your instinct for suspicious code paths sharpens significantly. The ten categories above cover the vast majority of real-world vulnerabilities — master them and you will be a far more valuable quality engineer than one who only tests the happy path.


Back to Blog
From Experience — Viasat: At Viasat, every IFC software load goes through PAT (Product Acceptance Testing) before customer delivery, which includes validating security configurations against a Golden Build baseline. When the baseline changes — a root password hash rotation, TLS certificate update, or secrets rotation — the PAT process ensures no production unit ships with a stale or misconfigured security posture. Treating security configuration as a testable, version-controlled artefact rather than a one-time setup is a discipline that prevents entire classes of vulnerability from reaching airline customers.