Back to blog
engineering

62% of Security Teams Say 25%+ of Alerts Are False Positives

Snyk: 62% of teams say 25%+ of vulnerability alerts are false positives. 60% say automation made it worse. The alert fatigue problem.

Dennis Vorobyov
Dennis Vorobyov
Founder & CEO
March 17, 2024 · 6 min read

Cisco's 2025 Security Outcomes Study found that 62% of security teams say 25% or more of their alerts are false positives. Palo Alto Networks' Unit 42 puts the number higher: 44% of alerts across typical enterprise deployments are false positives. The Ponemon Institute found that security teams spend an average of 25 minutes investigating each alert, regardless of whether it is real.

25 minutes per alert. 44-62% false positive rate. For a team receiving 200 alerts per day, that is 88-124 false alerts consuming 37-52 hours of daily investigation time. That is not a security problem. It is an engineering problem. The tools detect everything. The teams cannot process what the tools detect.

Why False Positives Pile Up

Tools are tuned for recall, not precision

Security vendors sell on the promise that they will catch everything. Missing a real attack is catastrophic (headlines, lawsuits, regulatory fines). Missing a false positive is invisible (nobody knows about the alert that was investigated and dismissed). So the tools are calibrated to minimize false negatives at the expense of false positives.

This is a rational business decision for the vendor. It is an operational disaster for the customer. An alert system that cries wolf 50% of the time trains the team to ignore alerts. Alert fatigue is not a psychological weakness. It is a rational response to a system that is wrong half the time.

Default rules do not fit every application

Out-of-the-box WAF rules, SIEM correlations, and vulnerability scanners generate alerts based on generic patterns. "SQL injection attempt detected" fires on any request containing a single quote — including legitimate search queries, user comments with apostrophes, and API calls with properly escaped parameters.

These default rules are appropriate for a generic web application. They are wildly noisy for a specific application with known patterns, specific input formats, and well-defined API contracts. The team's job is to tune the rules to the application. Most teams never do this because tuning requires application-specific knowledge that the security team may not have and the development team does not prioritize.

Legacy alerts from deprecated systems

Alert rules accumulate like technical debt. A rule created 3 years ago for a vulnerability in a library that has since been replaced still fires because nobody removed the rule. A WAF policy written for the old URL structure still triggers because the redirect preserves the path pattern. A SIEM correlation designed for the previous hosting provider's IP range still matches because the IP ranges overlap.

Alert rules need the same lifecycle management as code: creation, review, update, and retirement. In practice, they only get creation. Nobody reviews whether an alert rule is still relevant because the person who created it left 2 years ago and the documentation (if any) does not explain the context.

What False Positives Cost

Direct investigation time

200 alerts/day × 25 minutes/alert × 50% false positive rate = 42 hours/day of wasted investigation. For a 5-person SOC team, that is 8.4 hours per person per day investigating alerts that turn out to be nothing. The team has no time left for actual security work: threat hunting, vulnerability assessment, incident response planning, and architecture review.

The Ponemon Institute calculates the average annual cost of false positive investigation at $1.3 million for a mid-size organization. That is salary cost alone — not counting the opportunity cost of security work that does not happen because the team is drowning in false alerts.

Alert fatigue and missed real threats

This is the dangerous cost. When 50% of alerts are false, the team starts triaging by pattern rather than by analysis. "That alert fires every day, it is always false, skip it." Until the day it is not false. Until the day the attacker crafts their attack to look like the familiar false positive.

IBM's Cost of a Data Breach report found that the average time to identify a breach is 194 days. Alert fatigue is a contributing factor. The signal was in the noise. The team had been trained by the system to ignore it.

Engineer productivity drag

When security scanning is integrated into the CI/CD pipeline (as it should be), false positive alerts block deployments. A supply-chain scanning tool that flags a dependency as vulnerable when it is not (the vulnerability is in a different version, or in a code path the application does not use) blocks the PR until a security engineer reviews and dismisses the finding.

If the security engineer takes 4 hours to respond (because they are investigating the other 200 alerts), the developer waits 4 hours to merge. Multiply by 3-5 false positive blocks per week across a 10-person team and the pipeline integration that was supposed to "shift security left" has become a productivity bottleneck.

How Engineering Reduces False Positives

The fix is not a better security tool. It is better engineering around the tools you have.

Tune rules to the application

Generic WAF rules should be customized within the first month of deployment. Review the alert log. Identify the top 10 false positive patterns. Write exception rules for the known-good patterns. A WAF that fires 50 times/day on legitimate apostrophes in user comments is not protecting you. It is wasting your time.

Our DevOps services include security tooling configuration as part of infrastructure setup. When we deploy a WAF or enable security scanning in CI/CD, we tune the rules to the application within the first 2-4 weeks. The goal is a false positive rate under 10%, not under 50%.

Implement alert tiers

Not all alerts are equal. A failed SSH login attempt on a development server is not the same severity as an SQL injection attempt on a production database. Tiered alerting routes critical alerts to immediate response, medium alerts to daily review, and low alerts to weekly audit.

The tiering must be application-aware. A failed login on the admin panel is critical. A failed login on a public-facing app where users forget their passwords 100 times per day is noise. The difference requires engineering context that generic tools do not have.

Lifecycle-manage alert rules

Every alert rule gets a review date, an owner, and a justification. Quarterly reviews: is this rule still relevant? Has the vulnerability been patched? Has the system it monitors been decommissioned? Does the threshold still make sense given current traffic patterns?

This is the same discipline as dependency management. Alert rules are code. They need maintenance, review, and eventual retirement.

Build security into the application, not just around it

Application-level security controls (input validation, parameterized queries, output encoding, CSRF tokens, proper authentication) prevent the attacks that WAF rules try to detect after the fact. A SQL injection attempt against a parameterized query is harmless — no alert needed. A SQL injection attempt against string-concatenated SQL is dangerous — but the fix is the code, not the WAF.

When we build applications for clients, security is in the code from sprint 1. Parameterized queries everywhere. Input validation on every endpoint. Output encoding in every template. CSRF protection on every form. CSP headers on every page. The WAF is a backup layer, not the primary defense. The alert volume from the WAF is low because the application is not vulnerable to the attacks the WAF detects.

This is the approach we applied to our own site. Content-Security-Policy headers deployed in report-only mode first, then hardened. npm audit on every build. Dependency scanning with documented risk acceptance. The security is in the engineering, not in the alert dashboard.

The Takeaway

62% of security teams say a quarter of their alerts are false. The actual number is likely higher. The cost is measured in wasted investigation time ($1.3M/year average), alert fatigue that lets real threats slip through (194 days to detect a breach), and engineering productivity blocked by noisy CI/CD security gates.

The fix is engineering discipline applied to security tooling: tune rules, tier alerts, lifecycle-manage configurations, and build security into the application so the detection layer has less to detect. Better security through better engineering, not through more alerts.

Talk to us →

Last updated March 17, 2024

Need engineers who think this way?

Senior developers on retainer. Same team, month 1 and month 36+.

Talk to us