This release includes 1 breaking change for platform teams planning a safe upgrade.
✓ No known CVEs patched in this version
Affected surfaces
Summary
AI summaryBumped CycloneDX spec version from 1.5 to 1.6, requiring schema updates for consumers.
Full changelog
PCI DSS 6.3.2 software-inventory output is now production-grade: full CycloneDX 1.6 metadata, SPDX-correct licenses, byte-reproducible output, and a CI gate that runs the official cyclonedx-cli validator against every build.
Highlights
Standards conformance
- CycloneDX spec bumped 1.5 → 1.6. Schema-validated in CI via
cyclonedx-cli validate --input-version v1_6 --fail-on-errors. - SBOM provenance. Every SBOM now carries
serialNumber(urn:uuid v4),metadata.timestamp(RFC3339 UTC),metadata.component(the scanned project as the BOM subject), and an enrichedmetadata.tools.components[0]with publisher, externalReferences (VCS + website), and a SHA-256 self-hash of the running pci-dss-mcp binary. - SPDX-correct licenses. Detected licenses now emit valid SPDX identifiers (
MIT,Apache-2.0,BSD-3-Clause) instead of placeholder strings. Detection viagithub.com/google/licensecheckv0.3.1 withcoverageThreshold = 75(matches pkg.go.dev's production source). License findings recorded withacknowledgement: "concluded"per CycloneDX 1.6 semantics (verified by file analysis), plus a fullcomponent.evidence.licenses[]trail with confidence and source-file location. - NTIA Minimum Elements for SBOM (2021): 6 of 7 baseline fields covered.
Reproducibility
- New
generate_sbomparameters:fixed_serial(override theserialNumber) andno_timestamp(omitmetadata.timestamp). Combined, two runs over the same dependency graph produce byte-identical SBOMs (SHA-256-verified). Required for SLSA Level 3 reproducible-build attestations and for caching in CI pipelines. sbomdumpCLI mirrors both options as-fixed-serialand-no-timestamp. Default output is now compact JSON.- New error token:
INVALID_FIXED_SERIAL.
CI standards-validation gate
- New
make test-sbom-validatetarget generates a fresh SBOM viasbomdumpand validates it against the bom-1.6 schema using the officialcyclonedx-cliDocker image (cyclonedx/cyclonedx-cli:0.30.0, pinned). - Wired into
.github/workflows/ci.ymlonubuntu-latest. Every PR is now externally validated against the spec.
Stability fixes (rolled in for this release)
- Human-readable 6.3.2 cross-reference no longer renders an unknown-license count that depended on local
GOMODCACHEstate. The line now readsSBOM inventory: N componentsonly — component count is deterministic fromgo.mod. The unknown count is still available programmatically viaunknown_licenseson the MCP response and as per-componentpci-dss-mcp:license-status="unknown"properties in the SBOM JSON. - License
acknowledgementcorrected fromdeclared(what authors stated) toconcluded(verified by file analysis), matching what pci-dss-mcp actually does.
Migration
- Clients schema-validating against the v0.6.1 OutputSchema constant
"spec_version": "1.5"need to update their consumer-side schema to"1.6". Downstream SBOM tooling (Grype, Trivy, Snyk, Dependency-Track, VEX tooling) auto-detects the spec version from the SBOM's ownspecVersionfield — no consumer change there. - Clients that read
License.id == "UNKNOWN-LICENSE"to detect license gaps must switch tounknown_licensesin the response (already populated since v0.6.1) or to checking for thepci-dss-mcp:license-statusproperty on components without alicenses[]array.
Verification
| Gate | Result |
|------|--------|
| make vet | PASS |
| make test (race, 23 packages) | PASS |
| make test-fixture (golden regression) | PASS |
| make test-sbom-validate (cyclonedx-cli 1.6 schema) | PASS |
| TestSBOMStandardsConformance (urn:uuid + RFC3339 + metadata.component + tool version + SPDX ids) | PASS |
| TestFormatHumanReadable_ByteIdentical_Golden (clean GOMODCACHE) | PASS |
| Live-path vs fixture-copy smoke parity (C=49 H=89 M=27 I=59) | PASS |
| Reproducibility proof (two runs, identical SHA-256) | PASS |
Severity counts on testdata/vulnerable-payment-service remain byte-identical to v0.6.1: 49 CRITICAL / 89 HIGH / 27 MEDIUM / 0 LOW / 59 INFO. No detection logic changed.
Distribution
go install github.com/shyshlakov/[email protected]- Multi-arch Docker (linux/amd64 + linux/arm64), cosign-signed via OIDC:
ghcr.io/shyshlakov/pci-dss-mcp:0.6.2and:latest - MCP Registry:
io.github.shyshlakov/pci-dss-mcpv0.6.2 (auto-published on tag)
Pull request
Supersedes #20. Merged via #21.
Breaking Changes
- Output schema changed from "spec_version": "1.5" to "1.6"; downstream consumers must update validation schemas.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About shyshlakov/pci-dss-mcp
PCI DSS v4.0.1 static-analysis MCP server for Go payment codebases. 12 scanners detect PAN/CVV exposure, weak crypto, missing audit logs, vulnerable deps, TLS misconfig, auth weaknesses, plus CycloneDX 1.6 SBOM generation - each finding mapped to the exact PCI requirement. AI-assisted triage via triage_findings. Keyless-signed multi-arch Docker image on ghcr.io.
Related context
Beta — feedback welcome: [email protected]