Most application security programmes do not lack findings: they have tens of thousands of them, spread across six or more scanners, with no reliable way to say which ones matter or who should fix them. Application security posture management (ASPM) is the layer that aggregates results from static analysis, dependency scanning, dynamic testing, secrets detection, infrastructure as code and container scanning, ties them to the applications, repositories and running workloads they affect, and ranks them by real risk. This guide explains what ASPM does, how it differs from ASOC, CNAPP and traditional vulnerability management, the data model and integrations it depends on, how deduplication and reachability analysis work, how to run policy gates without stalling delivery, and how to roll it out and measure it. It is written for application security leads, DevSecOps engineers and security architects, and it is vendor-neutral.
Key takeaways
- ASPM is a correlation and decision layer, not another scanner. Its value comes from an accurate application inventory, deduplicated findings and an owner for every issue; without those it is just a bigger dashboard.
- Code-to-cloud context changes priorities. A critical CVE in a library that is never called, in an image that is never deployed, matters less than a medium flaw on an internet-facing service that handles personal data.
- Prioritise on exploitability and exposure, not base scores. Combine CVSS with EPSS probability, known exploitation, reachability, internet exposure, data sensitivity and business criticality.
- Gate new risk, burn down old risk. Block pull requests and builds only on new, high-confidence, high-risk findings; manage the existing backlog as security debt with SLAs and exceptions that expire.
- The ASPM platform is a privileged non-human identity. It holds tokens for your source control, CI/CD, registries, cloud accounts and ticketing; scope them read-only where possible and treat them like production secrets.
What ASPM is, and how it relates to ASOC
ASPM is an analyst-coined category name rather than a standard, so product scope varies. In practice an ASPM platform does five things:
- Inventory: builds and maintains a list of applications and services, and maps each to its repositories, pipelines, build artefacts, container images, deployments and owning team.
- Aggregation: ingests findings from first-party and third-party scanners, penetration tests and bug bounty reports, usually through APIs and standard formats such as SARIF.
- Correlation and deduplication: recognises when several tools, branches or images report the same underlying problem, and groups findings that share one fix.
- Risk-based prioritisation: scores each finding with technical, exploitation, runtime and business context.
- Policy and workflow: enforces gates in pull requests and pipelines, routes tickets to owners, tracks SLAs and manages exceptions.
Application security orchestration and correlation (ASOC) was the earlier term for tools that ran scanners in the pipeline and correlated their output. ASPM keeps those functions and adds the inventory, runtime context and posture view across the whole portfolio. Many products once sold as ASOC are now positioned as ASPM, so evaluate capabilities rather than labels. Open-source tools show the core data model: OWASP DefectDojo, for example, aggregates results from more than 200 security tools, deduplicates them and organises them as products, engagements, tests and findings.
ASPM is also distinct from "unified AppSec" platforms that bundle their own SAST, SCA and DAST engines. A bundled suite reduces integration work; a tool-agnostic ASPM lets teams keep the scanners they already trust. Many organisations end up with a mix, so check how well any platform ingests results from scanners it does not sell.
What feeds an ASPM platform
| Source | What it finds | Common exchange format | Context ASPM adds |
|---|---|---|---|
| SAST (static analysis) | Code flaws mapped to CWE, such as injection and missing authorisation checks | SARIF 2.1.0, vendor APIs | Owning team, whether the code path ships in a deployed service |
| SCA (software composition analysis) | Known CVEs and licence issues in open source dependencies | CycloneDX or SPDX SBOMs, vendor APIs | Reachability of the vulnerable function, deployment and exposure |
| Secrets detection | Keys, tokens and passwords in code, history, images and logs | SARIF or JSON | Whether the secret is live, what it grants, who owns it |
| IaC scanning | Misconfigurations in Terraform, CloudFormation, Kubernetes manifests and Helm charts | SARIF or JSON | Link from template to the deployed cloud resource |
| Container image scanning | OS and package CVEs, base image age, root user | SBOMs, JSON | Which running workloads use the image digest |
| DAST and API testing | Runtime flaws in running web apps and APIs | Vendor APIs, JSON or XML | Confirms or refutes a SAST finding on the same endpoint |
| Cloud and runtime signals | Internet exposure, attached identities, data stores, live exploitation | CNAPP or CSPM APIs | Exposure and blast radius for prioritisation |
| Pen tests and bug bounty | Manually confirmed issues, often business logic | Imports, tickets | Same backlog, owners and SLAs as automated findings |
The OASIS SARIF 2.1.0 standard (Static Analysis Results Interchange Format) defines a fingerprint as a "stable value that can be used by a result management system to uniquely identify a result over time", and provides fingerprints and partialFingerprints properties for matching results across runs. Prefer scanners that emit SARIF with stable fingerprints: it makes deduplication and "new versus existing" logic far more reliable. For dependencies, require SBOMs in CycloneDX or SPDX so the platform can track components independently of any one scanner. See the Open Source Security Guide.
ASPM vs CNAPP vs vulnerability management
| Question | ASPM | CNAPP | Vulnerability management |
|---|---|---|---|
| Primary asset | Applications, repositories, pipelines and their artefacts | Cloud accounts, workloads, identities and data stores | Hosts, network devices, endpoints, sometimes images |
| Main data sources | SAST, SCA, secrets, IaC, DAST, SBOMs, CI/CD | Cloud control plane APIs, agents, snapshots, cloud logs | Network and agent scanners, patch data |
| Who fixes | Development teams, through code and dependency changes | Platform and cloud teams, through configuration and IaC | IT operations, through patching and configuration |
| Typical workflow | Pull request comments, build gates, developer tickets | Posture alerts, attack paths, runtime detections | Patch cycles, SLA tracking, risk acceptance |
| Overlap | IaC and image scanning, code-to-cloud mapping | IaC scanning and pipeline integration (shift-left modules) | Risk-based scoring with EPSS and exploitation data |
When ASPM fits best: you build a lot of your own software, run several scanners and struggle with duplicates, ownership and prioritisation. When CNAPP fits best: most risk sits in cloud configuration and workloads rather than custom code. Many CNAPPs now offer code scanning and many ASPM tools pull cloud context, so the deciding factor is usually which team owns the workflow. Whichever you choose, the two must share an asset identity, typically the container image digest and the cloud resource identifier, so a finding in code can be followed to a running workload. See the CNAPP Guide and the Vulnerability Management Guide.
Small organisations with one or two scanners and a handful of repositories often get enough from their source control platform's built-in security features and a well-tuned ticket workflow. ASPM pays off when the number of tools, teams and repositories makes manual triage impossible, typically hundreds of repositories or more.
The data model: application inventory and code-to-cloud mapping
ASPM accuracy depends on its graph of what belongs to what. Build it from these joins:
- Application to repositories: from a service catalogue, repository topics or tags, or naming conventions. Without a service catalogue, start with repository ownership files (such as CODEOWNERS) and team membership in the source control platform.
- Repository to artefact: commit SHA to build to image digest or package version, taken from CI/CD metadata. Signed build provenance makes this join trustworthy. See the SLSA and Build Provenance Guide.
- Artefact to runtime: image digest to Kubernetes workloads or cloud functions, from the orchestrator or CNAPP. Tags such as
latestare not enough; match on digests. - Runtime to exposure and data: internet-facing load balancers, API gateways, attached identities and the classification of data stores the service can reach.
- Everything to an owner: a team, not an individual, with an escalation route. Findings with no owner are the largest single cause of ASPM programmes stalling.
Track application inventory completeness as a metric. A platform that cannot map a quarter of your findings to a deployed service will quietly misprioritise them.
Deduplication and correlation
Deduplication removes repeats of the same finding; correlation links different findings that describe one risk. Both are needed.
- Across runs and branches: match on SARIF fingerprints or a hash of rule, file and code snippet so a finding is not reopened on every scan or every feature branch.
- Across tools: two SAST tools reporting the same CWE on the same line are one finding; a DAST confirmation on the matching endpoint should raise confidence, not create a second ticket.
- Across images: one vulnerable base image can produce the same CVE in hundreds of images. Group by root cause and route a single fix to the base image owner.
- By fix: group all findings resolved by one dependency upgrade into one work item. Developers act on fixes, not CVE lists.
- Across domains: link a hard-coded key in a repository to the cloud identity it unlocks, or a vulnerable service to the over-privileged role it runs as. These "toxic combinations" usually deserve top priority.
Measure deduplication honestly: ask for raw finding counts, deduplicated counts and a sample of merged pairs you can check. Over-aggressive merging hides distinct issues as surely as under-merging buries teams in noise.
Risk-based prioritisation and reachability
Base severity alone is a poor queue. CVSS v4.0 itself separates Base, Threat and Environmental metric groups (scores labelled CVSS-B, CVSS-BT, CVSS-BE and CVSS-BTE) and FIRST states that one aim of version 4.0 is to reinforce that CVSS is not just the Base score. ASPM platforms apply that idea with more context.
| Factor | Source | Effect on priority |
|---|---|---|
| Technical severity | CVSS, scanner severity, CWE class | Starting point only |
| Exploitation likelihood | FIRST EPSS: probability a CVE "will be exploited in the wild in the next 30 days", published daily | Raise high-probability CVEs; useful for ordering a large backlog |
| Known exploitation | Known-exploited catalogues such as CISA KEV, threat intelligence | Raise to the top of the queue with the shortest SLA |
| Reachability | Call-graph analysis of whether application code calls the vulnerable function | Lower unreachable dependency CVEs; record the evidence |
| Deployment and exposure | CI/CD, orchestrator, CNAPP | Lower findings in code that never ships; raise internet-facing services |
| Data and business criticality | Data classification, service catalogue tier | Raise services handling regulated or payment data |
| Compensating controls | WAF rules, network policy, feature flags | Document, but do not treat as a permanent fix |
Reachability analysis: the Go project's govulncheck is a public example of the technique; it "only surfaces vulnerabilities that actually affect you, based on which functions in your code are transitively calling vulnerable functions". Commercial and open-source tools do the same for other languages with varying accuracy. Treat reachability as evidence for de-prioritising, not proof of safety: reflection, dynamic loading and configuration-driven code paths defeat static call graphs, and a library that is unreachable today can become reachable in next week's release. Record the decision so it is re-evaluated on change. Where you ship software to others, express the outcome as a VEX statement: CycloneDX describes VEX as a way to "Convey the exploitability of vulnerable components in the context of the product in which they're used".
Security debt: the backlog of known, unfixed findings past their SLA. Report it per application as count and age by priority band, not as a single organisation-wide number, and set reduction targets per team.
Policy gates and remediation workflow
- Gate on new, not total: fail a pull request or build only for findings introduced by that change, above an agreed priority, with high confidence. Gating on the whole backlog trains teams to bypass the gate.
- Start in audit mode: run every policy in report-only for two to four weeks, measure how many builds it would have failed and the false positive rate, then enforce for one pilot team before widening.
- Always-block classes: live secrets, known-exploited CVEs in deployed services and critical IaC exposures (public storage, open administrative ports) are usually safe to block early because false positives are rare and the fix is clear.
- SLAs by priority, not severity: OWASP SAMM Defect Management asks organisations at maturity level 2 to rate security defects consistently across the organisation and define SLAs per severity class, and at level 3 to enforce them and integrate the defect system with other tools.
- Exceptions that expire: risk acceptance needs an owner, a reason, compensating controls and an expiry date, after which the finding reopens.
- Developer-first delivery: pull request comments with the fix, auto-generated upgrade pull requests, and tickets in the team's own backlog. Security-only portals are rarely visited.
- Rollback: every gate needs a documented break-glass override (who can approve, how it is logged) and a quick way to return a policy to audit mode if it blocks releases unexpectedly.
Where identity fits
An ASPM platform is one of the most privileged non-human identities in the engineering estate. To build its graph it needs tokens or app installations for source control (often read access to every repository), CI/CD, artefact registries, cloud accounts, Kubernetes clusters and ticketing, sometimes with write access to open pull requests or create tickets. Prefer source control app installations with fine-grained, short-lived tokens over personal access tokens, federated cloud roles over static access keys, and read-only scopes except where write is needed. Give each connector a named owner and rotate on schedule and on staff change. Security tooling is itself a target: the Trivy supply chain attack showed how a stolen personal access token and an incomplete rotation turned a widely used security scanner into a credential stealer, and in the Checkmarx KICS attack credentials stolen via Trivy were used to poison the KICS IaC scanner's Docker images. Secrets findings are also identity findings: route them to the owner of the credential, rotate first and then remove from history. See the CI/CD Pipeline Identity Security Guide and the Secrets Management Guide.
Rolling out ASPM
- Inventory first (weeks 1 to 4): connect source control and CI/CD read-only, import the service catalogue, and measure how many repositories map to an application and an owning team. Fix ownership gaps before ingesting findings.
- Ingest and baseline (weeks 3 to 8): connect existing scanners, record raw versus deduplicated counts, and freeze the current backlog as the baseline so new findings can be separated from existing debt.
- Add context (weeks 6 to 12): connect registries, Kubernetes and cloud or CNAPP data for deployment and exposure, then EPSS, known-exploited data and reachability. Compare the new top 50 against the old severity-sorted top 50 with two or three development leads.
- Pilot gates (weeks 10 to 16): enable policies in audit mode, then enforce for one or two willing teams. Track build failure rate, override use and time to fix.
- Scale and retire: widen enforcement team by team, publish SLAs, and retire duplicate dashboards and spreadsheets so the platform becomes the single backlog.
- Review quarterly: re-tune scoring weights, review expired exceptions and check connector permissions.
Measuring it
- Inventory coverage: percentage of repositories and deployed services mapped to an application and an owning team (target above 95%).
- Noise reduction: ratio of raw to deduplicated findings, and percentage of findings de-prioritised by reachability or deployment context, with spot checks of accuracy.
- Mean time to remediate: by priority band, measured from detection on the default branch to a fixed deployment, not to ticket closure.
- SLA adherence and security debt: percentage of findings fixed within SLA, and the count and age of overdue findings per application.
- Gate health: percentage of builds blocked, false positive rate of blocking policies, and number of break-glass overrides per month.
- Recurrence: share of new findings in CWE classes that were previously fixed in the same service, a signal for training or secure defaults.
Log connector authentication, policy changes, exception approvals and gate overrides from the platform's audit log into the SIEM, and alert on new connectors, permission changes and bulk exception approvals.
Common failure patterns
- Buying before ownership exists: without a service catalogue or repository ownership, every finding lands in a central queue and the platform becomes a more expensive spreadsheet.
- Blocking on the backlog: turning on gates for all existing critical findings stops releases on day one and teams negotiate permanent exceptions.
- Trusting black-box scores: a risk score you cannot decompose into factors cannot be defended to developers or auditors. Insist on visible inputs and weights.
- Treating reachability as proof: marking unreachable CVEs as closed rather than deferred means they are never re-checked when code changes.
- Over-privileged connectors: organisation-wide administrator tokens issued to the platform during a trial and never reduced, a pattern the Trivy incident shows attackers will exploit in security tooling.
- Measuring ticket closure, not risk: closing tickets as "won't fix" or by merging duplicates improves charts without changing exposure.
Framework mapping
| Framework | Relevant controls or practices | What ASPM evidences |
|---|---|---|
| NIST SP 800-218 (SSDF) v1.1 | PO.4 (criteria for software security checks), PW.7 and PW.8 (review code, test executable code), RV.1, RV.2 and RV.3 (identify, assess and remediate vulnerabilities, analyse root causes) | Tool coverage, gate criteria, prioritised remediation, recurrence analysis |
| NIST SP 800-53 Rev. 5 | RA-5 Vulnerability Monitoring and Scanning, SA-11 Developer Testing and Evaluation, SI-2 Flaw Remediation, CM-8 System Component Inventory | Scan results, test evidence, remediation timelines, application inventory |
| NIST CSF 2.0 | ID.AM-02 (software and services inventories), ID.RA-01 (vulnerabilities identified, validated and recorded), PR.PS-06 (secure software development practices) | Inventory, validated findings, pipeline controls |
| CIS Controls v8.1 | Control 16 Application Software Security (16.1, 16.2, 16.4, 16.12), Control 7 Continuous Vulnerability Management | Secure development process, vulnerability intake, third-party component inventory, code-level checks |
| ISO/IEC 27001:2022 Annex A | A.8.8 Management of technical vulnerabilities, A.8.25 Secure development life cycle, A.8.28 Secure coding, A.8.29 Security testing in development and acceptance | Vulnerability records, SDLC gates, test evidence |
| OWASP SAMM | Implementation: Defect Management (Defect Tracking, Metrics and Feedback) | Consistent rating, SLAs, metrics correlated with other sources |
Practitioner checklist
- Establish a service catalogue or repository ownership mapping before connecting scanners.
- Require SARIF with stable fingerprints and CycloneDX or SPDX SBOMs from every scanner and build.
- Map commit SHA to image digest to running workload, and confirm the join on a sample of services.
- Score findings on exploitation (EPSS, known-exploited), reachability, exposure and data sensitivity, with visible weights.
- Freeze a baseline and gate only new, high-confidence findings; run every policy in audit mode first.
- Set SLAs by priority band, enforce them, and give every exception an owner and expiry date.
- Issue the platform scoped, short-lived, read-only credentials with named owners, and log their use.
- Report inventory coverage, time to remediate, SLA adherence, security debt and gate false positives monthly.
Standards and references
- NIST: SP 800-218 Secure Software Development Framework (SSDF) Version 1.1
- OASIS: Static Analysis Results Interchange Format (SARIF) Version 2.1.0
- FIRST: Common Vulnerability Scoring System v4.0
- FIRST: Exploit Prediction Scoring System (EPSS)
- CycloneDX: Vulnerability Exploitability Exchange (VEX)
- OWASP SAMM: Defect Management
- Go: Vulnerability Management (govulncheck)
- OWASP: DefectDojo project
Related NHI Mgmt Group resources: CNAPP Guide · Vulnerability Management Guide · Open Source Security Guide · SLSA and Build Provenance Guide · Attack Surface Management Guide