Vulnerability Management
Vulnerability management is the operational discipline of finding, prioritizing, and fixing security weaknesses. It's repetitive work that never ends — new vulnerabilities are disclosed continuously.
This page covers the practices that make it sustainable.
The cycle
The vulnerability management lifecycle:
1. **Discover**: scan; intake from disclosures
2. **Prioritize**: which matter most
3. **Remediate**: fix or mitigate
4. **Verify**: confirm fixes
5. **Report**: track progress; demonstrate compliance
Each step has its own tooling and process.
Discovery
Internal scanning
Scan your own systems regularly:
- **Network scans**: Nessus, Qualys, OpenVAS — find network-level issues
- **Web app scans**: OWASP ZAP, Burp Suite — find web vulnerabilities
- **Container scans**: Trivy, Grype — find image vulnerabilities
- **Dependency scans**: Dependabot, Snyk — find library vulnerabilities
- **Cloud config scans**: AWS Inspector, Prisma Cloud — find misconfigurations
Different scans find different things. A mature program runs several.
External notifications
- **CVE databases**: NIST NVD, CISA KEV (Known Exploited Vulnerabilities)
- **Vendor disclosures**: cloud providers, OS vendors
- **Bug bounty programs**: external researchers
- **Threat intelligence**: paid services
Asset inventory
You can't scan what you don't know about. Maintain:
- Inventory of services, hosts, containers
- Owners per service
- Dependencies and contact for each
Without inventory, scans miss things; remediation has no owner.
Prioritization
Discovered vulnerabilities almost always exceed remediation capacity. Prioritize.
CVSS scores
Common Vulnerability Scoring System. 0-10 scale; CVSS 9+ = critical; CVSS 7+ = high.
CVSS is a starting point. Real prioritization considers:
Exploitability
Known to be exploited in the wild? CISA's KEV catalog tracks this.
A CVSS 7 actively exploited > a CVSS 9 not yet exploited.
Reachability
The vulnerability is in code/system that's actually exposed? An RCE in a service behind a VPN is different from an RCE on the public internet.
Affected systems
How many systems? Critical paths or backend?
Exploit availability
Public exploit code makes the vulnerability much higher priority.
A reasonable framework:
- **Critical and exploitable and exposed**: fix in days
- **Critical or actively exploited**: fix in days/weeks
- **High severity**: fix in weeks
- **Medium**: fix in months
- **Low**: when convenient
Remediation
Patch
Apply the vendor's update. Most vulnerabilities have patches.
For library vulnerabilities, update the library. For OS vulnerabilities, OS update.
Mitigate
Sometimes patching isn't possible quickly. Mitigations:
- Network controls (block at firewall)
- Configuration changes (disable feature)
- WAF rules (block specific patterns)
- Compensating controls (additional monitoring)
Mitigations buy time until patches deploy.
Accept the risk
Sometimes the cost of remediation exceeds the risk. Document; review periodically; revisit when context changes.
This requires accountability — risk owners, formal acceptance, periodic review. Not "we won't fix it because it's hard."
Verification
After remediation, verify:
- Re-scan to confirm vulnerability is gone
- Test the fix actually works
- Document the verification
Without verification, you don't actually know the vulnerability is fixed. The patching script ran; that's not the same as the vulnerability being gone.
Reporting
Vulnerability management metrics:
- **MTTR (Mean Time To Remediate)**: by severity
- **Vulnerability backlog**: open vulnerabilities by age, severity
- **Trend**: improving or worsening?
- **SLA compliance**: vulnerabilities fixed within targets?
Reports for:
- Engineering teams (their work)
- Security team (overall posture)
- Leadership (risk picture)
- Compliance auditors
Specific patterns
Automate easy patches
Dependabot auto-merges minor updates after CI passes. Reduces manual work for low-risk updates.
Owner per service
Every service has an owner who's accountable for vulnerabilities. Without ownership, fixes don't happen.
SLAs by severity
Critical: 7 days. High: 30 days. Medium: 90 days. Low: 180 days. Vary based on org's risk tolerance.
Continuous scanning
Don't wait for the quarterly scan. Continuous scanning catches issues quickly.
Exception process
For risk acceptance: documented; risk-owner-approved; time-bounded; reviewed.
Disclosure process
If you find a vulnerability in someone else's software, disclose responsibly. Coordinated disclosure: tell the vendor; give time to fix; publish after.
Bug bounty / VDP
Vulnerability Disclosure Program: how external researchers report vulnerabilities to you. Even if no bounty, having a process matters.
Common failure patterns
- **No prioritization.** All vulnerabilities treated as critical; nothing gets done.
- **Slow patching of critical CVEs.** Time-to-patch is a key metric.
- **No ownership.** Vulnerabilities found; nobody owns the fix.
- **No verification.** Patched but not verified.
- **Risk acceptance without governance.** "We won't fix it"; no review.
- **No asset inventory.** Scan misses things.
- **Compliance theater.** Scan reports filed; vulnerabilities unfixed.
A reasonable starter
For organizations starting vulnerability management:
1. **Inventory**: know what you have
2. **Continuous scanning**: at least dependencies and containers
3. **Severity-based SLAs**: with realistic targets
4. **Owner accountability**: each service has someone responsible
5. **Track and report**: visible metrics
6. **Iterate**: improve coverage and speed over time
The goal isn't zero vulnerabilities (impossible); it's sustainable management of the ones that matter.
Further Reading
- [SupplyChainSecurity](SupplyChainSecurity) — Where many vulnerabilities come from
- [NetworkSecurityFundamentals](NetworkSecurityFundamentals) — Adjacent practice
- [SecurityComplianceFrameworks](SecurityComplianceFrameworks) — Frameworks require this
- [CiCdPipelines](CiCdPipelines) — Where to integrate scanning