ISO/IEC 27001

⌘K
  1. Home
  2. Docs
  3. ISO/IEC 27001
  4. Other Doc
  5. Software Dependency Inventory

Software Dependency Inventory


1. Purpose

The Software Dependency Inventory provides a structured record of software components and third-party dependencies used by the organization.

The inventory helps the organization identify:

  • What software components are used
  • Where they are used
  • Who maintains them
  • Which applications depend on them
  • Which versions are deployed
  • Whether dependencies are supported
  • Whether known vulnerabilities exist
  • Whether licenses create risks
  • Whether dependencies are directly or indirectly introduced
  • How security updates are managed
  • What happens if a dependency becomes compromised or unsupported

The objective is to maintain visibility over the software supply chain and support vulnerability management, secure development, change management, and information-security risk management.


2. Scope

The inventory may cover:

  • Open-source libraries
  • Commercial libraries
  • Frameworks
  • Runtime components
  • Operating-system packages
  • Container images
  • Container packages
  • Third-party SDKs
  • Software modules
  • Package-manager dependencies
  • Build dependencies
  • Development dependencies
  • CI/CD dependencies
  • Plugins
  • Browser/client libraries
  • Third-party APIs
  • External software services
  • AI/ML libraries and models
  • Infrastructure-as-Code modules
  • Infrastructure plugins
  • Deployment packages
  • Internal reusable components

The scope should be based on the organization’s technology architecture and risk assessment.


3. Software Supply Chain Principle

The organization should maintain visibility across:

Application → Direct Dependency → Transitive Dependency → Version → Source → Vulnerability → Risk → Remediation → Verification

For example:

SaaS Application → Node.js Package → Package Version → Open-Source Repository → Known Vulnerability → Risk Assessment → Upgrade → Testing → Deployment

The organization should consider both direct and transitive dependencies where technically feasible.


4. Inventory Ownership

Responsibility for maintaining the inventory should be clearly defined.

RoleResponsibility
EngineeringMaintains application dependency information
DevelopersIdentify dependencies introduced through development
DevOpsManages build, deployment and container dependencies
Information SecurityReviews security vulnerabilities and risks
Application OwnerOwns application-level dependency risk
ProcurementProvides information on licensed/commercial software
Risk OwnerAccepts residual dependency risk where required

Automated dependency-management tools may be used to reduce manual maintenance.


5. Software Dependency Inventory Fields

The following fields may be maintained in a spreadsheet, GRC platform, SBOM platform, repository, or other controlled system.

FieldDescription
Dependency IDUnique identifier
Application IDApplication using the dependency
Application NameApplication name
Component NameDependency/component name
Component TypeLibrary/Framework/SDK/Container/API/etc.
Package Managernpm/pip/Maven/NuGet/etc.
VersionCurrently deployed version
Latest Approved VersionApproved/current target version
Direct/TransitiveDirect or transitive dependency
SourceRepository/vendor/source
Supplier/MaintainerMaintainer or vendor
LicenseApplicable license
Support StatusSupported/Deprecated/EOL
Production UseYes/No
Development UseYes/No
Build DependencyYes/No
Runtime DependencyYes/No
Internet ExposureYes/No
Data AccessType of data accessed
PrivilegePrivilege level
Known VulnerabilityYes/No
Vulnerability IDCVE or other identifier, where applicable
SeverityAs determined by approved methodology
ExploitabilityApplicable assessment
RiskLow/Medium/High/Critical
RemediationUpgrade/Patch/Replace/Accept/etc.
OwnerResponsible owner
Target DateRemediation target
StatusOpen/In Progress/Resolved/Accepted
Last ReviewedReview date
EvidenceSupporting evidence

6. Application Identification

Each software dependency should be associated with the application, service, or product in which it is used.

Example:

ApplicationDependencyVersion
Customer PortalReact[Version]
Customer APINode.js Package[Version]
Authentication ServiceOAuth SDK[Version]
Reporting ServicePython Library[Version]

This prevents the organization from maintaining a list of components without knowing where those components actually operate.


7. Direct and Transitive Dependencies

The organization should distinguish between:

Direct Dependency

A component explicitly added by the development team.

Example:

Application → Express

Transitive Dependency

A component introduced by another dependency.

Example:

Application → Express → Dependency B → Dependency C

Transitive dependencies can create security risk even when developers did not directly select or install the component.

Where technically feasible, dependency-management or Software Composition Analysis tools should be used to identify them.


8. Version Management

The inventory should record the version of important dependencies.

The organization should monitor for:

  • New versions
  • Security patches
  • Deprecated versions
  • End-of-life versions
  • Breaking changes
  • Unsupported versions
  • Security advisories

Production versions should be traceable to the corresponding source-code or deployment record where practical.


9. Vulnerability Management

Software dependencies should be evaluated for known security vulnerabilities.

Potential sources include:

  • Vendor security advisories
  • Package repositories
  • Security advisories
  • Vulnerability databases
  • Software Composition Analysis tools
  • Dependency scanners
  • Container scanners
  • Security testing
  • Penetration testing

Where a vulnerability is identified, the organization should evaluate:

  • Affected component
  • Affected application
  • Version
  • Severity
  • Exploitability
  • Exposure
  • Data affected
  • Business impact
  • Available patch
  • Compensating controls
  • Remediation timeline

10. Vulnerability Risk Treatment

A vulnerability should not be treated solely according to a generic severity number.

The organization should consider actual organizational context.

For example:

A high-severity vulnerability in an unused development dependency may have a different risk from the same vulnerability in an internet-facing production component.

Possible treatment options include:

  • Upgrade
  • Patch
  • Replace
  • Remove
  • Disable affected functionality
  • Apply compensating controls
  • Increase monitoring
  • Restrict exposure
  • Risk acceptance

Risk acceptance should follow the organization’s approved risk-management process.


11. Software Component Approval

Organizations should establish appropriate rules for introducing new software dependencies.

Before introducing a significant dependency, consider:

  • Business/technical need
  • Security reputation
  • Maintenance activity
  • Support status
  • Known vulnerabilities
  • License
  • Data access
  • Privileges
  • Internet exposure
  • Supplier/maintainer
  • Community/vendor support
  • Compatibility
  • Alternative components

High-risk dependencies should receive appropriate security review before production use.


12. Unsupported and End-of-Life Dependencies

The organization should identify dependencies that are:

  • End-of-life
  • Deprecated
  • No longer maintained
  • No longer supported
  • Receiving no security fixes

Unsupported components should be evaluated for risk.

Where appropriate, the organization should:

  1. Upgrade
  2. Replace
  3. Remove
  4. Isolate
  5. Apply compensating controls
  6. Document and formally accept residual risk

13. Software Source and Provenance

Where appropriate, the organization should understand where software components originate.

Consider:

  • Official repositories
  • Approved vendors
  • Internal repositories
  • Package registries
  • Container registries
  • Source repositories
  • Build artifacts

The organization should avoid introducing software from untrusted or unknown sources.


14. Software Integrity

Where appropriate, controls should be used to protect the integrity of software dependencies.

Examples include:

  • Approved repositories
  • Dependency locking
  • Version pinning
  • Hash verification
  • Signed packages
  • Trusted container images
  • Protected build pipelines
  • Access-controlled repositories
  • Protected branches
  • CI/CD security controls

The appropriate controls should be based on risk and technology.


15. Software Bill of Materials (SBOM)

For applications where software supply-chain visibility is important, the organization may maintain or generate an SBOM.

An SBOM may provide information such as:

  • Component name
  • Version
  • Supplier
  • Package identifier
  • Dependency relationship
  • License
  • Vulnerability information

An SBOM can support:

  • Vulnerability response
  • Customer security requests
  • Supply-chain risk management
  • Incident investigation
  • Software inventory
  • Dependency analysis

An SBOM does not replace vulnerability management or risk assessment.


16. Container Dependencies

Where containers are used, the organization should consider:

  • Base images
  • Operating-system packages
  • Application packages
  • Third-party libraries
  • Container image source
  • Image vulnerabilities
  • Image lifecycle
  • Image scanning
  • Image signing where applicable
  • Approved registries

Example:

Application Container → Node.js Base Image → OS Packages → npm Dependencies

All relevant layers should be considered where technically feasible.


17. Infrastructure-as-Code Dependencies

Where Infrastructure-as-Code is used, dependencies may include:

  • Terraform modules
  • Providers
  • CloudFormation components
  • Helm charts
  • Kubernetes packages
  • Deployment scripts
  • External modules

These components should be managed according to their security and operational risk.


18. CI/CD Dependencies

The software supply chain can also include dependencies within build and deployment pipelines.

Examples:

  • Build plugins
  • GitHub Actions
  • CI/CD runners
  • Deployment tools
  • Package registries
  • Build containers
  • Security scanners
  • Infrastructure providers

Important CI/CD dependencies should be reviewed because compromise of a build dependency could potentially affect software delivered to production.


19. Third-Party APIs

External APIs can also represent software dependencies.

The organization should consider:

  • API provider
  • API purpose
  • Information exchanged
  • Authentication method
  • API credentials
  • Availability
  • Security requirements
  • Rate limits
  • Supplier dependency
  • Failure impact
  • Alternative arrangements

API keys and credentials should not be stored in the inventory.


20. AI and Machine-Learning Dependencies

Where AI/ML technology is used, the inventory may also include:

  • AI libraries
  • ML frameworks
  • Models
  • Model providers
  • SDKs
  • Model APIs
  • Vector databases
  • AI plugins
  • AI development tools

The organization should consider:

  • Source
  • Version
  • Security
  • Data access
  • Model provenance
  • Vulnerabilities
  • Licensing
  • Privacy implications
  • Third-party processing
  • Supplier dependency

21. License Management

Where applicable, software dependencies should be reviewed for licensing considerations.

The organization may record:

  • License type
  • License restrictions
  • Commercial requirements
  • Attribution requirements
  • Distribution requirements
  • Legal review status

Security and license risks should be managed through the appropriate organizational processes.


22. Dependency Monitoring

The organization should establish appropriate monitoring for important dependencies.

Monitoring may identify:

  • New vulnerabilities
  • Security advisories
  • Version updates
  • End-of-life announcements
  • Maintainer changes
  • Repository changes
  • Malicious package reports
  • License changes
  • Critical dependency changes

Automated alerts should be used where practical.


23. Change Management

Significant software dependency changes should follow the organization’s change-management process.

Examples:

  • Major version upgrade
  • Security patch
  • Dependency replacement
  • New critical dependency
  • Removal of a critical dependency
  • Change to production container
  • Change to build pipeline dependency

Where appropriate, changes should include:

Change → Testing → Security Validation → Approval → Deployment → Verification


24. Emergency Security Updates

Where a dependency vulnerability creates significant risk, the organization may use its emergency change process.

The process should include:

  1. Vulnerability identification
  2. Risk assessment
  3. Affected systems identification
  4. Remediation decision
  5. Emergency testing
  6. Approval
  7. Deployment
  8. Verification
  9. Documentation

Emergency changes should still leave an appropriate audit trail.


25. AWS SaaS Startup Example

Consider a SaaS startup operating an application on AWS.

The application uses:

  • Node.js
  • React
  • PostgreSQL driver
  • AWS SDK
  • Authentication SDK
  • Logging library
  • Container base image
  • Terraform provider
  • GitHub Actions

A simplified inventory could look like:

IDApplicationDependencyVersionTypeProductionVulnerabilityStatus
SW-001Customer APINode Package A[Version]DirectYesNoApproved
SW-002Customer APIPackage B[Version]TransitiveYesYesRemediation
SW-003Customer UIReact[Version]DirectYesNoApproved
SW-004API ContainerBase Image[Version]ContainerYesNoApproved
SW-005CI/CDGitHub Action[Version]BuildYesYesReview
SW-006InfrastructureTerraform Provider[Version]IaCYesNoApproved

If a vulnerability is discovered in SW-002, the organization can determine:

Component → Application → Production Environment → Exposure → Data → Risk → Remediation → Verification

That is much stronger evidence than simply showing a generic vulnerability-scanning report.


26. Startup-Friendly Dependency Management

A startup does not necessarily need a large manual spreadsheet containing every minor component.

A practical approach is:

Tier 1 — Automated Inventory

Use:

  • Package lock files
  • Dependency scanners
  • Container scanners
  • SBOM generation
  • Repository security tools

Tier 2 — Central Visibility

Maintain a central record of:

  • Critical applications
  • Important dependencies
  • Production components
  • Critical vulnerabilities
  • Unsupported components
  • High-risk third-party software

Tier 3 — Risk-Based Review

Focus manual review on:

  • Internet-facing components
  • Production dependencies
  • Privileged components
  • Security-sensitive libraries
  • Authentication components
  • Encryption components
  • Critical infrastructure dependencies
  • Components with sensitive data access

This reduces unnecessary administrative work while maintaining meaningful supply-chain visibility.


27. Relationship With Other ISMS Documents

DocumentRelationship
Asset RegisterIdentifies technology assets
Application RegisterIdentifies applications
ICT Dependency RegisterIdentifies broader technology dependencies
Supplier RegisterIdentifies external suppliers
Software Dependency InventoryIdentifies software components
Vulnerability RegisterTracks identified vulnerabilities
Risk RegisterTracks significant risks
Change ManagementControls dependency changes
Secure Development PolicyDefines development security requirements
Patch Management ProcedureDefines patching activities
SBOMProvides software-component visibility
Incident ManagementHandles dependency-related security incidents
Business ContinuityAddresses critical technology dependencies

28. Required Evidence

Depending on the organization’s technology and risk, evidence may include:

  • Software Dependency Inventory
  • Dependency lock files
  • SBOM
  • Software Composition Analysis reports
  • Vulnerability scan reports
  • Container scan reports
  • Security advisories
  • Patch records
  • Change records
  • Pull requests
  • Code-review records
  • Dependency approval records
  • Exception/risk-acceptance records
  • End-of-life tracking
  • License review records

29. Common Mistakes

Mistake 1 — Tracking Only Direct Dependencies

Transitive dependencies can also introduce vulnerabilities.

Mistake 2 — Tracking Component Names Without Versions

Security risk often depends on the exact version deployed.

Mistake 3 — Maintaining a Manual Spreadsheet Only

For modern applications, automated dependency discovery is generally more reliable.

Mistake 4 — Ignoring Build Dependencies

A compromised CI/CD dependency can create software supply-chain risk.

Mistake 5 — Treating CVSS as the Entire Risk Decision

Technical severity should be considered alongside exposure, exploitability, business impact, data, and compensating controls.

Mistake 6 — Not Connecting Vulnerabilities to Applications

Knowing that a package is vulnerable is less useful than knowing:

Which production application uses it and what information or service could be affected?


30. Quick Audit Checklist

An auditor may ask:

  • Do you maintain visibility of software dependencies?
  • How are dependencies identified?
  • Do you track direct and transitive dependencies?
  • Are production versions known?
  • How are vulnerabilities identified?
  • How quickly are important vulnerabilities assessed?
  • How are dependency risks prioritized?
  • How are unsupported dependencies identified?
  • How are new dependencies approved?
  • Are third-party packages obtained from trusted sources?
  • How are container dependencies managed?
  • How are CI/CD dependencies managed?
  • Do you generate or maintain SBOMs where appropriate?
  • How are dependency changes controlled?
  • How are emergency security updates handled?
  • Can you trace a vulnerable dependency to affected applications?
  • Can you demonstrate remediation and verification?

31. Final Audit Trail

A mature software dependency-management process should demonstrate:

Dependency Identified
↓
Application Mapped
↓
Version Recorded
↓
Source/Provenance Identified
↓
Security Status Checked
↓
Vulnerability Identified
↓
Risk Assessed
↓
Treatment Selected
↓
Patch / Upgrade / Replace
↓
Testing Completed
↓
Deployment Verified
↓
Inventory Updated

Final Principle

A Software Dependency Inventory is not simply a list of packages.

Its real purpose is to provide traceability:

What software do we depend on → where is it used → which version is running → what risks affect it → who owns the risk → what action was taken → and how was remediation verified?

For a modern SaaS organization, combining automated dependency discovery, vulnerability monitoring, SBOM capability, risk assessment, and controlled remediation provides a practical way to manage software supply-chain security without creating unnecessary documentation.

How can we help?

Leave a Reply

Your email address will not be published. Required fields are marked *