What do you need help with?

We are here and ready to help.
Email: servicedesk@socfortress.co

Vulnerability Management - A practical and systematic approach

Vulnerability Management - A practical and systematic approach

Introduction

As a general rule, any detected vulnerabilities of any severity should be patched as soon as possible.

CVSS vs EPSS – Why EPSS is More Practical in Real-World Operations

  • CVSS (Common Vulnerability Scoring System)

    • Designed to be universal and standardized.

    • Provides a severity score (0–10) based on exploitability + impact metrics.

    • Issues in practice:

      • Many CVEs end up with high scores (7–10)alert fatigue.

      • CVSS does not factor in whether a vuln is being actively exploited in the wild.

      • Static → doesn't change once published, even if threat landscape evolves.

  • EPSS (Exploit Prediction Scoring System)

    • Focuses on likelihood of exploitation in the next 30 days.

    • Uses real-world data (threat intel feeds, malware samples, honeypots, etc.).

    • Why it's more practical:

      • Lets you prioritize patching based on threat activity, not just theoretical risk.

      • A CVE with CVSS 9.8 but EPSS 0.2% = probably low urgency.

      • A CVE with CVSS 6.5 but EPSS 80% = patch immediately.

    • Best practice: Use CVSS for baseline severity and EPSS for prioritization.

In short: CVSS = “impact if exploited”, EPSS = “chance it will be exploited soon”.
Combining both prevents wasted effort on “paper tigers”.

 

How to check for Vulnerabilities using SOCFortress SIEM

Option 1 – Using SOCFortress Copilot

Lon into your Copilot instance, and from there Agents – Agents List

Select an agent (left panel) and go to the “Vulnerabilities” tab:

 

 

Vulnerabilties can be listed by priority.

Obtaining full details for any given vulnerability.

Select a vulnerability and a new panel will show the following information:

- General data for this particular CVE:

 

 

- External reference (vendor's info about this CVE)

 

 

- EPSS Score:

 

 

Option 2 – Using Wazuh UI

Log into your Wazuh UI instance and navigate to Threat Intelligence – Vulnerability Detection:

 

 

NOTE: The vulnerabilty module included in Wazuh does NOT include EPPS values out of the box. These scores are available via SOCFortress integration.

 

Option 3 – Using Grafana

Only avaiable in the MSP/MSSP organization in Grafana.

Since the vulnerability module doesn't take into account agent's group, all the vuln for all tenants will be displayed.

It is not possible to create separate dashboards for each tenant.

 

 

In this dshboard there's a panel with CVE IDs and a direct link to EPSS API to check their exploitation scores:

 


Prioritization Strategy for Patching Endpoints

When deciding what to patch first, think of it as a matrix of three dimensions:

  1. Threat likelihood → (EPSS, threat intel, active exploits).

  2. Technical severity → (CVSS, local exploitability, privilege required).

  3. Business impact / criticality → (asset value, role in operations, exposure).

Concrete approach:

  • Critical servers & internet-facing assets first (domain controllers, VPN gateways, jump hosts, web servers).

  • Business-critical endpoints/apps (finance systems, endpoint agents that handle sensitive data, executive laptops).

  • High-risk vulns (high EPSS, known exploited CVEs → per CISA KEV catalog).

  • Everything else → regular cycle.

A good formula for prioritization is:
Risk = (CVSS Score × EPSS Probability × Asset Criticality Weight)

Practical Guide: Asset Criticality Weighting

We'll use a 1–5 scale (1 = low, 5 = highest) that plugs into your risk formula:

Risk = (CVSS × EPSS × Criticality Weight)


Domain & Identity Infrastructure

  • Domain Controllers, AD FS, LDAP serversWeight 5

    • Compromise = total domain compromise.

    • Identity = single point of failure for authentication.

  • PKI / Certificate AuthoritiesWeight 5

    • Forged certificates = invisible lateral movement.

Network & Perimeter

  • Firewalls, VPN gateways, reverse proxies, WAFsWeight 5

    • Internet-exposed, first line of defense.

    • Compromise often leads to immediate access.

  • Routers, core switchesWeight 4

    • Network availability + traffic control.

    • Exploits can enable man-in-the-middle or outage.

NOTE: More on vulnerability management for network devices later in this article


Core Business & Application Servers

  • Email servers (Exchange, O365 hybrid)Weight 5

    • Initial access vector, sensitive comms.
  • ERP, Finance, HR, CRM systemsWeight 5

    • Directly tied to regulatory & financial risk.
  • File servers with sensitive/confidential dataWeight 4–5

    • Depends on data classification.
  • Application servers (internal, not business-critical)Weight 3


Endpoints & User Devices

  • Executive laptops / privileged user endpointsWeight 4–5

    • High-value target, lateral movement potential.
  • Standard employee workstationsWeight 2–3

    • Still important, but impact is limited compared to infra servers.
  • Kiosk / shared devicesWeight 1–2

    • Low data value, easy to reimage.

Special Categories

  • OT/ICS systemsWeight 5

    • Safety, uptime, compliance risk.
  • SIEM / SOC tooling, Backup serversWeight 5

    • Compromise = blind defenders, lost recovery ability.
  • Dev/Test environmentsWeight 1–2

    • Unless directly exposed or sharing creds with prod.

How to Operationalize It

  1. Tag assets in CMDB/EDR/AD with categories:

    • role=domain_controller

    • role=finance_server

    • role=workstation_standard

  2. Assign weights automatically based on role → feeds into risk calculation.

  3. Review quarterly with IT + business owners:

    • E.g., “Does this new cloud HR system count as critical?”
  4. Refine scoring with exposure:

    • Critical system + internet-exposed = extra multiplier.

    • Example: Exchange on-prem OWA facing internet → 5 × 2.

 

Summary table – Asset Criticality

 

Asset Type Confidentiality Impact Integrity Impact Availability Impact Regulatory / Business Impact Suggested Criticality Weight (1–5)
Domain Controllers / Identity Systems (AD, LDAP, ADFS) Very High – compromise = access to all users/creds Very High – attacker can alter accounts/policies High – outage breaks authentication High – entire org trust model 5
PKI / Certificate Authority Very High – ability to issue rogue certs Very High – undermines all TLS/signing Medium High – invisible persistence, compliance 5
Perimeter Firewalls, VPN Gateways, Reverse Proxies High – configs may expose networks High – can modify/redirect traffic Very High – outage = business cut off High – often internet-exposed 5
Routers / Core Switches Medium High – traffic manipulation Very High – loss = network outage Medium 4
Email Servers (Exchange, O365 Hybrid, Mail Relays) High – sensitive comms, phishing risk High – attacker can alter mail flow High – email downtime cripples comms High – often regulatory (e.g., GDPR) 5
ERP / Finance / HR / CRM Systems Very High – holds PII, payroll, customer data High – data integrity critical Medium – can tolerate short downtime but major disruption High – financial, legal, compliance 5
File Servers (sensitive data) High → Very High (depends on classification) High High High – data leakage/regulatory fines 4–5
Standard Application Servers (non-critical) Medium Medium Medium Low–Medium 3
Executive / Privileged User Laptops High – contain sensitive docs/creds High – attacker can escalate privileges Medium Medium–High 4–5
Standard Employee Workstations Medium Medium Medium Low 2–3
Kiosk / Shared Devices Low – little/no sensitive data Low Low–Medium Low 1–2
OT / ICS Systems (SCADA, PLCs, HMIs) Medium (often limited data) High – manipulation can cause damage Very High – safety/uptime critical High – regulatory/health & safety 5
SIEM, SOC Tooling, Security Appliances (EDR, IDS, Backup) High – contain logs & telemetry High – attackers can blind detection High – loss = weak detection/recovery High – undermines defense entirely 5
Dev/Test Environments Low Low Low Low (unless sharing creds with prod) 1–2

 


Example in Practice

  • CVE-2025-1234

    • CVSS = 8.8

    • EPSS = 0.7 (70% chance exploited soon)

    • Asset = Domain Controller (weight = 5)

      Risk = 8.8 × 0.7 × 5 = 30.8 (Very High Priority)

  • Same vuln on a test lab server (weight = 1)
    Risk = 8.8 × 0.7 × 1 = 6.1 (Low Priority)

 

Periodic Patching Cycles – Windows Example

  • Windows Patch Tuesday → Microsoft releases security updates the second Tuesday of each month.

  • Practical approach:

    • Day 0–2: Review advisories (filter by KEV catalog, EPSS, business relevance).

    • Day 3–5: Test patches in staging or pilot group (lab + subset of endpoints).

    • Week 2: Rollout to production for critical/high-risk assets.

    • Week 3–4: Broad deployment to all endpoints.

    • Out-of-band patches (for 0-days with active exploitation) → fast-track deployment, bypass cycle.

  • Automation:

    • Use WSUS, Intune, or SCCM for policy-driven rollouts.

    • Enforce deadlines but allow for short deferrals (to prevent downtime during key business hours).

    • Use reports/dashboards to confirm patch coverage (target >95%).

  • Metrics to track:

    • Mean Time to Patch (MTTP).

    • % of endpoints patched within 7, 14, 30 days.

    • Coverage of KEV vulnerabilities patched.


Extra Practical Considerations

  • Compensating Controls: If patching can't happen quickly, apply endpoint firewall rules, application control, or EDR mitigations (e.g., block PoC exploit commands).

  • Third-Party Apps: Don't forget Adobe, Java, Chrome, Zoom, etc. → often abused and left unpatched.

  • Linux/macOS endpoints: Use apt, yum, brew, or enterprise patch managers to standardize.

  • Communication: Coordinate with business owners. Sometimes delaying a non-exploited patch is better than disrupting a critical workflow.

 

Network Devices: Build a trustworthy inventory (facts you must capture)

Use NetDisco (SNMP/CLI/API discovery) to collect and keep updated, at minimum: device type, vendor, model, OS/firmware name and version, serial, role, site, and management IP.

SOCFortress professional services include the option of deploying NetDisco as a network inventory tool. More info here: https://socfortress.medium.com/socfortress-integrations-network-discovery-and-inventory-using-netdisco-d218b2711985 

NetDisco already inventories gear into Postgres via SNMP/CLI/device APIs, which is perfect as your source of truth.

Tip: normalize versions on ingest (e.g., PAN-OS 9.1.3panos 9.1.3, FortiOS v7.2.6-build1517fortios 7.2.6) so downstream matching is reliable.

Map devices to CPEs (the trickiest part)

NVD matching works best when you can map a device to a CPE (Common Platform Enumeration). Use a small vendor/model → CPE mapping table you control (don't rely on fuzzy matching alone).

  • Pull valid CPE Match Criteria and CVE data from NVD v2 APIs:

    • CPE Match: .../rest/json/cpematch/2.0

    • CVE data: .../rest/json/cves/2.0 (NVD)

Reality check: some network-gear version strings don't map cleanly to NVD CPEs (different marketing vs. engineering names). Keep a manual override field for tough models.

Enrich with live risk signals (beyond CVSS)

Once you have CVEs for each CPE/version, enrich each CVE with:

  • EPSS (likelihood of exploitation)—query the FIRST EPSS API for the CVEs you found. High EPSS (e.g., ≥0.5) = higher urgency even if CVSS is moderate. (first.org, api.first.org)

  • CISA KEV (known exploited in the wild)—if present, escalate to “emergency” queue. (NVD flags KEV; you can also sync a KEV feed.) (NVD)

  • Vendor PSIRT advisories (often clearer than NVD for network gear, and include fixed versions/upgrade paths):

Scoring & prioritization (simple and effective)

For each device/version, compute a patch priority per CVE and keep the top result per device:

priority_score = (CVSS_base or 0) × (1 + EPSS) × criticality_weight × exposure_weight × KEV_multiplier

  • criticality_weight: Core routing/DC edge/VPN gateways > distribution > access.

  • exposure_weight: Internet-facing or partner-exposed > internal.

  • KEV_multiplier: 3–5× bump if in KEV.

  • If vendor PSIRT lists active exploitation or exploitable without auth, bump again.

Make it actionable: firmware upgrade plans

Vendor advisories usually say “fixed in ≥ X.Y.Z”. Use that to build per-platform upgrade recommendations (not a CVE list). For each device family/version:

  • Target minimum safe train (e.g., “PAN-OS ≥ 10.2.9-h2”, “IOS-XE 17.9.5a”, “FortiOS 7.2.7”).

  • Bundle changes into maintenance windows per site/role.

  • Generate pre-checks/post-checks and back-out plans (config save, image staging, health checks).

Automation design (lightweight & robust)

Data flow

  1. Discovery (NetDisco) → device facts table. (Welcome to Netdisco!)

  2. Normalizer → standardize vendor/model/version; add role/site/owner.

  3. CPE Resolver → map vendor/model/version → candidate CPEs (cache). (NVD)

  4. Vuln Fetcher → NVD CVE API (per CPE/version, rate-limited & cached). (NVD)

  5. Enricher → EPSS, KEV, PSIRT APIs. (api.first.org, NVD, Cisco DevNet, security.paloaltonetworks.com)

  6. Scorer → compute priority_score + recommend fixed train.

  7. Planner → group by platform/site; produce change tickets & windows.

Governance & cadence (what to do every month/quarter)

  • Monthly: ingest new advisories (NVD + PSIRT), recompute priorities, refresh upgrade plans per platform.

  • Quarterly: target a minimum safe train per platform; push everything below it up, even if no hot CVE—this reduces technical debt.

  • Emergency: if KEV or active exploitation appears (e.g., edge/VPN devices), fast-track within the next window (or immediately with an expedited CAB). Real-world example: widely exploited NetScaler bugs prompting accelerated deadlines. (TechRadar)

Common pitfalls (and how to avoid them)

  • CPE mismatches → keep a curated mapping and allow manual overrides.

  • Vendor “fixed” versions not in NVD yet → trust vendor PSIRT first for upgrade target; use NVD for CVE detail. (Cisco DevNet, security.paloaltonetworks.com, FortiGuard)

  • Chasing CVSS alone → use EPSS + KEV to avoid busywork. (api.first.org, NVD)

  • Operational risk → always stage images, pre-check health (CPU/mem/BGP neighbor count, HA state), and have a back-out plan.


Facebook Share Tweet

Was this article helpfu?

Yes No

Thank you for voting

×
Select company

You are related to multiple companies. Please select the company you wish to login as.