Zum Inhalt

EPPA SBOM, SOUP and Vulnerability Policy

EPPA generates dependency artifacts from reproducible dependency inputs:

  • Node dependencies: fronts/eppa/package-lock.json
  • Python dependencies: fronts/eppa/python/requirements.txt

Generate artifacts locally:

cd fronts/eppa
python3 scripts/supply_chain.py generate --artifact-dir .supply-chain-artifacts

The command writes:

  • .supply-chain-artifacts/eppa-sbom.cyclonedx.json
  • .supply-chain-artifacts/eppa-soup-register.json

These generated files are CI/release artifacts and are not committed by default.

Vulnerability Gate

CI enforces a high severity threshold. Any non-allowlisted dependency finding with severity high or critical fails the build.

The gate accepts JSON reports from npm audit --json, pip-audit -f json, or a generic fixture/report format:

For npm reports, the normalizer evaluates concrete advisory objects at their own severity. Dependency-path nodes are not duplicated as separate vulnerabilities.

{
  "findings": [
    {
      "ecosystem": "python",
      "package": "example",
      "id": "CVE-2099-0001",
      "severity": "high",
      "title": "example finding"
    }
  ]
}

Allowlist entries live in fronts/eppa/docs/security/dependency-vulnerability-allowlist.json. Every entry must include an ecosystem, package, vulnerability id, reason, owner, and expiry date. Expired entries must be removed or re-reviewed before release.

python3 scripts/supply_chain.py vulnerability-check \
  --severity-threshold high \
  --allowlist docs/security/dependency-vulnerability-allowlist.json \
  --reports .supply-chain-artifacts/npm-audit.json .supply-chain-artifacts/pip-audit.json