The GitHub Action
CI/CD & package security in 30 seconds.
Drop one workflow file into any repo. On every push and PR, vu1nz scans your workflows for 17 CI/CD vulnerabilities and sweeps any newly added npm / pip / cargo / gem / go.mod / composer package for malware. PR comment in seconds.
Quick start
Paste & push.
Create .github/workflows/security.yml with this content and push. The next PR triggers your first scan.
# .github/workflows/security.yml
name: vu1nz Security Scan
on:
push:
branches: [main, master]
pull_request:
jobs:
scan:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- uses: profullstack/vu1nz-gh-actions/.github/actions/vu1nz-actions-scan@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
license_key: ${{ secrets.VU1NZ_LICENSE }}
scan_packages: true
fail_on: high
Optional
Add Claude AI code review.
Set ANTHROPIC_API_KEY in repo secrets and pass it to the action. Claude reviews each workflow for business-logic issues and over-provisioned tokens that the deterministic checks miss.
# Optional: Claude AI code review
- uses: profullstack/vu1nz-gh-actions/.github/actions/vu1nz-actions-scan@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
license_key: ${{ secrets.VU1NZ_LICENSE }}
claude_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
fail_on: high
The checks
17 deterministic checks. Mapped to CWE.
Every finding includes a CWE reference and a one-line remediation. Set fail_on to block merges at the severity you choose.
Critical
3 checks${{ github.event.* }} interpolated into run: commands — attackers inject via PR title or branch name.
Running PR code with full repo token — the most dangerous workflow pattern.
${{ secrets.* }} interpolated directly into shell — leaks in logs and process listings.
High
7 checksActions referenced by tag or short SHA instead of a full 40-character commit hash.
Risky trigger that runs with full token — must be necessary and tightly scoped.
PR workflows with access to secrets — forks can steal them.
${{ matrix.* }} in run: — attacker-controlled matrix values can inject.
Default checkout on PR target checks PR's HEAD instead of the base branch.
environment: defined without protection rules.
Any ${{ }} expression in run: blocks — potential injection vector.
Medium
6 checksContainer images referenced by tag, not digest (tags are mutable).
Violates least privilege — token has more power than the job needs.
Reusable workflows referenced from external repos by short SHA.
Artifacts passed between jobs without integrity validation.
Self-hosted runners can execute code on your infrastructure — audit required.
Direct push to main deploys without PR or CI gating.
Low
1 checkNo permissions: block — defaults may be too permissive.
FAQ
Common questions.
How long does it take to set up?
Does it work on private repos?
Will it slow down my CI?
What gets sent to Claude?
How does it compare to GitHub CodeQL?
Is it free?
Ready?
Ship safer today.
Free 14 days. No card. Cancel anytime. MIT-licensed source you can audit.