Application security posture management (ASPM) and unified vulnerability management (UVM) both promise "one queue for all findings", and organisations that buy both often end up with two queues, duplicated tickets and a fight over who owns an open-source library that appears in code, in container images and on servers. ASPM consolidates findings about the software you build, organised by application and owning development team. UVM consolidates findings about everything you run, organised by asset and owning operations team. This guide compares the two on scope, data model, deduplication, ownership and the awkward middle ground of software composition analysis (SCA) and supply chain risk. It is written for AppSec leads, vulnerability management owners and the security architects deciding where the system of record should sit. For each discipline on its own, read the Application Security Posture Management (ASPM) Guide and the Vulnerability Management Guide.
Key takeaways
- The unit of risk is different. ASPM counts risk per application and fixes it through code, dependency and pipeline changes; UVM counts risk per asset and fixes it through patches, configuration and compensating controls.
- Both are market categories, not standards. Product scope varies and is converging, so compare data models and workflows rather than feature lists.
- The overlap is open-source components. The same vulnerable package can be reported by SCA in a repository, by an image scanner in a registry and by a host scanner on a server; without shared identifiers it becomes three tickets for three teams.
- Deduplication has to happen at two levels. Each platform deduplicates inside its own domain, and someone must decide which platform deduplicates across domains and in which direction data flows.
- Ownership, not tooling, decides the design. Route by who can make the fix: developers for anything resolved in source or build, operations for anything resolved on the running asset, with one record per fix.
Short answer: what each category covers
Neither term is defined by a standards body. ASPM grew out of application security orchestration and correlation; UVM grew out of risk-based vulnerability management platforms that began ingesting more than their own scanner. The table reflects how most products in each category are built as of November 2026.
| Question | ASPM | Unified vulnerability management |
|---|---|---|
| Starting point | Source repositories, CI/CD pipelines, build artefacts | Asset inventory: hosts, endpoints, network devices, cloud resources, sometimes applications |
| Main inputs | SAST, SCA, secrets scanning, IaC scanning, DAST, SBOMs, pipeline metadata | Network and agent scanners, cloud posture tools, endpoint data, patch status, external attack surface data, imported AppSec findings |
| Unit of risk | Application or service with an owning development team | Asset or asset group with an owning operations or infrastructure team |
| Typical identifier | Repository, commit, package URL (purl), image digest | Hostname, IP address, agent ID, cloud resource ID, CPE |
| Fix mechanism | Pull request, dependency upgrade, base image change, pipeline gate | Patch deployment, configuration change, compensating control, risk acceptance |
| Primary user | AppSec team, developers, engineering managers | Vulnerability management team, IT operations, infrastructure owners, CISO reporting |
| Timing | Before release and continuously on the main branch | After deployment, on scan or agent cycles |
| Governing practice | NIST SP 800-218 SSDF practices, especially Respond to Vulnerabilities (RV) | NIST SP 800-40 Rev. 4 enterprise patch management planning, SP 800-53 RA-5 and SI-2 |
The short decision: ASPM is the better system of record for software you write and ship, UVM for software you buy and operate. Most organisations have both, so the real question is how to divide the work.
Threat model: what each is built to reduce
ASPM
ASPM targets risk introduced before software ships: injection flaws in first-party code, vulnerable dependencies pulled in by package managers, hard-coded secrets, insecure IaC and weak pipeline controls. It is blind to anything that never passed through a pipeline: vendor appliances, operating system packages installed by hand, end-user devices, firmware and drift on servers.
Unified vulnerability management
UVM targets risk in the running estate: unpatched operating systems and third-party applications, misconfigured services, exposed network devices, end-of-life software and, increasingly, cloud misconfiguration and external attack surface findings. Its core problem is prioritising tens or hundreds of thousands of findings across assets with very different business value. It sees custom code only as a deployed artefact or a DAST result, and it usually cannot say which repository, commit or team introduced a flaw, so it cannot route the fix upstream.
| Risk | ASPM | UVM |
|---|---|---|
| Flaw in first-party code | Primary (SAST, DAST, IAST ingest) | Indirect, through imported DAST or AppSec findings |
| Vulnerable open-source package in an application | Primary, tied to manifest, lockfile and owner | Partial, when an agent or image scan detects it on a running asset |
| Vulnerable operating system package | Partial, in container base images only | Primary |
| Commercial software and appliances | Not in scope | Primary |
| Secret committed to a repository | Primary | Not in scope unless imported |
| Network device and firmware flaws | Not in scope | Primary |
| Pipeline and build integrity | Primary where the product assesses CI/CD posture | Not in scope |
| End-of-life software | Partial, for unmaintained dependencies | Primary, for operating systems and products |
Data model: application graph vs asset inventory
ASPM: the application graph
ASPM joins repositories to applications, commits to builds, builds to artefacts and artefacts to deployments, then attaches an owner to each node. Open-source components are identified by package URL (purl), the Ecma standard ECMA-427 with the form pkg:type/namespace/name@version, and vulnerabilities by advisory identifiers. The OSV schema used by many open-source advisory databases records each vulnerability with an id, a list of aliases for the same issue in other databases, and affected package ranges keyed by ecosystem and purl. Aliases matter: the same flaw can carry a CVE, a GitHub Security Advisory ID and an ecosystem-specific ID, and a platform that does not resolve aliases counts it three times.
UVM: the asset inventory
UVM starts from the asset: a host, an endpoint, a cloud resource, a network device. Software on the asset is identified by installed package or by CPE, and vulnerabilities by CVE. Asset criticality, exposure (internet-facing or internal), business owner and compensating controls drive priority. The asset inventory is usually shared with or fed by the CMDB or a cyber asset attack surface management (CAASM) tool. See the Asset Inventory and CMDB Security Guide.
Where the two models meet
| Join | Key | Who should own it |
|---|---|---|
| Application to repository | Service catalogue entry, CODEOWNERS, repository topics | ASPM |
| Repository to artefact | Commit SHA, build ID, image digest, signed build provenance | ASPM |
| Artefact to running asset | Image digest on the workload, package version on the host | Shared: whichever tool reads the runtime |
| Running asset to business context | Asset criticality, exposure, data classification | UVM |
| Component to vulnerability | purl plus advisory ID with resolved aliases; CPE plus CVE for products | Each platform for its domain |
The image digest is the most important shared key. A tag such as latest cannot link a running container back to a build, while a digest can. Signed provenance makes that link trustworthy. See the SLSA and Build Provenance Guide.
Deduplication and correlation across the two
Each category deduplicates inside its own domain. The open question is cross-domain deduplication, and it has to be designed, not assumed.
Within each platform
Deduplication logic is similar in both categories. As an illustration from open-source tooling, OWASP DefectDojo documents four algorithms: Unique ID From Tool (the scanner's own identifier), Hash Code (a hash of fields configured per scanner), Unique ID From Tool or Hash Code, and a Legacy algorithm that compares attributes including endpoints, file path and line. By default it deduplicates within one product (an "Asset" in its current documentation) and can be narrowed to a single engagement; the earliest finding in a chain is treated as the original and later duplicates are set inactive. For static analysis, SARIF 2.1.0 defines a fingerprint as a stable value that a result management system can use to identify a result over time, which is what stops a finding reopening on every scan.
Across platforms
- Same component, different layers: a vulnerable library in an application's lockfile, in the container image built from it and on the node running that image is one root cause with one fix (upgrade the dependency and rebuild), not three findings.
- Same component, different fixes: the same library installed as an operating system package on a fleet of virtual machines is a separate fix (patch the package), owned by a different team. These should stay separate records even if the CVE matches.
- Base image root cause: one vulnerable base image can surface the same CVE in hundreds of application images. Group by base image digest and route one fix to the platform team that owns the image.
- Not affected statements: a VEX statement of
not_affectedfrom the application team should suppress the corresponding finding in UVM too, or operations will chase what development has already closed. See the VEX Guide.
Pick one direction of flow. The common pattern is that ASPM pushes application findings, with VEX status and owner, into UVM for enterprise reporting, while UVM pushes runtime exposure and asset criticality back into ASPM for prioritisation. Two-way ticket creation without a single owner of the cross-domain match produces duplicate tickets.
Where SCA and the software supply chain fit
SCA is the contested ground. It is an AppSec tool by origin, but the components it finds end up on assets UVM scans.
| Supply chain question | Better answered by | Why |
|---|---|---|
| Which of our applications use this package version? | ASPM with SCA and SBOM data | Manifests and lockfiles are the authoritative record of what was built |
| Is the vulnerable function reachable from our code? | ASPM with reachability analysis | Requires call-graph analysis of source |
| Where is this component running right now? | UVM or runtime tooling | Requires agents, image scans of running workloads or host package data |
| Which vendor products we buy contain it? | UVM plus supplier SBOMs and advisories | No source access; relies on vendor disclosure |
| Was the artefact built from the expected source? | ASPM or a dedicated supply chain tool | Requires provenance and pipeline integrity data |
| Are we affected, and can we say so to customers? | ASPM, publishing VEX | Only the producer of the software can make the exploitability claim |
The CISA Minimum Requirements for VEX (April 2023) define four statuses: not_affected, affected, fixed and under_investigation. A not_affected statement should carry a justification such as Vulnerable_code_not_in_execute_path, and an affected statement needs an action statement. That split maps cleanly to the two categories: ASPM is where an application team decides and records its VEX status, and UVM is where those statements are consumed, together with vendors' VEX, to clear findings on assets.
The XZ Utils backdoor shows why both views are needed. The malicious code sat in release tarballs rather than the readable git source and reached development and rolling Linux distributions. Teams needed to answer, within hours, whether any build pipeline or base image had pulled the affected versions (an ASPM and SBOM question) and whether any running host had installed them (a UVM question). For depth on components, see the Software Composition Analysis (SCA) Guide and SBOM vs SCA.
Ownership and operating model
The rule that holds up: route a finding to whoever can make the fix, and keep one record per fix.
- Fix in source or build: first-party code, application dependencies, application base image choice, IaC templates. Owner: development team. System of record: ASPM. SLA clock: from detection on the main branch.
- Fix on the running asset: operating system packages, middleware installed outside the build, commercial software, network devices. Owner: operations or infrastructure team. System of record: UVM. SLA clock: from detection on the asset.
- Fix in a shared platform: golden base images, shared runners, internal package mirrors. Owner: platform engineering. System of record: whichever the platform team works in daily, usually ASPM for images built in pipelines.
- Risk acceptance: one exceptions register for both, with the same approval levels and expiry rules, so an exception granted in one tool is visible in the other.
Executive reporting usually sits in UVM, because the CISO needs one enterprise exposure figure; that works only if ASPM feeds it deduplicated, owner-tagged findings. Patch SLAs and risk-based windows apply differently to code and to assets; see Fixed Patch SLAs vs Risk-Based Remediation Windows.
Failure modes of running only one
Only ASPM: vendor software, appliances, endpoints and operating system packages on long-lived servers have no home, prioritisation lacks asset context unless runtime data is imported, and board reporting covers only the software estate. Only UVM: application findings arrive as CVE lists against hosts, routed to operations teams who cannot change the lockfile; fixes happen after deployment, the same dependency returns on the next build because nothing gated it, and every container rebuild creates new asset records that reset finding age and distort mean time to remediate.
Decision criteria
| Situation | Lean towards | Notes |
|---|---|---|
| Software company or heavy in-house development, hundreds of repositories | ASPM as system of record for applications, UVM for infrastructure | Feed UVM from ASPM for enterprise reporting |
| Mostly commercial and SaaS software, little custom code | UVM, with AppSec findings imported | Source control platform security features may cover the custom code |
| Containerised, immutable infrastructure | ASPM plus runtime tooling | Fixes happen by rebuild, so the build is where findings belong |
| Large estate of long-lived servers and endpoints | UVM | Patch cycles and asset criticality dominate |
| Small organisation, one or two scanners | Neither as a separate purchase | Built-in features plus a disciplined ticket workflow are usually enough |
| Regulatory duty to publish product vulnerability status | ASPM with VEX and SBOM output | For example manufacturers in scope of the EU Cyber Resilience Act |
A useful test question for vendors in either category: show one vulnerable open-source package, found by SCA in a repository and by an agent on a host, and demonstrate how many records, tickets and owners result. The answer reveals more about the data model than any feature list. See the ASPM Buyer's Guide and the Vulnerability Management Buyer's Guide.
Worked scenario: one library, three detections
A critical CVE is published for a widely used compression library. Within a day the organisation sees: SCA alerts in 40 repositories, image scanner alerts in 300 container images and agent alerts on 900 virtual machines.
- Resolve identity: both platforms resolve the CVE and its ecosystem aliases to one vulnerability record, using OSV aliases or the vendor's equivalent.
- Split by fix: the 40 repositories pull the library as an application dependency (fix: upgrade in lockfile). Of the 300 images, 260 inherit it from two base images (fix: rebuild two base images, then rebuild dependants) and 40 are the application builds already counted. The 900 virtual machines have it as an operating system package (fix: patch).
- Route: ASPM opens 40 developer work items and two platform work items for the base images. UVM opens one patch change covering the 900 virtual machines, grouped by maintenance window.
- Prioritise: FIRST EPSS gives a daily probability of exploitation activity in the next 30 days for the CVE, but it is a per-CVE figure. Reachability analysis in ASPM shows that 12 of the 40 applications call the vulnerable function; UVM asset context shows 60 of the hosts are internet-facing. Those two subsets go first. See the EPSS Guide and the Reachability Analysis Guide.
- Record exploitability: the 28 applications with no reachable path publish
not_affectedVEX statements with a justification; UVM consumes them so image findings for those builds close. - Report: UVM shows one enterprise exposure figure falling as both ASPM and UVM work items close: 45 fixes tracked, not 1,240 findings.
Detection and measurement
- Duplicate ratio: raw findings divided by deduplicated work items, measured per platform and across the two. A sudden fall can mean over-aggressive merging; sample merged pairs monthly.
- Unowned findings: percentage of open findings with no owning team. Target close to zero in both platforms.
- Ticket bounce rate: work items reassigned between development and operations more than once. High rates show routing rules that ignore where the fix happens.
- Time to remediate by fix type: separate dependency upgrades, base image rebuilds and host patches. A blended figure hides slow lanes.
- VEX coverage: share of critical application findings with a recorded VEX status within an agreed window.
- Known-exploited closure: time to close findings for CVEs in the CISA KEV Catalogue, reported across both platforms as one figure.
Where identity fits
Both platforms hold powerful machine credentials: ASPM holds tokens with read access to every repository and often write access to open pull requests; UVM holds scanning credentials with privileged access to servers and network devices. These are non-human identities with broad reach. Scope each token to the minimum repositories and actions, prefer short-lived federated credentials over long-lived personal access tokens, store scan credentials in a vault and rotate them, and alert on use from unexpected locations. The Codecov breach showed how a leaked credential in a CI tool can turn a trusted integration into a secrets harvester.
Framework mapping
| Framework | ASPM | UVM |
|---|---|---|
| NIST CSF 2.0 | PR.PS-06 secure software development; ID.RA-08 vulnerability disclosure handling | ID.RA-01 vulnerabilities identified, validated and recorded; PR.PS-02 software maintained commensurate with risk |
| Both, CSF 2.0 | ID.AM-02 software and systems inventories; GV.RR-02 roles and responsibilities (the ownership split) | |
| NIST SP 800-53 Rev. 5 | SA-11 Developer Testing and Evaluation; SA-15 Development Process, Standards, and Tools; SR-4 Provenance | RA-5 Vulnerability Monitoring and Scanning; SI-2 Flaw Remediation; CM-8 System Component Inventory |
| NIST guidance | SP 800-218 SSDF v1.1, practice groups PO, PS, PW and RV | SP 800-40 Rev. 4 enterprise patch management planning |
| CIS Controls v8.1 | Control 16 Application Software Security, including 16.4 inventory of third-party software components | Control 7 Continuous Vulnerability Management |
| ISO/IEC 27001:2022 Annex A | A.8.25 Secure development life cycle; A.8.28 Secure coding; A.8.29 Security testing in development and acceptance | A.8.8 Management of technical vulnerabilities |
Common failure patterns
- Importing raw scanner output into UVM: every SAST and SCA finding lands against a host, inflating counts and burying infrastructure work. Import deduplicated, owner-tagged application findings only.
- Two systems both creating tickets: without a single owner of the cross-domain match, one CVE produces a developer ticket and an operations ticket for the same fix.
- Matching on CVE alone: the same CVE in an application dependency and an operating system package needs two different fixes; merging them loses one.
- Ignoring aliases: CVE, GitHub advisory and ecosystem IDs counted separately triple the backlog for one flaw.
- Image tags instead of digests: findings cannot be traced from running containers to builds, so rebuilt images reopen or orphan findings.
- Separate exception registers: a risk accepted in ASPM is reopened and escalated in UVM, eroding trust in both.
Practitioner checklist
- Write down the ownership rule (fix in source or build vs fix on asset) and get development and operations leads to sign it.
- Choose one direction of flow between ASPM and UVM, and one owner for cross-domain matching.
- Standardise identifiers: purl for components, image digests for containers, cloud resource IDs and agent IDs for assets.
- Confirm both platforms resolve vulnerability aliases before you trust their counts.
- Group findings by fix, including base image root causes, before creating tickets.
- Publish VEX statements from application teams and make UVM consume them.
- Run a single exceptions register with common approval levels and expiry.
- Report time to remediate by fix type and the KEV closure time across both platforms.
- Scope and rotate the repository tokens and scan credentials both platforms hold.
Standards and references
- NIST: SP 800-218 Secure Software Development Framework (SSDF) Version 1.1
- NIST: SP 800-40 Rev. 4 Guide to Enterprise Patch Management Planning
- CISA: Minimum Requirements for Vulnerability Exploitability eXchange (VEX)
- OpenSSF: Open Source Vulnerability (OSV) Schema
- Package-URL: purl specification (ECMA-427)
- OASIS: Static Analysis Results Interchange Format (SARIF) 2.1.0
- FIRST: Exploit Prediction Scoring System (EPSS) model
- OWASP DefectDojo: About deduplication
Related NHI Mgmt Group resources: ASPM vs CNAPP · Risk-Based Vulnerability Management Guide · Software Supply Chain Security Guide · CTEM vs Vulnerability Management