Application Security Audit
An assessment of where the system is exposed, ranked by what an attacker would actually reach. Findings written so they can be fixed rather than filed.
- Who
- Founder holds the engineering leadership seat; the delivery team executes underneath it.
What you're seeing
- A customer asked for a recent security assessment and there is not one.
- Usually means Enterprise procurement increasingly requires evidence of periodic testing. This is now a revenue dependency with a date on it rather than a security hygiene question.
- An environment exists that nobody remembers standing up.
- Usually means A forgotten staging or demo environment, usually with production-like data and weaker controls. It is a recurring finding and frequently the shortest path in.
- Authorisation is checked in the controller and nowhere else.
- Usually means Object-level authorisation is being enforced at one layer that not every path goes through. Broken object-level access is the most common serious finding in a B2B product, and it is invisible to scanners.
- Secrets are in environment files that get shared when someone joins.
- Usually means There is no secret management and no rotation, so the blast radius of any departure or any leaked repository is unbounded and unknown.
Ranked by what is reachable
A severity score describes a vulnerability in the abstract. It does not describe your system.
A critical-rated issue sitting behind authentication, a VPN and an internal network is genuinely less urgent than a medium-rated one on an unauthenticated endpoint that anyone can reach from a browser. Ranking by score produces a list that gets worked in the wrong order, which is worse than it sounds — teams work down the list, run out of appetite around item eight, and the reachable ones were at eleven.
So findings are ordered by what an attacker could actually do from where they can actually stand, and each one carries reproduction steps and a proposed fix. A finding a developer cannot reproduce is a finding that gets disputed rather than fixed.
Where the serious findings are
Two categories account for most of what is worth finding, and neither is what people expect.
Object-level authorisation. The check exists and is applied on four of five code paths, or it compares the wrong identifier, or it verifies that the user is authenticated without verifying that this particular record is theirs. This is the most common serious finding in a B2B product and no scanner detects it, because the code looks correct.
Forgotten surface. The staging environment stood up for a demo two years ago, with production-like data and weaker controls. The internal admin tool reachable from the public internet. The storage bucket that was public for one migration. Mapping the attack surface reliably finds something nobody remembered.
Fix, then retest
A findings register with no retest describes one day.
Fixes are made by the team that owns the code — that is correct, they understand it and they have to live with it — and then they get verified. Partial fixes are common: the reported instance is closed and the pattern survives elsewhere, or the check is added and applied on the path that was demonstrated. In a ticket tracker that is indistinguishable from a complete fix.
Where it sits
This capability sits under SOC 2 Readiness, where periodic assessment is a control an auditor will ask for evidence of, and under Technical Due Diligence, where security posture is one of the four things a deal team is buying an opinion on.
It runs alongside two neighbours. Code Security Review reads the code where this reads the system and its configuration — together they cover both what is written and what is deployed. And Vendor Risk Management applies the same questions outward, to the suppliers who can reach your data.
How the work runs
-
Map the attack surface
Everything reachable from outside — endpoints, storage, third-party integrations, forgotten environments. The forgotten ones are a recurring finding.
-
Test authentication and authorisation
Session handling, token lifetimes, privilege escalation and object-level access. Broken object-level authorisation is the most common serious finding in a B2B product.
-
Review cloud configuration
Identity policies, network boundaries, storage permissions, secret handling and logging coverage.
-
Rank by reachability
Findings ordered by what an attacker could actually do with them, with a fix and a verification step for each.
What arrives
- A findings register ranked by reachable impact
- Reproduction steps and a proposed fix per finding
- A cloud configuration review with specific policy changes
- A retest of the fixes, in scope
What it costs your team
Access provisioning, one architecture session, and an engineer available for questions during testing.
How we decide
Findings are ranked by reachability, not by CVSS
Costs Some high-scoring findings end up low on the list, which is uncomfortable to present to a board.
A severity score describes a vulnerability in the abstract. What matters is what an attacker could actually do from where they can actually stand — a critical-rated issue behind two authentication layers and a VPN is less urgent than a medium-rated one on an unauthenticated endpoint. Ranking by abstract severity produces a list that is worked in the wrong order.
Source access is requested, and its absence is reported
Costs It makes this different from a black-box test, and some clients expect the black-box version.
Without source, whole categories of authorisation defect are unreachable — an outside tester cannot see that one of five code paths omits the tenancy filter. Where access is refused, saying which categories were out of scope is more useful than a report that reads as complete and is not.
Every finding carries a fix and a retest
Costs It extends the engagement past the report, which is where most assessments stop.
A findings list with no retest tells you what was true on one day. The fixes are made by whoever owns the code, which is correct, and then they need verifying — partial fixes are common and they are indistinguishable from complete ones in a ticket marked done.
Where this has run
Frequently Asked Questions
Sources
- OWASP — Top 10owasp.org
- OWASP — Application Security Verification Standardowasp.org
- NIST — Cybersecurity Frameworknist.gov
- OWASP — Software Assurance Maturity Modelowaspsamm.org
Page reviewed

