Most false positives in vulnerability scans come from the scanner guessing. It reads a version banner, misses a patch that a Linux distribution backported, or scans without credentials and can't see what's actually installed. You tame them by giving the scanner better data, validating findings before anyone is asked to fix them, running an exception process with evidence and expiry dates, and tuning the scanner over time. The result is an IT team that trusts the findings enough to act on them.

What counts as a false positive?

A false positive is a reported vulnerability that isn't actually present on the asset. That sounds simple, but teams often use the label for things that are really something else, and that muddies both the metrics and the conversation.

What the finding really is What it means How to handle it
False positive The vulnerability is not present Suppress narrowly, with evidence
Not exploitable here The flaw is present, but the vulnerable feature is unused or unreachable Risk decision by the asset owner, with an expiry
Mitigated The flaw is present, but a compensating control reduces the risk Document the control; review before expiry
Duplicate The same issue is reported twice, often under different identifiers or asset records Fix the asset or finding deduplication

Keep these categories separate. A vulnerable library that's installed but unused is still a real finding, and the next application update might start using it.

Why do vulnerability scanners report false positives?

Version and banner detection

Unauthenticated network checks often infer a version from a service banner or HTTP header and compare it with the affected range in an advisory. Banners can be generic, deliberately altered, or belong to a load balancer or proxy rather than the application behind it. Some advisories only apply when a particular module or option is enabled, which a banner can't show.

Backported patches in Linux distributions

This is the single biggest source we see. Enterprise and long-term-support Linux distributions usually fix security issues by backporting the patch into the version they already ship, instead of moving to the new upstream release. The package still reports the old upstream version number, with a distribution-specific release suffix that shows the fix.

A scanner that only compares upstream version numbers will flag the package as vulnerable when it isn't. Distributions publish their own security advisories and per-CVE tracker pages listing the fixed package version for each release. Those are the evidence you need.

Unauthenticated scans

Without credentials, the scanner sees only what the network exposes, and every detection is an inference. Some checks flag everything in a product family as "potentially vulnerable" because they can't narrow it down further. Unauthenticated scans also miss locally installed software entirely, so they generate false positives and false negatives at the same time.

Stale data

Plenty of "false positives" are really old news:

  • Findings on hosts that were decommissioned or reimaged but never rescanned
  • Results attached to an IP address that DHCP has since given to a different machine
  • Short-lived cloud instances and containers that no longer exist
  • Outdated detection content in the scanner itself

There's one trap to be aware of. A patch installed without a reboot often leaves the old kernel or library in memory. The scanner may be right to flag it until the system restarts.

How do you validate a scan finding?

Validation should be fast and repeatable, and security should do it before a finding reaches IT. A short routine works for most cases:

  1. Read the evidence. Good scanners show exactly what they saw, such as a banner string, file path, registry value or package version. Start there.
  2. Check what is installed. Query the package manager or file version on the host. On RPM-based systems, rpm -q --changelog <package> | grep CVE-YYYY-NNNNN often shows whether a fix was backported.
  3. Compare with the right advisory. Use the distribution's or vendor's advisory for your exact release, not the upstream project's version range. Where a vendor publishes a VEX (Vulnerability Exploitability eXchange) statement saying a product is not affected, keep it as evidence.
  4. Check the configuration. Confirm whether the vulnerable module, feature or service is actually enabled.
  5. Rescan the single host. After correcting credentials or detection settings, rescan to confirm the result.
  6. Record the outcome. Save the evidence with the finding so nobody has to repeat the work.

Time-box it. If a finding can't be confirmed or ruled out in a reasonable window, treat it as real and let the owner provide counter-evidence.

Why does credentialed scanning reduce false positives?

Credentialed scans and endpoint agents read the package database, registry and file versions directly instead of guessing from the outside. In our experience, switching a network from unauthenticated to credentialed scanning removes a large share of version-guess findings. It also surfaces real issues the unauthenticated scan never saw.

Do it carefully:

  • Use a dedicated service account with only the privileges the scanner needs.
  • Store its credentials in a vault or the scanner's protected store, and rotate them.
  • Monitor the account's activity, because it can log in almost everywhere.
  • Check that authentication actually succeeded. Most scanners report hosts where credentialed checks failed, and that list should be short. Track the authentication success rate as a metric.

Agents suit laptops that rarely sit on the corporate network and cloud workloads that a central scanner can't reach.

How should an exception workflow work?

Every finding that won't be fixed needs a documented route. Otherwise, suppressions accumulate quietly and nobody can explain them a year later.

Each exception record should capture:

  • The specific finding and the specific asset or group of assets
  • The exception type (false positive, not exploitable, mitigated or deferred fix)
  • The evidence, such as command output, an advisory link or configuration details
  • Who requested it and who approved it
  • An expiry date
Exception type Evidence required Approved by Example expiry
False positive Installed version plus vendor or distribution advisory showing it is fixed Security 6–12 months, or at the next major change
Not exploitable here Proof the vulnerable feature is disabled or unreachable Asset owner, reviewed by security 90–180 days
Mitigated Description and verification of the compensating control Asset owner, reviewed by security 90 days
Deferred fix Remediation plan and target date Risk owner The target date

False positives expire too. Scanner logic changes, packages are updated and systems get rebuilt, so an exception that was valid last year may now hide a real issue.

Scope suppressions tightly: one check on one asset, not the check across the whole environment. Report regularly on how many exceptions exist and which are about to expire.

How do you tune a vulnerability scanner?

Tuning is ongoing maintenance, not a one-off project. Focus on the settings that affect accuracy:

  • Keep detection content current and schedule scans after updates.
  • Get OS detection right. Distribution-aware checks depend on the scanner correctly identifying the operating system and release.
  • Decide what to do with "potential" findings. Many scanners have settings that report unconfirmed or inferred vulnerabilities. Choose deliberately whether those go into remediation queues or a separate review list.
  • Identify assets by something stable. Track hosts by agent ID, hostname or cloud instance ID rather than IP address alone.
  • Age out stale assets. Close or quarantine findings on assets not seen within a set period, and send the "not seen" list to whoever owns the asset inventory.
  • Be careful when disabling checks. Turning off a noisy check family can create false negatives. Do it only for platforms you truly don't run, and document why.
  • Report false positives to the scanner vendor. Detection logic improves when customers send evidence.

How do you keep trust between security and IT?

False positives are a technical problem, but the damage is to the relationship. Every bogus ticket teaches the IT team that the scanner can't be trusted, and eventually real findings get the same treatment.

A few practices make a real difference:

  • Security owns triage quality. Never forward a raw export. The team that runs the scanner validates before assigning.
  • Make disputes easy. Give IT a simple way to challenge a finding with evidence, and commit to answering within a set number of days.
  • Measure yourselves. Track the percentage of assigned findings later confirmed as false positives and share it openly. It's a quality metric for the security team.
  • Close the loop. When IT spots a genuine false positive, suppress it everywhere it applies and tell them it's done.
  • Agree the rules up front. Settle severity definitions, SLAs and exception criteria together, so disagreements are about evidence rather than process.

Frequently asked questions

What is an acceptable false positive rate?

There's no universal number. Track your own rate over time and by check. A handful of noisy checks usually account for most of the problem, and those are where tuning pays off first.

Should the SLA clock stop while a finding is disputed?

Only briefly. Allow a fixed review window, such as five business days, for security to rule on the dispute. If the finding is confirmed, the original deadline stands. Open-ended pauses turn disputes into a way of avoiding work.

Should we delete false positives from the scanner?

No. Mark them as exceptions with evidence and an expiry date. Deleting them removes the audit trail, and the same finding will return on the next scan.

Key takeaways

  • Most false positives come from version guessing, backported Linux patches, unauthenticated scans and stale asset data.
  • Credentialed scanning or agents should be the default, with authentication success tracked as a metric.
  • Validate findings before assigning them, and keep the evidence with the finding.
  • Run every exception, including false positives, through a workflow with evidence, an approver and an expiry date.
  • Treat accuracy as a shared goal with IT. Trust in the findings is what gets vulnerabilities fixed.