Software Inventory for Vulnerability Management
PCI DSS 4.0.1 Requirement 6.3.2 requires you to maintain a living inventory of your bespoke/custom software and the third-party software components embedded inside it, so you can promptly identify where vulnerabilities apply and drive patching or remediation. Operationally, this means owning a complete SBOM-like record tied to each custom application and keeping it current as code and dependencies change.
Key takeaways:
- Your inventory must cover both custom code and the third-party components inside it, not just “apps we run.”
- The inventory must be operationally connected to vulnerability intake, triage, and patch/remediation workflows.
- Evidence must show completeness, currency, and real use in vulnerability/patch management decisions.
A “software inventory for vulnerability management” under PCI DSS 4.0.1 Requirement 6.3.2 is narrower and more specific than general IT asset inventory. The requirement targets bespoke and custom software, plus the third-party components incorporated into that software, because that is where organizations frequently lose track of vulnerable libraries and frameworks. If you cannot quickly answer “Where are we using the affected component and which versions?” you will struggle to patch within expected timeframes and you will miss risk decisions that should be documented (for example, compensating controls or temporary mitigations).
For a Compliance Officer, CCO, or GRC lead, the fastest path is to treat this as an application security inventory requirement with clear ownership: engineering and AppSec produce and maintain the data; security operations uses it to drive vulnerability response; GRC sets minimum data fields, review triggers, and audit evidence. You do not need a perfect program on day one, but you do need a defensible inventory that stays current through the SDLC and release process, and that is demonstrably used to facilitate vulnerability and patch management.
Regulatory text
PCI DSS 4.0.1 Requirement 6.3.2 states: “An inventory of bespoke and custom software, and third-party software components incorporated into bespoke and custom software is maintained to facilitate vulnerability and patch management.” (PCI DSS v4.0.1 Requirement 6.3.2)
Operator interpretation: you must maintain a current list of (1) your custom-built applications and services and (2) the third-party libraries, packages, frameworks, and components embedded in them, with enough detail to identify affected software when new vulnerabilities are disclosed and to drive patching or other remediation actions. The phrase “maintained” means it cannot be a one-time spreadsheet; it must be kept up to date as dependencies and builds change.
Plain-English interpretation (what the requirement is really asking)
You need a reliable way to answer, quickly and accurately:
- Which custom applications exist in scope for PCI?
- What third-party components are inside each application?
- Which versions are in use, and where are they deployed?
- When a new vulnerability is announced, which applications are affected and who is responsible for fixing them?
If your teams depend on tribal knowledge (“the payments API uses that library”) or ad hoc grep searches during incidents, you do not yet meet the intent: “to facilitate vulnerability and patch management.” (PCI DSS v4.0.1 Requirement 6.3.2)
Who it applies to
Entity types: Merchants, service providers, and payment processors subject to PCI DSS. (PCI DSS v4.0.1 Requirement 6.3.2)
Operational context (where assessors focus):
- Custom applications that store, process, or transmit cardholder data, or that can impact the security of the cardholder data environment (CDE).
- Custom internal tools that touch payment workflows (refund tooling, customer service consoles, batch settlement jobs).
- Microservices, APIs, serverless functions, and batch jobs that are “code you own,” even if deployed on third-party platforms.
- Third-party components inside your codebase: open-source packages, commercial SDKs, embedded agents, language runtimes bundled into containers, and front-end libraries.
Common boundary mistake: excluding “non-production” environments. For vulnerability management, you need to know what you ship and run, and you often patch via lower environments first. Your evidence should show you can trace components from repo/build to deployed artifact.
What you actually need to do (step-by-step)
1) Define the inventory scope and ownership
- Scope statement: list which business units, repos, and deployment environments are in PCI scope for bespoke/custom software.
- Ownership model: assign an accountable owner for each custom application (usually an engineering manager or product/service owner) and a program owner (AppSec or Security Engineering).
- RACI in practice: engineering maintains dependency manifests; AppSec defines minimum inventory fields and validates coverage; SecOps consumes the inventory for vulnerability response; GRC tracks exceptions.
2) Set minimum inventory data fields (keep it audit-friendly)
For each custom application/service:
- Application name and unique identifier
- Business owner and technical owner
- Repo location(s)
- Deployment targets (prod accounts/clusters) and criticality notes
- PCI relevance (in-scope indicator and rationale)
For each third-party component incorporated:
- Component name (package/library)
- Version in use (and preferably resolved/transitive versions)
- How it is included (direct vs transitive dependency; package manager)
- Where it is used (application/service mapping)
- Build artifact reference (container image tag, build number, or release identifier)
This is the minimum to “facilitate vulnerability and patch management.” (PCI DSS v4.0.1 Requirement 6.3.2)
3) Build the inventory from authoritative sources (don’t hand-curate)
Use sources that change with code:
- Dependency manifests (package-lock, requirements files, pom.xml equivalents)
- Build pipelines that can emit a software bill of materials (SBOM-like output)
- Artifact registries (container/image metadata)
- Source repositories (repo catalog)
Practical control: make inventory generation part of CI/CD. If a build cannot produce component data, treat it as a release-quality issue for PCI in-scope services.
4) Establish “maintained” triggers (what forces updates)
Your procedure should specify update triggers such as:
- New repository created for an in-scope service
- New release/build to production
- Dependency update (direct or transitive)
- M&A or third-party code acquisition added into your codebase
- Material architecture change (monolith split, service rename, repo migration)
Auditors look for an operational mechanism that prevents drift. The simplest: “inventory refresh occurs automatically on every build and is reconciled to the application list on a scheduled cadence.”
5) Connect the inventory to vulnerability intake and patch workflows
The requirement is not satisfied by data sitting idle. Show it drives action:
- Vulnerability sources arrive (scanner findings, advisories, dependency alerts).
- Triage maps affected components to applications via the inventory.
- Tickets are created for owning teams with affected service + component + version.
- Fix is tracked to closure (patch, upgrade, mitigation, or documented exception).
If you have to manually figure out where a vulnerable library lives each time, your inventory is not facilitating patch management. (PCI DSS v4.0.1 Requirement 6.3.2)
6) Add exception handling for “can’t patch yet”
Sometimes you cannot upgrade a dependency immediately. Your process should require:
- Risk acceptance owner and rationale
- Compensating controls (if any) and monitoring notes
- Target remediation plan tied to a tracked work item
- Evidence that the exception is reviewed and expires
7) Validate completeness and accuracy
Run periodic checks:
- Reconcile known in-scope repos/services to inventory coverage.
- Sample applications and confirm deployed artifacts match recorded component versions.
- Confirm transitive dependencies are captured (a common gap).
A practical approach: AppSec performs spot checks and documents results as control evidence.
Required evidence and artifacts to retain
Keep artifacts that prove (a) the inventory exists, (b) it is maintained, and (c) it is used for vulnerability/patch management:
- Inventory export or system view showing custom applications and embedded third-party components (name/version/application mapping)
- Documented procedure describing ownership, update triggers, and how inventory supports vulnerability and patch management (PCI DSS v4.0.1 Requirement 6.3.2)
- CI/CD or build records demonstrating automated generation/refresh (job configs, logs, pipeline steps)
- Sample vulnerability-to-remediation traceability: advisory/findings → affected component(s) → affected app(s) → ticket/change → patched build deployed
- Exception records for delayed patching, including approval and review notes
- Access controls showing who can modify the inventory and how changes are logged (important if inventory is editable)
Common exam/audit questions and hangups
Assessors and internal audit commonly ask:
- “Show me your inventory of custom software and the third-party components inside each.” (PCI DSS v4.0.1 Requirement 6.3.2)
- “How do you know it’s complete for PCI scope?”
- “How is it kept current? What triggers updates?”
- “Pick a recent high-profile vulnerability. Show how you identified affected apps and drove remediation.”
- “Do you capture transitive dependencies, or only direct ones?”
- “How do you handle components embedded in containers or front-end bundles?”
Hangups that stall audits:
- Inventory exists only at the “application list” level (no component mapping).
- Component list exists but is not linked to application owners and deployments.
- Inventory is updated manually and not tied to release processes.
Frequent implementation mistakes (and how to avoid them)
-
Treating CMDB asset inventory as sufficient
Fix: build an application/component inventory from code and build metadata. CMDB records rarely capture embedded libraries. -
Missing transitive dependencies
Fix: require resolved dependency trees from build tooling, not just top-level manifests. -
No owner per application
Fix: require an accountable engineering owner for every custom service; route remediation work to that owner. -
Inventory cannot answer “where deployed”
Fix: link component versions to build artifacts and production deployments (image tag, release ID). Vulnerability response depends on runtime truth. -
Inventory created once for the audit
Fix: define “maintained” triggers and show recurring evidence (build logs, change history). (PCI DSS v4.0.1 Requirement 6.3.2)
Enforcement context and risk implications
No public enforcement cases were provided in the source catalog for this specific requirement, so you should treat enforcement risk as coming through PCI assessments, customer due diligence, and breach-driven scrutiny rather than case law. Practically, failure modes are operational: you miss vulnerable components, patch cycles slow down, and you cannot demonstrate control effectiveness under audit. For service providers, this also becomes a sales friction point because customers increasingly ask for proof of dependency and vulnerability governance for custom payment-adjacent software.
Practical execution plan (30/60/90)
You asked for speed. Use phased work with clear deliverables rather than calendar promises.
First 30 (Immediate) — establish a defensible baseline
- Inventory all PCI in-scope custom applications/services and assign owners.
- Choose authoritative sources (repos + build pipelines + artifact registry) and generate an initial component list for the highest-risk apps.
- Define minimum fields and a simple operating procedure aligned to PCI DSS v4.0.1 Requirement 6.3.2.
- Produce one end-to-end evidence packet: vulnerability → affected component → mapped apps → ticket → fix release.
Next 60 (Near-term) — make it maintainable
- Integrate inventory generation into CI/CD for all in-scope repos.
- Capture transitive dependencies and store output centrally.
- Add exception workflow for delayed patching with approvals and expiry review.
- Run a completeness reconciliation: in-scope app list vs inventory coverage, document gaps and remediation.
Next 90 (Operationalize) — prove it works under pressure
- Run tabletop drills using real advisories: map, triage, assign, remediate, and archive evidence.
- Add routine validation checks (spot-check deployed artifacts vs inventory).
- Align reporting: dashboards for “affected apps per vulnerability,” “open remediation by owner,” and “exceptions outstanding.”
Where Daydream fits naturally: if you struggle with evidence assembly across engineering tools, Daydream can standardize the request list (inventory export, pipeline proofs, traceability samples) and keep the audit packet current without chasing screenshots across teams.
Frequently Asked Questions
Does PCI DSS 6.3.2 require a formal SBOM?
The text requires an inventory of custom software and incorporated third-party components to facilitate vulnerability and patch management (PCI DSS v4.0.1 Requirement 6.3.2). An SBOM format is a practical way to meet the intent, but the requirement is satisfied by any maintained inventory with equivalent coverage and traceability.
Are open-source libraries included?
Yes, if they are third-party components incorporated into bespoke and custom software, they fall within the inventory requirement (PCI DSS v4.0.1 Requirement 6.3.2). Treat open-source packages, frameworks, and transitive dependencies as in scope.
What about commercial SDKs and embedded agents?
If a third-party SDK, library, or agent is built into your custom application, include it with name and version so you can map vulnerabilities and patch exposure (PCI DSS v4.0.1 Requirement 6.3.2).
Do we need to track every internal microservice separately?
Track at the unit where ownership and deployment are meaningful for patching. For many organizations that is “service/repo,” but you can group tightly coupled components if you can still map vulnerabilities to the responsible team and deployed artifact.
How do we prove the inventory is “maintained”?
Show update triggers tied to SDLC events (new release/build, dependency change) and supporting evidence such as CI/CD logs, change history, and recent samples where the inventory informed vulnerability remediation (PCI DSS v4.0.1 Requirement 6.3.2).
What if our dependency data is incomplete for older legacy apps?
Document the gap, prioritize those apps for inventory generation, and implement compensating operating steps (for example, manual manifest extraction) while you retrofit automation. Auditors respond better to a documented remediation plan and evidence of progress than to an undocumented blind spot.
Frequently Asked Questions
Does PCI DSS 6.3.2 require a formal SBOM?
The text requires an inventory of custom software and incorporated third-party components to facilitate vulnerability and patch management (PCI DSS v4.0.1 Requirement 6.3.2). An SBOM format is a practical way to meet the intent, but the requirement is satisfied by any maintained inventory with equivalent coverage and traceability.
Are open-source libraries included?
Yes, if they are third-party components incorporated into bespoke and custom software, they fall within the inventory requirement (PCI DSS v4.0.1 Requirement 6.3.2). Treat open-source packages, frameworks, and transitive dependencies as in scope.
What about commercial SDKs and embedded agents?
If a third-party SDK, library, or agent is built into your custom application, include it with name and version so you can map vulnerabilities and patch exposure (PCI DSS v4.0.1 Requirement 6.3.2).
Do we need to track every internal microservice separately?
Track at the unit where ownership and deployment are meaningful for patching. For many organizations that is “service/repo,” but you can group tightly coupled components if you can still map vulnerabilities to the responsible team and deployed artifact.
How do we prove the inventory is “maintained”?
Show update triggers tied to SDLC events (new release/build, dependency change) and supporting evidence such as CI/CD logs, change history, and recent samples where the inventory informed vulnerability remediation (PCI DSS v4.0.1 Requirement 6.3.2).
What if our dependency data is incomplete for older legacy apps?
Document the gap, prioritize those apps for inventory generation, and implement compensating operating steps (for example, manual manifest extraction) while you retrofit automation. Auditors respond better to a documented remediation plan and evidence of progress than to an undocumented blind spot.
Authoritative Sources
Operationalize this requirement
Map requirement text to controls, owners, evidence, and review workflows inside Daydream.
See Daydream