This document outlines the security measures and configurations implemented in our GitHub Actions workflows.
- actions/checkout: Updated to v4 (latest secure version)
- actions/setup-node: Updated to v4 (latest secure version)
- CodeQL Actions: Downgraded to v3 for stability
- Release Actions: Replaced deprecated
actions/create-releasewithsoftprops/action-gh-release@v2
All workflows now use principle of least privilege:
-
CI Workflow (
ci.yml):testjob:contents: readverify-commandsjob:contents: readsecurityjob:actions: read, contents: read, security-events: write
-
Release Workflow (
release.yml):releasejob:contents: write, issues: write, pull-requests: write, discussions: writeupdate-docsjob:contents: write
-
Security Workflow (
security.yml):- All jobs: Explicit permissions instead of defaults
- Configured with
.github/codeql-config.yml - Security and quality queries enabled
- JavaScript language scanning
- SARIF results output for GitHub Security tab
- Trivy: Container and filesystem vulnerability scanning
- OpenSSF Scorecard: Supply chain security assessment
- npm audit: Dependency vulnerability checks
- Gitleaks: Git history secret detection
- TruffleHog: Advanced secret scanning across commits
FORCE_COLOR: 3environment variable for consistent output- Explicit environment contexts in release workflows
- Version format validation in release workflow
- Regex pattern matching for semantic versioning
- Sanitization of user inputs
- Secure token handling with
GITHUB_TOKEN - Required secrets clearly identified
- Audit logging for automated dependency updates
| Tool | Purpose | Frequency | Output |
|---|---|---|---|
| CodeQL | Static code analysis | Every push/PR | SARIF to Security tab |
| Trivy | Vulnerability scanning | Every push/PR | SARIF to Security tab |
| Scorecard | Supply chain security | PRs | SARIF to Security tab |
| npm audit | Dependency vulnerabilities | Scheduled + PRs | Console output |
| Gitleaks | Secret detection | Scheduled + PRs | Console output |
| TruffleHog | Advanced secrets | Scheduled + PRs | Console output |
| License checker | License compliance | Scheduled | Console output |
permissions:
contents: read # Read repository contents
actions: read # Read actions status (security job)
security-events: write # Write security scan resultspermissions:
contents: write # Write releases and tags
issues: write # Create discussions
pull-requests: write # Update PRs
discussions: write # Create release discussionspermissions:
contents: read # Read code for scanning
actions: read # Read workflow status
security-events: write # Write scan results
pull-requests: read # Read PR details- Security scan failures trigger workflow failures
- High-severity vulnerabilities block releases
- Secret detection failures require manual review
- Dependency updates require security review
- New high-risk permissions need approval
- Breaking changes in dependencies need validation
- All security scans pass
- No critical vulnerabilities introduced
- Dependencies reviewed for license compliance
- Secrets not committed to repository
- Security audit passes
- CodeQL analysis clean
- Dependency vulnerabilities addressed
- No secrets in release assets
- Review GitHub Actions versions quarterly
- Update security scanning tools monthly
- Audit permissions annually
- Security scan failures: Address immediately
- Secret leaks: Rotate affected secrets + revoke access
- Vulnerability alerts: Patch within SLA
For security concerns, please use GitHub Security Advisories or contact the maintainers directly.