Skip to content

Add SBOM design document and improve SECURITY.md#332

Merged
fglock merged 11 commits into
masterfrom
feature/sbom-support
Mar 19, 2026
Merged

Add SBOM design document and improve SECURITY.md#332
fglock merged 11 commits into
masterfrom
feature/sbom-support

Conversation

@fglock
Copy link
Copy Markdown
Owner

@fglock fglock commented Mar 19, 2026

Summary

This PR adds an SBOM (Software Bill of Materials) design document and improves the security policy.

Changes

1. SBOM Design Document (dev/design/sbom.md)

A comprehensive plan for adding CycloneDX SBOM generation to PerlOnJava, covering:

  • Java dependencies: CycloneDX Gradle/Maven plugin configuration
  • Bundled Perl modules: Custom script using SBOM::CycloneDX from CPAN
  • Storage locations: JAR embedding, DEB packages, GitHub releases
  • CI/CD integration: GitHub Actions workflow
  • CPANSec integration: Links to CPAN Security Group resources

Status: Planning document only - no code changes. Implementation tracked in Next Steps section.

2. Security Policy Improvements (SECURITY.md)

  • Added CPANSec contact for bundled Perl module vulnerabilities
  • Added response timeline targets (7/14/90 days)
  • Expanded dependency vulnerabilities section with CPANSA feed reference
  • Added Related Resources section

References


Generated with Devin

fglock and others added 11 commits March 19, 2026 09:29
This document outlines the plan to add CycloneDX SBOM generation for
PerlOnJava, covering both Java dependencies (via Gradle/Maven plugins)
and bundled Perl modules (via SBOM::CycloneDX).

Key points:
- Phase 1: Add CycloneDX plugins to Gradle and Maven builds
- Phase 2: Generate Perl module SBOM using SBOM::CycloneDX
- Phase 3: Optional combined SBOM merging
- CI/CD integration for automated SBOM generation
- Compliance with NTIA minimum elements and CISA guidelines

No code changes yet - this is a planning document only.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
Documents where SBOM files will be stored in:
- Build output (build/reports/sbom/ for Gradle, target/ for Maven)
- JAR distribution (META-INF/sbom/)
- DEB package (/opt/perlonjava/share/sbom/)
- GitHub release artifacts (standalone files)

Includes configuration snippets for embedding SBOM in JAR and DEB.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
Documents hash support in CycloneDX:
- Supported algorithms: MD5, SHA-1, SHA-256, SHA-384/512, SHA3-*, BLAKE2b/3
- Java dependencies: hashes are automatically included by plugins
- Perl modules: need manual SHA-256 computation using Digest::SHA
- Hash verification enables integrity checking

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
PerlOnJava ships as a single uber JAR with all dependencies shaded in.
Updated hash strategy:

- Java deps: automatic per-component hashes (pre-shading artifacts)
- Perl modules: skip individual hashes (version/license sufficient)
- Distribution: single .sha256 file alongside JAR/DEB releases

This simplifies the Perl SBOM generation - no need to compute 511
individual hashes for bundled modules.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
Attribution is tracked in git history.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
Accuracy fixes:
- Correct Gradle version catalog plugin syntax
- Fix output paths to match actual CycloneDX defaults (build/reports/cyclonedx/)
- Remove biased claim about SPDX tooling maturity
- Fix "re-implemented" claim for Perl pragmas
- Remove hallucinated version date for SBOM::CycloneDX
- Correct claim about CPAN checksums

Clarity improvements:
- Add glossary explaining SBOM, CycloneDX, PURL, VEX, shaded JAR, Maven Central, CPAN
- Better explain "why SBOM matters" with concrete use cases
- Simplify Phase 2 options to single recommended approach
- Add context for both Java and Perl developers
- Improve code examples with comments

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
- Update Phase 3 merge example to use correct paths
- Update CI/CD section to use build/reports/cyclonedx/
- Remove speculative Dependency-Track integration (can be added later)
- Simplify release artifacts example

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
- Add SBOM standards: ECMA-424, SPDX, PURL, VEX specs
- Add CycloneDX tooling: CLI, online validator
- Add Java/Perl resources: Maven Central, CPAN
- Add EU Cyber Resilience Act
- Add inline links to glossary terms

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
- Document CPANSec as the CVE Numbering Authority for Perl/CPAN
- Add cpansa-feed for machine-readable security advisories
- Add perl-SBOM-Examples for SBOM best practices
- Document integration opportunity for vulnerability checking
- Expand Perl Resources in references section

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
- Add email as alternative reporting channel
- Add section for bundled Perl module vulnerabilities with CPANSec contact
- Add response timeline targets (7/14/90 days)
- Expand dependency vulnerabilities section with CPANSA feed reference
- Add TODO placeholder for future SBOM reference
- Add Related Resources section with security links

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <noreply@cognition.ai>
@fglock fglock changed the title WIP: Add SBOM (Software Bill of Materials) support Add SBOM design document and improve SECURITY.md Mar 19, 2026
@fglock fglock marked this pull request as ready for review March 19, 2026 09:09
@fglock fglock merged commit 9519c16 into master Mar 19, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant