This document is under active development and has not been finalised.
Skip to content

6.1 Dependency Policy

Principles

1. Principle of Minimality

Only use dependencies that are necessary for the product's functionality. Unnecessary dependencies increase the attack surface.

2. Trustworthiness

Dependencies must originate from trustworthy sources and be actively maintained.

3. License Compliance

Only use dependencies with compatible licenses.

4. Versioning

Dependencies must be pinned to specific versions (no latest, no ranges).

Permitted Licenses

LicenseStatus
MIT✅ Permitted
Apache-2.0✅ Permitted
BSD-2-Clause✅ Permitted
BSD-3-Clause✅ Permitted
ISC✅ Permitted
CC0-1.0✅ Permitted
Unlicense✅ Permitted
MPL-2.0⚠️ Review required

Prohibited Licenses

LicenseStatusReason
GPL-2.0❌ ProhibitedCopyleft – may affect proprietary code
GPL-3.0❌ ProhibitedStrong copyleft
AGPL-3.0❌ ProhibitedNetwork copyleft
SSPL❌ ProhibitedServer-side copyleft
EUPL (without review)⚠️ ReviewCompatibility review required

License compliance checks are performed automatically via modules-license-compliance.yml.

Evaluation Criteria for New Dependencies

Before adopting a new dependency:

CriterionMinimum Requirement
MaintenanceLast commit < 6 months
Community>100 GitHub Stars or established project
Security HistoryNo unresolved CRITICAL CVEs
LicenseOn the permitted list
Transitive DependenciesNo known risks
MaintainerIdentifiable, no anonymous throwaway accounts

Automated Enforcement

CI/CD Pipeline

yaml
# Every PR is checked for:
- Security Scan (Trivy/Grype) → Blocks on CRITICAL
- License Compliance → Blocks on prohibited licenses
- Dependabot Alerts → Info on new vulnerabilities

Dependabot Configuration

  • Weekly checks across all ecosystems
  • Automatic PRs for security updates
  • Auto-merge for patch updates of trusted packages

Process for Supply Chain Attacks

In case of suspected compromised dependencies (dependency confusion, typosquatting, maintainer takeover):

  1. Immediately: Identify the affected dependency across all projects (SBOM search)
  2. Within 4h: Pin the dependency to a safe version or remove it
  3. Within 24h: Verify whether the compromised version was ever deployed to production
  4. If compromised: Activate the incident response playbook

Documentation licensed under CC BY-NC 4.0 · Code licensed under MIT