All Blogs
Why Annual Pentest Reports are No Longer Enough for SOC 2 Type II

Quick Overview: This blog explains why an annual pentest PDF may not provide sufficient SOC 2 Type II evidence, what auditors expect from continuous testing, and how CC4.1, CC7.1, CC7.2, and CC8.1 apply. It covers continuous pentesting vs. vulnerability scanning, CI/CD-triggered testing, remediation evidence, and how continuous testing creates stronger audit trails.
Your last SOC 2 Type II observation window was 12 months long. Your penetration test took five days. Somewhere in the remaining 360 days, your team shipped a few hundred releases, added API endpoints, changed an authorization model, and rotated a third-party integration. The remediation report in a PDF format describes none of it.
For years that was fine, because auditors accepted the report as a proxy for a testing program. That acceptance is thinning. Auditors are asking harder questions about what happened between tests, and they are asking them in the specific vocabulary of audit evidence: what was the population, how was it derived, can you demonstrate completeness, and can you show the control operated on more than one date.
This is not a new requirement being invented. It is an existing requirement finally being enforced at the level of detail the criteria always described. This article covers what SOC 2 actually says, why the annual report structurally fails as period evidence, what a continuous testing record has to contain to survive review, and how AI pentesting can help security teams test applications more frequently and maintain evidence of security testing throughout the observation period without rebuilding their compliance program.

Don’t let a 12-month-old pentest become your weakest piece of security evidence. Build Continuous Evidence
On This Page
- Why Annual Penetration Test Reports are No Longer Enough for SOC 2
- What SOC 2 Actually Requires from Security Testing
- What Counts as SOC 2 Continuous Testing Evidence
- Continuous Vulnerability Scanning is Not Continuous Penetration Testing
- How Continuous Pentesting for SOC 2 Maps to Control Evidence
- How to Prepare Continuous Security Evidence for a SOC 2 Audit
- Does More Testing Create More Audit Exceptions?
- Conclusion: SOC 2 Audit Readiness with Continuous Testing
Why Annual Penetration Test Reports are No Longer Enough for SOC 2
An annual penetration test report cannot evidence a SOC 2 Type II period because a Type II opinion asserts that controls operated effectively throughout a window of three to twelve months, while a single test documents one execution on one date against one version of the system. The mismatch is structural, not a matter of report quality. A better-written PDF does not fix it.
Four failure modes show up repeatedly in fieldwork.
The Population Problem
Auditors test controls by defining a population and sampling from it. For access reviews, the population is users. For change management, it is deployment. For security testing, an annual pentest gives the auditor a population of one. There is nothing to sample. The auditor either accepts the single artifact on faith or starts asking what else you have, and increasingly they are asking.
The Observation Window Rule
A test executed outside the observation period does not evidence operating effectiveness inside it. Teams that run their pentest in January and start their window in April routinely discover this during fieldwork. Even a correctly timed test only proves the control operated on the days it ran.
Scope Drift Against the System Description
Auditors check that the tested scope matches the system description in your SOC 2 report. Scope mismatch is one of the most common causes of fieldwork delays. The problem compounds over a period: the system described in January is not the system running in November. Endpoints were added, an authentication flow was rewritten, and a service was split. The test covered the January system.
The Remediation Timeline Gap
The Verizon 2026 DBIR found the median time to remediate a known-exploited vulnerability stretched to 43 days, up from 32, while only 26 percent were fully remediated compared to 38 percent the year before. Vulnerability exploitation reached 31 percent of initial access, overtaking credential abuse for the first time in the report's 19-year history. If your remediation cycle is measured in weeks and your detection cycle is measured in years, the evidence record has a hole in it that no amount of report formatting closes.
The Distinction That Matters
Having a penetration testing policy is a design assertion. Producing dated, scope-bound, system-generated records of tests executing across the period is an operating effectiveness assertion. Type I accepts the first. Type II requires the second. Most organizations submit the first and hope it reads as the second.
What SOC 2 Actually Requires from Security Testing: CC4.1, CC7.1, CC7.2, and CC8.1
SOC 2 does not mandate penetration testing anywhere in its written criteria, but CC4.1 names it explicitly as an example of the evaluations management should perform, and the surrounding criteria describe a testing cadence that no annual assessment can satisfy on its own.
CC4.1 and the Two Words Most Teams Skip
CC4.1 maps to COSO Principle 16 on monitoring activities. Its focus asks management to use "a variety of different types of ongoing and separate evaluations, including penetration testing", alongside independent certifications and internal audit assessments. Two things follow here as per the given sentence.
First, penetration testing is listed before ISO certification and internal audit. The AICPA is signaling what it expects to see. Second, and more consequentially, the criterion asks for ongoing and separate evaluations. Separate evaluations are periodic and objective: your annual third-party pentest is exactly this. Ongoing evaluations are integrated into normal operations and run continuously. They are a distinct category, and for application and API security most organizations produce no evidence for that category at all.
The gap is not that your pentest is inadequate. It is that you have submitted one of two required evidence types and left the other blank. The same pattern repeats across frameworks, which is why continuous security validation tends to serve SOC 2, PCI DSS, and ISO 27001 evidence needs from a single testing record rather than three separate exercises. evidence needs from a single testing record rather than three separate exercises.
CC7.1 and CC7.2: Detection as a Running Process
CC7.1 asks the entity to use detection and monitoring procedures to identify configuration changes that introduce new vulnerabilities, and susceptibilities to newly discovered ones. Read the tense: this is a continuous process criterion. A yearly assessment cannot identify a vulnerability introduced by a change made in month seven. CC7.2 extends this into monitoring for anomalies and indicators of compromise.
CC8.1: Every Deployment is a Change That Creates Untested Surface
CC8.1 governs change management: authorizing, designing, developing, configuring, testing, and approving changes to infrastructure and software. Auditors sample deployments from the period and test whether each followed the process. If your process says security testing accompanies significant change, then every sampled deployment needs a corresponding test record. If it does not say that, the auditor will ask how you determine whether a change introduced a vulnerability, and the honest answer for most teams is that they wait for next year's pentest.
| Criterion | What It Asks For | What the Annual Report Proves | What It Leaves Unevidenced |
|---|---|---|---|
| CC4.1 | Ongoing and separate evaluations | The separate evaluation | The ongoing evaluation, entirely |
| CC7.1 | Detection of vulnerabilities from configuration change | Detection on one date | Changes made across the other 360 days |
| CC7.2 | Monitoring for new susceptibilities | Susceptibility to CVEs known at test time | Everything disclosed after the test |
| CC8.1 | Testing accompanies authorized change | Nothing deployment-specific | Every sampled deployment in the period |
One pentest report captures one moment. AI-powered testing can keep validating what happens between audits. See AI Pentesting in Action
What Counts as SOC 2 Continuous Testing Evidence
SOC 2 continuous testing evidence is the dated, scope-bound record produced when security testing runs on an ongoing cadence and on change rather than once a year, and it counts in an audit only when it satisfies the auditor's standard for Information Produced by the Entity: accuracy, meaning the record faithfully reflects underlying system activity, and completeness, meaning the population includes every relevant event in scope.
That definition is worth holding onto, because continuous security testing for SOC 2 compliance is often sold as a cadence when the thing auditors actually buy is the record. This is the part most vendor conversations skip, and it is the part that determines whether your evidence is accepted or sent back.
Auditors do not evaluate testing records the way a security engineer does. They ask how the information was generated, what systems produced it, what the report logic and query parameters were, and whether a human touched it between generation and submission. A dashboard screenshot fails all four questions. A system-generated export with a documented derivation passes them.
The Continuous Security Evidence Chain
Each stage of the chain produces an artifact, and the chain only holds if every link is timestamped and traceable to the one before it.

The Evidence Attribute Table
For each test execution in the period, the exported record needs to answer the following. An auditor will work through this list whether or not you present it in this form.
| Attribute | Why the Auditor Cares |
|---|---|
| Execution timestamp, system-generated | Places the event inside the observation window without relying on your assertion |
| Target asset, endpoint, and build or version identifier | Binds the test to a specific system state, and to a change record |
| Scope definition and how it was derived | Establishes population completeness and alignment to the system description |
| Attack techniques executed | Distinguishes a test that attempted bypass from one that enumerated versions |
| Findings with severity and classification | Supports risk-based remediation prioritization under CC3.2 |
| Exploit validation artifact | Separates a confirmed weakness from a signature match, which reduces exception noise |
| Finding lifecycle states with transition timestamps | Evidences remediation inside your documented SLA |
| Retest result linked to the original finding ID | Closes the loop. A finding without retest evidence does not satisfy the auditor |
| Retention and historical retrievability | Allows the auditor to sample any date in the period, not just the ones you chose |
Where Teams Lose the Argument
The most common rejection is not a missing attribute. It is the inability to demonstrate that the exported population is complete. If you cannot show how the list of tested assets was derived and why nothing in scope is missing from it, the auditor cannot rely on the data regardless of how detailed each individual record is.
Continuous Vulnerability Scanning is Not Continuous Penetration Testing
We all know vulnerability scanner detects known signatures and configuration states, while pentesting validates whether a weakness is actually exploitable in your application's authorization model, business logic, and workflow sequence. Choosing vulnerability scanners to scan nightly increases frequency without changing the class of evidence produced.
This distinction is not academic for SOC 2 purposes. Auditors and enterprise reviewers are explicit that automated scanning alone is treated as weaker evidence precisely because of what it structurally cannot reach. If you propose continuous testing as CC4.1 evidence and it turns out to be a scheduled scanner, expect the same scrutiny the annual PDF is now receiving.
The question of whether automated security testing can provide audit evidence turns entirely on this point: automated penetration testing that executes and validates attacks produces evidence of a control functioning, while automated scanning produces evidence of a control being looked at.
| Weakness Class | Reachable by Scanning | Requires Executed Testing |
|---|---|---|
| Known CVEs in dependencies and components | Yes | No |
| TLS, header, and configuration misconfiguration | Yes | No |
| Broken object level authorization (BOLA/IDOR) | No | Requires multi-identity comparison across authenticated sessions |
| Broken function level authorization | No | Requires role matrix traversal against real privilege boundaries |
| Business logic abuse | No | Requires understanding intended workflow sequence and violating it |
| API abuse and mass assignment | Partial | Requires schema-aware parameter manipulation with valid auth |
| Chained exploit paths across components | No | Requires linking individually low-severity findings into an impact path |
The proof of impact is straightforward. A scanner report shows that you looked for vulnerabilities. Executed and validated testing shows whether a security control actually worked when challenged.
That distinction matters for SOC 2 CC4.1, which asks whether internal controls are present and operating effectively. For most SOC 2 scopes, that evidence needs to come from authenticated web applications and API security testing that exercises real user roles and privilege boundaries, but not simply from running scans more frequently.
Stop paying for security evidence that goes stale. See what continuous pentesting costs. Compare Your Options
How Continuous Penetration Testing for SOC 2 Maps to Control Evidence
Continuous penetration testing pairs each relevant Trust Services Criterion with the specific security activity that satisfies it and the specific artifact your platform must export as proof. Present this mapping to your auditor before fieldwork rather than during it, because agreeing on the artifact in advance is what prevents mid-audit evidence requests.
| Criterion | Security Activity | Evidence Artifact to Export |
|---|---|---|
| CC3.2 - Risk identification | Continuous attack surface discovery across apps, APIs, and exposed services | Dated asset inventory deltas showing newly discovered surface and its risk classification |
| CC4.1 - Monitoring activities | Ongoing evaluation running alongside the annual separate evaluation | Full test execution history for the period with scope, timestamps, and outcomes |
| CC6.1 - Logical access | Authenticated testing of authorization boundaries and role separation | Authorization test results per role pair, including attempted and blocked access |
| CC7.1 - Vulnerability identification | Recurring detection plus exploit validation on changed surface | Findings register with validation artifacts and severity classification |
| CC7.2 - Anomaly monitoring | Continuous coverage of the external attack surface across the period | Coverage history showing no unexplained gaps between test executions |
| CC7.4 - Incident response | Triage and escalation of validated critical findings | Finding lifecycle transitions with owner, timestamp, and escalation path |
| CC8.1 - Change management | Testing triggered by release and significant change | Test records joined to build, release, and change ticket identifiers |
How to Prepare Continuous Security Evidence for a SOC 2 Audit
Triggering security tests from CI/CD converts testing from a calendar event into a change-linked control, which is what allows a test record to be sampled alongside the deployment that caused it. The auditor value is not automation for its own sake. It is the key between your test evidence and your change of management evidence.
When an auditor samples ten deployments from your period under CC8.1, they will ask what testing accompanied each. If your test records carry the build identifier, you answer with a query. If they do not, you answer a narrative, and narratives get follow-up requests.
The Trigger Model
- Release-triggered: Deployment to production initiates testing against the deployed version. The record inherits the release identifier.
- Change-significance Triggered: Changes to authentication, authorization, payment flows, or data export paths trigger deeper testing regardless of release size, matching CC4.1's guidance that scope and frequency vary with risk.
- Scheduled Baseline: Full-surface testing on a fixed cadence establishes continuity of coverage between releases and prevents gaps in low-deployment periods.
- Disclosure Triggered: A newly published vulnerability affecting your stack initiates targeted retesting, which is the operational answer to CC7.2.
What to Capture at the Join
Each test record should carry the commit or build identifier, the release version, the change ticket reference where one exists, the environment tested, and the scope resolved at execution time. That last field matters more than it looks: recording the scope your platform resolved at runtime, rather than the scope you configured months earlier, is what lets you prove population completeness later.
Security gating is a separate decision from evidence generation. Blocking a deploy on critical findings strengthens your CC8.1 story, but an unblocked pipeline that still produces a complete test record is far better evidence than a gated pipeline whose results are not retained. Generate the record first. Add enforcement when the team is ready.
The Production Testing Objection
The obvious pushback is that testing continuously means testing against production, and production is where your customers are. This is a legitimate concern, and it has an engineering answer rather than a compliance one: destructive payloads, state-mutating operations, and volumetric behavior have to be constrained at the engine level, not disclaimed in a policy.
We have documented how production-safe security testing works and how production security testing supports compliance evidence in more depth. The reason it matters here is that staging-only testing weakens the evidence: auditors scope against the system description, and your system description describes production.
Does More Testing Create More Audit Exceptions?
More testing does not create more audit exceptions, because a SOC 2 exception is a control that failed to operate as described, not a vulnerability that was discovered. This is the objection every security leader raises when told to hand an auditor a year of test records instead of one clean report, and the answer is worth being precise about.
Your control is not "no vulnerabilities exist." No auditor would accept that control description, and no organization could evidence it. Your control is something closer to: security testing is performed on a defined cadence and on significant change, findings are triaged by severity, and remediation occurs within documented timeframes.
Against that control description, a discovered vulnerability that was triaged and closed inside your SLA is not an exception. It is your best available proof that the control worked. Discovery, triage, and closure are the control operating. The record of it operating fifty times is stronger evidence than the record of it operating once.
| Situation | Exception? | Why |
|---|---|---|
| Critical finding, remediated in 9 days against a 15-day SLA | No | The control operated exactly as described |
| Medium finding, open 90 days, formally risk-accepted with owner and rationale | No | Risk acceptance is a documented control path, not a failure |
| High finding open past SLA with no acceptance and no owner | Yes | The remediation control did not operate as described |
| Testing skipped for two months with no explanation in the record | Yes | Coverage gap in the population, which undermines completeness |
| Finding closed with no retest artifact | Likely | Closure is asserted rather than evidenced |
Two practical consequences follow. First, set remediation SLAs you can actually meet, because the SLA in your policy becomes the standard you are audited against. Second, false positives are an audit liability, not just an engineering annoyance. Every unvalidated finding either consumes remediation capacity or sits open past SLA and reads as a control failure. Exploit validation is what keeps the findings register clean enough to be defensible.
Still relying on last year’s pentest report? See what continuous security validation looks like in practice. See It in Action
Conclusion: SOC 2 Audit Readiness with Continuous Testing
The shift underway is narrower than it sounds. Auditors are not rejecting penetration testing. They are applying to security testing the same evidence standard they already apply to access reviews and change management: show the population, show it is complete, show the control operated across the period rather than on a single convenient date.
Your annual third-party pentest remains the separate evaluation, and it should stay in the binder. What is missing for most organizations is the ongoing evaluation that CC4.1 has always asked for in the same sentence. Filling that gap is not a compliance project. It is a testing program that runs on change, validates what it finds, retests what gets fixed, and retains all of it in a form an auditor can sample. AI pentesting can support this ongoing testing process by validating vulnerabilities as applications change and helping security teams maintain evidence of testing over time. Teams that make that shift find SOC 2 audit readiness stops being a quarter-long scramble, because the evidence is a byproduct of the testing rather than a document assembled after the fact.
Frequently Asked Questions
What counts as continuous testing evidence in a SOC 2 Type II audit?
Continuous testing evidence counts when it satisfies the auditor's standard for Information Produced by the Entity, which is assessed on accuracy and completeness. Practically, each record needs a system-generated execution timestamp, the target asset and version tested, the resolved scope and how it was derived, the techniques executed, findings with severity, exploit validation artifacts, finding lifecycle transitions with timestamps, retest results linked to the original finding, and historical retrievability across the full period.
Can continuous testing improve SOC 2 audit readiness?
Is vulnerability scanning enough to satisfy SOC 2 CC7.1?
Explore ZeroThreat
Automate security testing, save time, and avoid the pitfalls of manual work with ZeroThreat.


