How to Run an Engineering Security Audit That Sticks
Most internal security audits fail before they start, not because nobody finds problems, but because nobody agreed on what the audit was for. A dependency scan, a SOC 2 readiness check, and a code review answer different questions, and mixing them into one exercise produces a report that sits in a shared drive.
This is a runbook for scoping, running, and closing out a security audit at a company that does not have a dedicated security team yet. It covers what to check, in what order, and how to turn findings into tickets with owners instead of a slide nobody revisits.
Vendors Covered in this Article
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Scope the audit before you touch a single system
Pick one of three lenses and say so out loud: access and identity (who can reach what), the exposed surface (what an outsider can hit without credentials), or data handling (where customer data lives and who can export it). Trying to cover all three in one pass with a small team is how audits stall out after week two.
Match the lens to your actual risk. A company holding payment data should start with data handling. A company selling API access to other businesses should start with the exposed surface, since that is what a prospective enterprise customer will ask about first.
Set your remediation clock before you find anything
Decide how fast you will fix what you find before the list exists, or severity will get argued about instead of acted on. Federal directives require critical, internet-facing vulnerabilities to be patched within 15 days and high-severity ones within 30 days1. You do not need to be a federal contractor to borrow that clock: adopting the same windows internally gives your team an argument for cutting scope on the next sprint instead of quietly letting a finding age.
Write the clock down somewhere your whole team can see, not just in the audit report. A remediation SLA that only lives in one document gets forgotten the first time a deadline collides with a launch.
Where to actually look first
Start with the attack surface an outsider can see without logging in: public repositories for committed secrets, exposed admin panels, subdomains nobody remembers standing up, and dependencies with known CVEs sitting untouched for months. This is where the cheapest, most embarrassing findings live, and fixing them takes hours, not weeks.
Then move to access control: who has production database credentials, whether former employees still have active tokens, and whether your CI system can push to production without a second person approving it. These two passes usually surface the findings that matter most, before you ever get to a full code review.
Work through the first pass in this order:
- Search public repositories for committed secrets and look for exposed admin panels reachable without logging in.
- Inventory subdomains nobody remembers standing up, and list dependencies with known CVEs left untouched for months.
- List who holds production database credentials and whether former employees still have active tokens.
- Confirm your CI system cannot push to production without a second person approving the change.
Turn findings into tickets with owners, not a slide
A finding that does not have a named owner and a due date inside your existing sprint tool will not get fixed. Score each finding on two axes, how bad it would be if exploited and how easy it would be to exploit, and work the top-right quadrant first.
For anything you cannot fix immediately, write down the compensating control and a review date instead of pretending the risk does not exist. If you pursue SOC 2 later, an auditor will likely ask for exactly this kind of documented exception, and having it already written saves the scramble.
For example, an audit turns up an exposed admin panel and a stale API token belonging to a former contractor. Score both on impact and ease of exploitation. The admin panel is easy to reach and damaging, so it goes to the top of the sprint with a named owner and a due date that matches your remediation clock. The token gets revoked the same day, since that takes minutes. A finding like an outdated internal library with no known exploit path might get a documented exception, a compensating control and a review date. A common mistake is assigning a finding to a team instead of a person, which tends to mean nobody owns it.
Make the next audit take a day instead of a month
A one-time audit tells you where you stood on the day you ran it. Continuous evidence collection through a platform like Vanta or Drata keeps that picture current, pulling access logs, patch status, and vendor reviews automatically instead of someone screenshotting settings pages every quarter.
If your exposed surface is large enough that manual review missed things, an outside penetration test or a comparison of endpoint detection platforms is worth the cost before your next big enterprise deal, not after a prospect asks for a report you do not have.
What Good Looks Like
Good here means every critical, internet-facing finding has a named owner and a fix date inside your existing sprint tool within a week of being discovered, and someone can produce that list on request without digging through old chat threads.
Building The Capability (5-Stage Skill Ladder)
How to Get Started
Disclosure: We may earn a commission if you buy through some links on this page. It doesn't change what we recommend.
Vanta fits once you are tracking controls against a framework like SOC 2 and want the evidence pulled automatically instead of collected by hand every quarter.
Drata is worth a look if you are working toward more than one compliance framework at once and want a single dashboard tracking all of them.
Frequently Asked Questions
Do we need a formal audit before we can sell to enterprise customers?
Many enterprise procurement teams will ask for a SOC 2 report or a completed security questionnaire, not a raw audit document. Running an internal audit first is still the right move: it is what gets you ready to answer that questionnaire honestly, and it surfaces the gaps a SOC 2 auditor would otherwise flag.
How often should we repeat this process?
Review the exposed surface and access list quarterly at minimum. Anything customer-data-adjacent deserves continuous monitoring through automated tooling rather than a calendar reminder, since a new exposed subdomain or an overlooked API key does not wait for your next scheduled review.
What do we do about a finding we can't fix right away?
Document the compensating control you have in place, who owns the risk, and a date to revisit it. Hiding an unresolved finding is worse than disclosing it: it shows up later as a surprise during due diligence or, worse, as an incident you did not see coming.
Sources
Where we quote a benchmark, we show its source. Other figures in this guide are estimates or general guidance, so check them against your own numbers.
- Security patch remediation SLAs (CISA federal mandates, used as industry norm). CISA Binding Operational Directives 19-02 and 22-01 (CISA briefing hosted at NIST CSRC), 2022.
Related Guides
CrowdStrike vs SentinelOne vs Microsoft Defender: Best EDR
Comparing CrowdStrike Falcon, SentinelOne Singularity, and Microsoft Defender for Endpoint: agent footprints, kernel vs eBPF, pricing, and SOC reality.
Why Most "Audit Logs" Wouldn't Survive an Actual Audit
Tamper-evident audit logging needs more than your application's normal logs. Here is what build versus buy really means, and where compliance platforms fit.
Why SOC 2 Gets Harder After Your First Audit
Why maintaining SOC 2 compliance is harder than earning the first report, and how to keep evidence current instead of scrambling before every renewal.
Terraform vs. Pulumi: Building Real Governance Into Your IaC
How to add policy checks, state locking, and review gates to Terraform or Pulumi so infrastructure changes stay auditable instead of ad hoc.
Where Production Deployment Budgets Quietly Leak
The recurring places engineering teams overspend on production deployment architecture, and a practical order for fixing them without a full rebuild.
Where Container Security Actually Breaks Down in Practice
Image scanning catches known vulnerabilities but misses what a container does after it starts. Here is what real container hardening also requires.