The Friday Deploy

The plain English newsletter for people who run the business, not the tech stack. No jargon. Every Friday.

Decoding Your Security Audit: What Actually Needs to Be Fixed First?

October 24, 2025

Your security audit report just arrived. It’s 42 pages long. The executive summary lists 127 vulnerabilities across your website and infrastructure. There are terms like “CVSS 7.8”, “SQL injection”, “XSS”, “CSRF”, “CVE-2024-xxxxx”, colour-coded severity ratings, and recommendations that range from “patch immediately” to “consider implementing”.

You have a limited budget, a developer who’s already busy with other projects, and no idea which of these 127 issues could actually take your site down versus which ones are theoretical problems that will never materialise.

This is the reality of security audits. They’re thorough, technically accurate, and completely overwhelming for non-technical decision-makers trying to figure out what actually matters.

Why Security Audits List Everything

Security auditors are paid to be thorough. Their job is to find every vulnerability, no matter how minor or unlikely to be exploited. They’re not making business decisions about what to fix. They’re documenting every potential issue so you can make those decisions.

This creates reports packed with findings of wildly different importance. Some vulnerabilities represent genuine immediate threats. Others are theoretical problems that would require an attacker with physical access to your server room at 3 AM while your monitoring systems are offline.

The audit treats all findings as problems requiring remediation. But in practice, you need to prioritise ruthlessly based on actual risk to your business, not theoretical completeness.

Understanding CVSS Scores (And Their Limitations)

Most security audits use CVSS (Common Vulnerability Scoring System) scores to rate severity. CVSS assigns vulnerabilities a score from 0 to 10, with qualitative ratings:

  • None: 0
  • Low: 0.1 to 3.9
  • Medium: 4.0 to 6.9
  • High: 7.0 to 8.9
  • Critical: 9.0 to 10.0

A CVSS score of 9.8 sounds terrifying. A score of 4.2 sounds manageable. The problem? CVSS measures severity in a vacuum, not actual risk to your specific business.

CVSS evaluates how bad a vulnerability could be if exploited, based on factors like attack complexity, required privileges, and potential impact. What it doesn’t tell you is whether the vulnerability is actually exploitable in your specific configuration, whether attackers are actively targeting it, or whether it affects a critical business function versus a rarely used admin panel.

Example: A critical CVSS 9.8 vulnerability in a development server that’s only accessible from your internal network behind a firewall is less urgent than a medium CVSS 6.5 SQL injection vulnerability on your public-facing checkout page that processes customer payments.

CVSS is a starting point, not the final answer. You need additional context to make smart prioritisation decisions.

The Questions That Actually Matter

When looking at any vulnerability in your audit, ask these questions to determine real priority:

Is this system publicly accessible? A vulnerability on a server accessible from the internet is exponentially more dangerous than one on an internal development server. Public exposure means any attacker anywhere can attempt exploitation. Internal systems require an attacker to first breach your perimeter.

What data or functionality does this affect? Vulnerabilities affecting payment processing, customer data, authentication systems, or critical business operations deserve immediate attention. Issues affecting rarely used admin features, internal tools, or non-sensitive data can wait.

Is this vulnerability being actively exploited? Some vulnerabilities have known exploits actively used by attackers. Others are theoretical problems nobody has figured out how to exploit in practice. The Exploit Prediction Scoring System (EPSS) provides probability scores for how likely a vulnerability will be exploited within 30 days. A CVSS 6.8 vulnerability with 94% EPSS likelihood is more urgent than a CVSS 9.8 that nobody’s exploiting.

How difficult is exploitation? Some vulnerabilities require an authenticated admin account, specific server configurations, and perfect timing to exploit. Others can be exploited by anyone with a web browser and two minutes. Complexity matters when prioritizing.

What’s the business impact if exploited? Think about actual consequences. Could this vulnerability cause financial loss, data breach, regulatory penalties, or service outage? Or would exploitation cause minor inconvenience that’s quickly resolved?

Is there a patch or mitigation available? If a fix exists and is straightforward to apply, prioritise it. If mitigation requires major architectural changes or platform upgrades, factor that timeline and cost into your decision.

Common Audit Findings and Their Real Priority

Let’s translate some typical audit findings into business context:

“Critical SQL Injection vulnerability in customer login (CVSS 9.8)” Real priority: Immediate. This allows attackers to access or modify database contents, potentially compromising all customer data. Exploitation is straightforward, the impact is severe, and it affects a public-facing critical function. Fix within days.

“Outdated jQuery library with known XSS vulnerabilities (CVSS 6.5)” Real priority: Depends. Is the vulnerable jQuery function actually used in your code? If the vulnerability exists in code that’s never executed, the risk is theoretical. Check with your developer whether the vulnerable functionality is reachable. If yes, fix within weeks. If no, defer to your next regular maintenance cycle.

“Missing security headers (CVSS 4.8)” Real priority: Medium. Security headers like Content-Security-Policy and X-Frame-Options provide defence-in-depth protection. They’re worth implementing but rarely the entry point for attacks. Add during your next deployment, not emergency weekend work.

“Weak SSL/TLS cipher suites enabled (CVSS 5.3)” Real priority: Medium. Modern browsers won’t use weak ciphers, but older systems might. The risk is mainly to legacy clients. Disable weak ciphers during regular maintenance, but this isn’t an immediate crisis unless your compliance requirements mandate specific cipher suites.

“Directory listing enabled on /assets/ folder (CVSS 3.1)” Real priority: Low. This reveals your file structure, which is mildly concerning but rarely leads directly to compromise. Unless the directory contains sensitive files (check this first), fix during routine updates.

“Server version disclosure in HTTP headers (CVSS 2.1)” Real priority: Very low. Yes, revealing your server version gives attackers information. But they can usually fingerprint your stack anyway through other means. This is defence-in-depth, not urgent remediation.

Dealing With False Positives

Security scanning tools generate false positives regularly. These are findings that appear in the report but don’t actually represent vulnerabilities in your specific context.

Common false positive scenarios:

Unreachable code. The vulnerability exists in a library you’ve installed, but your application never calls the vulnerable function. Static analysis tools flag the library’s presence without checking whether the code path is actually reachable.

Compensating controls. The audit identifies a missing security control (like input validation) but doesn’t see that you’re already protecting against the attack through a different mechanism (like a web application firewall).

Accepted business risk. Some “vulnerabilities” are intentional design decisions. For example, allowing users to upload profile images is flagged as a potential malicious file upload risk, but you’ve intentionally enabled this with appropriate validation and scanning.

Environmental differences. The scanner tested against a staging environment or made assumptions about your production configuration that don’t match reality.

Work with your developer to identify false positives and document why they’re not applicable. Don’t waste budget fixing problems you don’t actually have.

Prioritisation Framework

Here’s a practical decision framework for sorting audit findings (a similar prioritisation approach for technical debt works in the same way):

Fix immediately (within days):

  • CVSS 9.0+ on publicly accessible systems
  • Any vulnerability affecting payment processing or customer data
  • Active exploits being used in the wild (high EPSS scores)
  • Compliance-required fixes with upcoming deadlines
  • Vulnerabilities that could lead to complete system compromise

Fix soon (within weeks):

  • CVSS 7.0-8.9 on public systems
  • Medium severity issues on critical business functions
  • Outdated dependencies with known vulnerabilities in used code paths
  • Missing authentication or authorisation controls
  • Issues that could lead to data exposure

Fix during regular maintenance (1-3 months):

  • CVSS 4.0-6.9 on public systems
  • Low to medium issues on non-critical functions
  • Defense-in-depth improvements (security headers, cipher suites)
  • Outdated dependencies with no active exploits
  • Internal system vulnerabilities

Defer or accept the risk:

  • CVSS <4.0 informational findings
  • Vulnerabilities in unreachable code
  • Issues requiring major architectural changes with minimal business risk
  • False positives (document why)
  • Problems with compensating controls already in place

Working With Your Developer

Your developer will need to evaluate audit findings in the context of your actual codebase and infrastructure. They can determine whether vulnerabilities are exploitable in your specific configuration, whether recommended fixes will break functionality, and what effort is required for remediation.

Questions to ask your developer:

Is this vulnerability actually present in our production environment, or is this a staging/testing artifact? Is the vulnerable code path reachable and used, or is this dead code? What’s the effort to fix this (hours, days, weeks)? Are there any risks to implementing the recommended fix? Do we have compensating controls that mitigate this risk?

Don’t accept developer responses of “the audit is wrong” without detailed explanation. But also don’t blindly accept every audit finding without technical review. The truth usually lies in nuanced understanding of your specific situation.

Compliance vs. Security

If you’re subject to compliance requirements (PCI DSS, SOC 2, ISO 27001, etc.), some audit findings become mandatory regardless of actual security risk. Compliance frameworks often require specific controls that may feel like checkbox exercises.

Separate compliance-required fixes from security-prioritised fixes in your planning. You need to address compliance items on required timelines to maintain certifications, even if the security benefit is minimal. Budget accordingly.

Example: PCI DSS requires quarterly vulnerability scanning and remediation of high-risk findings within 30 days. That’s a compliance timeline, not necessarily the optimal security timeline. You might need to fix a CVSS 7.2 vulnerability that poses minimal real risk to your business simply because PCI requires it.

The Cost of Doing Nothing

Ignoring security audit findings creates accumulating risk. Vulnerabilities don’t fix themselves. As more become known publicly, exploitation becomes easier and more likely.

The costs of unaddressed vulnerabilities include potential data breaches (with associated notification costs, regulatory fines, and reputational damage), service outages from successful attacks, increasing remediation costs as technical debt compounds, compliance failures and lost certifications, and customer trust erosion if security incidents become public.

But attempting to fix everything immediately is equally problematic. You’ll waste budget on low-priority items while stretching resources thin and potentially introducing new bugs through rushed fixes.

The goal is informed prioritisation. Fix what matters most to your business first, based on actual risk and business context, not arbitrary CVSS scores or audit checkbox completion.

Getting a Second Opinion

If your audit findings seem overwhelming or your developer’s responses don’t make sense, consider getting a second technical opinion. Not every security consultant interprets findings identically. Some are more pragmatic about business context; others are absolutist about theoretical completeness.

A good security advisor will help you:

  • Validate which findings represent genuine immediate risks
  • Identify false positives and compensating controls
  • Create a realistic remediation roadmap with business priorities
  • Distinguish between compliance requirements and security improvements
  • Estimate reasonable timelines and costs for fixes

This is particularly valuable if you’re facing pressure from stakeholders (board, investors, customers) to “fix everything immediately” without context for what that means.

Creating Your Action Plan

Turn your audit into an actionable plan:

  1. Group findings by actual business risk using the prioritisation framework above
  2. Estimate effort and cost for each tier of fixes
  3. Schedule immediate fixes (CVSS 9.0+, critical business functions, active exploits)
  4. Plan medium-term fixes around your regular development cycle
  5. Defer or accept low-risk findings with documented reasoning
  6. Track compliance-required items separately with mandatory deadlines
  7. Review and update priorities quarterly as new vulnerabilities emerge

Share this plan with stakeholders. Explain why you’re fixing certain items immediately and deferring others. Transparency about prioritisation prevents confusion when someone asks “why haven’t we fixed all 127 vulnerabilities yet?”

The Bottom Line

Security audits are comprehensive inventories of potential problems. Your job isn’t to fix every finding. It’s to fix the findings that represent actual risk to your business.

Prioritise based on exploitation likelihood, business impact, and system exposure, not raw CVSS scores. Work with your developer to understand context. Separate compliance requirements from security improvements. Create a realistic remediation plan that addresses genuine threats without wasting budget on theoretical problems.

A good security posture isn’t about having zero audit findings. It’s about systematically addressing the vulnerabilities that actually matter while maintaining business operations.

Your audit report is a tool for informed decision-making, not a mandate to fix everything indiscriminately.

Read more Technical Translation

Compliance, CVSS, Risk Assessment, Security Audit, Vulnerability Management

Previous Next

The Friday Deploy

The plain English newsletter for people who run the business, not the tech stack. No jargon. Every Friday.