Apr. 07, 2026
21 minutes read
Share this article
Last Updated July 2026
Most organizations do not have a vulnerability discovery problem. Scanners, dependency bots, and cloud posture tools produce more findings than any team can act on. What they lack is proof: evidence that a specific weakness is reachable by a real attacker, that it chains into something worse, and that fixing it changes the outcome. That is the job of a penetration test.
A penetration test is a time-boxed, authorized attempt to compromise a defined environment using the tradecraft an adversary would use. Done well, it converts a noisy backlog into a short, ranked list of things that matter, and tells you whether your detection and response controls noticed. Done poorly, it produces a rebranded scanner export and a false sense of safety.
This guide covers what a test proves and what it does not, how it differs from scanning, red teaming, and bug bounties, the six phases of a credible engagement, what tests cost in 2026, how to set remediation deadlines that hold, and the questions that separate a serious partner from a report factory. It reflects how our Digital Security Studio scopes and runs this work for banking, retail, and platform clients.
A test is only useful if it answers questions a leadership team can act on. Five questions matter more than the finding count:
Notice what is absent. A penetration test does not certify that a system is secure. It is a sample taken at a point in time, bounded by scope, duration, and the tester’s creativity. It does not replace secure design, code review, dependency management, or production monitoring. It validates them, which is why testing belongs alongside application security testing, architecture review, and a security-by-design practice rather than standing in for any of them.
The 2026 threat picture makes that validation more urgent, not less. The OWASP Top 10:2025 is now the reference for critical web application risk, and its data is blunt: broken access control holds first position, with 100 percent of tested applications showing some form of it and an average incidence rate of 3.74 percent. Security misconfiguration moved to second on the same 100 percent figure, and software supply chain failures entered third with the highest average incidence rate at 5.72 percent.
Two of those three are hard for automated tooling to judge. A scanner can flag a missing header. It cannot tell you that user 4471 can read user 4470’s invoices by changing a path parameter, because it does not know what the authorization rules were meant to be. That gap is where manual testing earns its cost.
Exposure also moves fast. The CISA Known Exploited Vulnerabilities catalog keeps expanding as exploitation is confirmed in the wild, reinforcing a practical point: vulnerabilities are not equally urgent, but the ones under active exploitation become urgent within days. IBM’s Cost of a Data Breach Report 2025 put the global average breach cost at 4.44 million dollars, a 9 percent decline from 4.88 million in 2024 and the first drop in five years, while the United States average rose to a record 10.22 million dollars.
Buyers frequently pay for one of these and expect another. The four have different goals, cost structures, and failure modes, and most mature programs run several at different cadences.
| Activity | Primary question | Who runs it | Typical cadence | Main limitation |
|---|---|---|---|---|
| Vulnerability scanning | What known issues are present? | Automated tooling, continuous | Daily to weekly | No exploitability judgment, high false positive rate |
| Penetration testing | What can an attacker actually achieve? | Skilled humans, time-boxed | Annually plus on major change | Point-in-time sample, bounded by scope |
| Red teaming | Would we detect and respond in time? | Skilled humans, objective-driven | Every 12 to 24 months, once mature | Expensive, assumes basic hygiene already exists |
| Bug bounty | What did everyone else miss over time? | Distributed external researchers | Continuous | Uneven coverage, needs triage capacity |
Sequencing matters. Running a red team before addressing findings from a basic external test wastes money: the operators will succeed through the first unpatched service they find, and you will learn nothing about detection maturity. Launching a bug bounty without triage capacity converts a security program into a ticket queue. Scan first, test second, red team when hygiene is solid, bounty when you can absorb the inbound.
Every engagement sets how much internal information the tester receives, and this affects coverage, duration, and cost more than any other single variable.
| Model | Tester receives | Best for | Tradeoff |
|---|---|---|---|
| Black box | Nothing beyond a target scope | Validating external exposure and realism | Time burned on discovery, poor code path coverage |
| Gray box | Credentials, roles, architecture notes | Most application and API engagements | Slightly less realistic initial access |
| White box | Source code, configs, full architecture | Depth on critical or regulated systems | Highest cost, least representative of a real attacker |
For most product teams, gray box is the right default. Valid credentials for each role remove days of low-value reconnaissance and redirect that budget toward authorization logic, business flow abuse, and privilege escalation, where the serious findings usually are. Reserve white box for systems where a breach is existential, and pure black box for when the question is how exposed you look from the internet. We cover these tradeoffs in more depth in our comparison of black-box and white-box testing and our guide to gray-box testing for software security.
Knowledge model describes how a test is run; test type describes what is in scope. These are independent choices, and conflating them is a common source of scoping disputes.
Targets internet-facing infrastructure: perimeter services, VPN and remote access endpoints, exposed management interfaces, DNS, mail, and forgotten hosts. The most common serious findings are not exotic: an unpatched edge appliance, a staging environment reachable from the internet, a default credential on an admin panel, or a subdomain pointing at a deprovisioned cloud resource.
Assumes a foothold already exists, through a phished laptop, contractor device, or compromised container, and asks how far it travels. Directory misconfiguration, excessive service account privilege, flat segments, and cached credentials are the recurring themes. Internal testing is the fastest way to learn whether your zero trust architecture is real or aspirational.
Covers authentication and session handling, authorization across roles and tenants, input handling, business logic abuse, and file handling. Multi-tenant products need explicit cross-tenant testing with at least two accounts per role, a scoping detail buyers routinely omit and later discover was missing. The OWASP Web Security Testing Guide is the reference a competent tester will work from.
APIs now carry most business logic in modern products, and they fail differently from user interfaces. Object-level authorization, mass assignment, unrestricted resource consumption, and undocumented or deprecated endpoints dominate. The OWASP API Security Top 10 is the working checklist. Supply current specifications; a test run against a stale schema will miss whole endpoint families.
Identity and access policy, storage exposure, network boundaries, secrets handling, container escape paths, and metadata service abuse. Cloud testing has a constraint that catches teams out: every major provider publishes rules about what may be tested without notification, and provider-owned infrastructure is off limits. Confirm those rules during scoping, not during the test. Distributed and cloud-native architectures widen the surface further, and AI-enabled components introduce failure modes worth reviewing alongside known AI security risks and agent guardrails.
Mobile testing covers client-side storage, certificate handling, and the backend contract behind the app, and should be scoped per platform. Social engineering tests the people and process layer through phishing or pretexting, and requires written authorization plus a plan for handling results without punishing employees. Physical testing is niche outside facility-heavy environments but occasionally exposes the shortest path to the crown jewels.
A credible engagement follows a repeatable structure. Phase names vary between providers; the sequence and artifacts should not. NIST Special Publication 800-115 remains the widely cited methodology reference, and mature teams map their attack chains to MITRE ATT&CK so findings connect to detection engineering rather than sitting in a PDF.
The phase that determines whether the other five are worth anything. A signed rules of engagement document should fix the in-scope assets by hostname, IP range, and account, the excluded systems and techniques, the testing window, the environment being tested and how closely it mirrors production, named emergency contacts on both sides, evidence handling terms, and the criteria that trigger an immediate stop. Ambiguity here produces the two worst outcomes in this work: a test that misses the systems that mattered, and an outage nobody authorized.
Mapping the real attack surface rather than the documented one: subdomain enumeration, certificate transparency logs, exposed repositories and CI artifacts, leaked credentials, and technology fingerprinting. Recon regularly finds assets the client did not know existed, and an unknown asset is an unmonitored one.
Systematic examination of exposed services, configurations, authentication surfaces, and application logic. Automation contributes here, but the deliverable is a prioritized set of hypotheses about what might be exploitable and why, not a scanner export. Severity ratings should reference a published framework such as CVSS v4.0 with the environmental metrics actually filled in, because a critical rating on an isolated internal host and a critical rating on a public payment endpoint are not the same business problem.
Controlled attempts to prove impact. This is where a real test separates from an assessment: the tester demonstrates the weakness works, captures reproducible evidence, and stops short of destructive action. Good exploitation work is documented well enough that your engineers can reproduce it from the report without follow-up questions.
Establishing what an initial compromise is worth: privilege escalation, credential harvesting, movement between segments and accounts, and reachability of sensitive data. This phase produces the findings executives understand, because it converts a technical defect into a sentence like: a single compromised support account reached the production customer database in four steps.
Findings are triaged with your team, owners are assigned, deadlines are set against severity, and the fixes that matter are verified. An engagement that ends when the report is delivered has skipped the only phase that reduces risk.
Report quality is the most reliable proxy for tester quality, and the one thing you can evaluate before signing by asking for a redacted sample. Nine elements should be present:
A practical filter: read a redacted sample report and count how many findings a scanner alone could have produced. If most of them could, you are buying a scan with a cover page.
Pricing is driven by tester days, and tester days by scope complexity. The ranges below reflect what mid-market and enterprise buyers typically encounter for manual, report-backed engagements from reputable providers. Treat them as planning anchors rather than quotes, because a single variable such as multi-tenancy can move an estimate substantially.
| Engagement type | Indicative range (USD) | Typical duration | Main cost driver |
|---|---|---|---|
| External network, up to 50 hosts | 6,000 to 15,000 | 1 to 2 weeks | Host count and service diversity |
| Web application, single role set | 8,000 to 20,000 | 1.5 to 3 weeks | Feature count and authorization complexity |
| Web application, multi-tenant and role-heavy | 20,000 to 45,000 | 3 to 5 weeks | Number of role and tenant combinations |
| API only | 8,000 to 25,000 | 1.5 to 3 weeks | Endpoint count and specification quality |
| Internal network and directory services | 12,000 to 35,000 | 2 to 4 weeks | Segment count and directory size |
| Cloud configuration and workload | 10,000 to 30,000 | 2 to 3 weeks | Account and subscription sprawl |
| Mobile, both platforms plus backend | 12,000 to 30,000 | 2 to 4 weeks | Platform count and backend coupling |
| Objective-based red team | 40,000 to 120,000 | 4 to 8 weeks | Duration and detection evasion requirements |
Three variables are worth negotiating explicitly. Retest: confirm whether verification of fixes is included or billed separately, because a report without a retest leaves you asserting compliance you have not proven. Environment: staging is cheaper and safer to test, but only if it genuinely mirrors production configuration. Seniority: ask who will actually perform the work, since a proposal priced on senior consultants and delivered by junior staff is the most common quality failure in this market.
The return calculation is simpler than vendors make it. Against an average global breach cost of 4.44 million dollars, a 25,000 dollar engagement that closes one exploitable path to customer data does not need a sophisticated model to justify itself. The harder discipline is refusing to count avoided breaches you cannot prove, and tracking what the program actually changed: time to remediate critical findings, repeat finding rate across cycles, and the share of findings your own pipeline caught first. Those metrics tell you whether security is improving. Finding counts do not.
The most common failure in testing programs is not a bad test. It is a good test whose findings are still open a year later. Fixing that requires deadlines agreed before the report arrives, tied to severity, and owned by named engineering leads rather than the security function.
| Severity | Triage window | Remediation target | Verification | Escalation if missed |
|---|---|---|---|---|
| Critical | 24 hours | 7 calendar days | Retest before closure | Executive sponsor, same week |
| High | 48 hours | 30 calendar days | Retest before closure | Engineering leadership review |
| Medium | 5 business days | 90 calendar days | Evidence review | Tracked in quarterly risk register |
| Low | 10 business days | Next planned release | Evidence review | Accepted with documented rationale |
| Informational | Quarterly batch | Backlog, no deadline | None required | None |
Two policies make this hold. Findings that cannot be fixed within the target get a formally accepted risk record with a named owner, an expiry date, and a compensating control, rather than quietly aging in a backlog. And every critical or high finding is retested before closure, because a fix believed to work and never verified is the most expensive kind of open issue.
Annual testing is the compliance baseline, not the risk-based answer. A better frame is an annual cadence for the full scope, quarterly or semiannual testing for the highest-value systems, and event-driven tests whenever the attack surface changes materially. Six triggers justify testing outside the calendar:
Between engagements, continuous controls carry the load: pipeline dependency and container scanning, cloud posture monitoring, secrets detection, and the DevOps practices and test automation that keep regressions from reaching production. Penetration testing validates that system periodically. It cannot substitute for it, and organizations that try discover the gap the hard way.
Proposals look similar and deliver very differently. Twelve questions surface most of the variance:
Answers to questions two, three, and six predict outcome quality better than price does. A vendor who cannot produce a sample report, cannot describe the manual-to-automated split, and treats retest as a change order is selling scanning.
Across web, API, and cloud engagements, the same categories recur. Broken object-level authorization sits at the top: an endpoint that verifies the caller is logged in but never verifies the record belongs to them. Excessive privilege follows, usually a service account or CI role provisioned broadly under deadline and never narrowed. Then exposed non-production environments holding real data, secrets committed to repositories or baked into container images, permission models where one of thirty endpoints missed the check, and outdated dependencies with public exploits reachable from the internet.
Two patterns are structural rather than technical. The first is the second-order supply chain issue, where a transitive dependency or build tool is the weak link rather than anything your team wrote, which is why supply chain failures entered the OWASP Top 10 this cycle. The second is drift: a control that was correct at design time and quietly stopped being enforced as the system evolved. Neither is found by scanning. Both are routine in manual testing, and both are addressed more cheaply through security audits and architecture review than through remediation after the fact.
Penetration testing is authorized intrusion, and the authorization is what separates it from a crime. Written permission from someone with authority to grant it must exist before any activity begins. Where third parties are involved, and in cloud environments they almost always are, provider testing rules and contractual notification obligations need confirming in advance.
Regulatory expectations vary in specificity. PCI DSS is explicit about penetration testing requirements for cardholder data environments, including segmentation testing. Frameworks such as NIST SP 800-53A treat testing as one assessment method among several. Others require risk assessment and leave the method open. The practical implication: a test scoped to satisfy an auditor and a test scoped to reduce risk are usually different tests, and buying the first while assuming you received the second is a recurring and expensive mistake. Where sector rules drive the requirement, align the engagement with your broader compliance testing program rather than treating it as a standalone exercise.
Operationally, protect four things: a low-traffic window for higher-risk techniques, a named contact reachable in real time on both sides, explicit stop conditions with an agreed decision path, and a data handling agreement covering evidence, credentials, and any customer data touched. Denial of service techniques should be excluded by default unless resilience is the objective, which belongs in a separate performance testing engagement.
Recommending a test in every situation would be easier and less useful. Four situations argue for spending the budget elsewhere first, and a fifth is testing a vendor-managed or soon-to-be-replaced system you have no authority to change, where the honest answer is a risk assessment rather than a test.
If you have a large backlog of unremediated findings, another test will mostly rediscover them at full price. Fix first. If you have no asset inventory, testers will spend much of the engagement building one, which is an expensive way to buy a spreadsheet. If the system is scheduled for replacement within a few months, test the target architecture instead. And if no engineering capacity is allocated to remediation, a test produces a document and a liability, because you will have written evidence of issues you did not fix.
Organizations that get durable value from testing follow a similar progression rather than jumping to the most advanced option available.
| Phase | Focus | Typical duration | Exit signal |
|---|---|---|---|
| 1. Baseline | Asset inventory, external test, critical fixes | 3 to 6 months | No unpatched critical exposure at the perimeter |
| 2. Depth | Application and API testing, gray box, remediation SLAs | 6 to 12 months | Critical findings closed within target windows |
| 3. Integration | Pipeline scanning, cloud posture, secrets detection | 12 to 18 months | Most findings caught internally before testing |
| 4. Validation | Detection notes, purple team work, objective-based red team | 18 months and beyond | Attack activity reliably generates alerts |
The exit signals matter more than the timelines. An organization still finding unpatched critical perimeter exposure should not be commissioning red team work, however long its program has existed.
A vulnerability assessment catalogs potential weaknesses, usually with heavy automation, and answers what might be wrong. A penetration test attempts controlled exploitation to determine what is reachable and what an attacker could achieve, and answers what would happen. Assessments are broad and frequent; tests are deeper, narrower, and periodic. Most programs need both, and a report listing findings without demonstrating exploitability is an assessment regardless of what the invoice says.
Active testing for a focused scope typically runs one to three weeks, extending to four or five for complex multi-tenant applications or large internal networks. Add one to two weeks for scoping and one to two for reporting and remediation planning, so a realistic end-to-end window for a first engagement is six to eight weeks. Objective-based red team exercises commonly run four to eight weeks of active operations.
Rarely by statute directly, but frequently through contractual and regulatory obligations. PCI DSS sets explicit requirements for cardholder data environments, and many enterprise procurement processes and cyber insurance policies now require evidence of recent testing. Other regimes require reasonable safeguards without naming a method. Confirm the specific obligation with counsel or your compliance function rather than assuming a general requirement.
Startups handling customer or payment data usually need testing earlier than they expect, often because an enterprise prospect or insurer asks for evidence during procurement. The practical approach is a tightly scoped gray box test of the primary application and API rather than a broad estate engagement, keeping cost in the lower ranges above. What matters more than timing is capacity to fix what comes back.
There is nonzero risk, which is why rules of engagement exist. Disruption is minimized by excluding denial of service techniques unless explicitly in scope, scheduling higher-risk activity in agreed windows, defining stop conditions with a real-time contact on both sides, and using a faithful staging environment where the risk of a production incident outweighs the value of realism.
Penetration testing earns its cost when it changes decisions. That requires a scope aimed at real risk rather than an audit checkbox, a knowledge model that spends tester days on authorization logic instead of reconnaissance, a report engineers can act on without a translation layer, severity-based deadlines owned by named leads, and verification that the fixes worked.
The organizations that get the most from this work treat each engagement as a measurement of a system they are already improving, not as the improvement itself. Their finding counts fall, remediation windows shorten, and more issues get caught by their own pipeline first. That trajectory, not a clean report, is what maturity looks like.
If you are planning a first engagement or rebuilding a program that has stalled at the reporting stage, our cybersecurity services and software testing and QA services teams scope this work around what your engineering organization can realistically remediate, the constraint that determines whether a test reduces risk or merely documents it.
Diego Ceballos is CISO at Coderio, with more than 20 years of experience in cybersecurity, auditing, and data protection. Throughout his career, he has specialized in aligning the technical robustness of IT architecture with business objectives; going beyond implementing controls to designing governance strategies, ensuring compliance with complex regulatory frameworks, and optimizing internal audit processes. His focus is on protecting a company's most valuable asset — its information — while keeping operations efficient and secure in a constantly evolving digital ecosystem. As CISO, he oversees Coderio's security posture across its own operations and its client engagements, and writes about emerging security challenges including compliance architecture for regulated industries, post-quantum cryptography, and enterprise risk mitigation.
Diego Ceballos is CISO at Coderio, with more than 20 years of experience in cybersecurity, auditing, and data protection. Throughout his career, he has specialized in aligning the technical robustness of IT architecture with business objectives; going beyond implementing controls to designing governance strategies, ensuring compliance with complex regulatory frameworks, and optimizing internal audit processes. His focus is on protecting a company's most valuable asset — its information — while keeping operations efficient and secure in a constantly evolving digital ecosystem. As CISO, he oversees Coderio's security posture across its own operations and its client engagements, and writes about emerging security challenges including compliance architecture for regulated industries, post-quantum cryptography, and enterprise risk mitigation.
Accelerate your software development with our on-demand nearshore engineering teams.