Skip to content

feat(ci): GitHub security pipeline (OWASP LLM Top 10 + secrets + LaTeX injection)#18

Merged
datarian merged 1 commit into
mainfrom
claude/github-security-pipeline
Jun 13, 2026
Merged

feat(ci): GitHub security pipeline (OWASP LLM Top 10 + secrets + LaTeX injection)#18
datarian merged 1 commit into
mainfrom
claude/github-security-pipeline

Conversation

@datarian

@datarian datarian commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Summary

  • Adds .github/workflows/security.yml — 5-job security pipeline triggered on every PR (open, synchronize, reopen)
  • Adds .github/semgrep/llm-owasp.yaml — custom Semgrep rules for OWASP LLM Top 10 risks specific to a Claude Code plugin

Jobs

Job Tool Catches
Secret Scanning Gitleaks v2 Hardcoded credentials across full PR commit history
npm Dependency Audit npm audit Vulnerable packages in resumes/web-builder (skips if not committed yet)
SAST Semgrep auto + custom TypeScript/React vulnerabilities + OWASP LLM Top 10; results go to GitHub Security tab as SARIF
LaTeX Injection grep \write18 and shell_escape in .tex templates (arbitrary shell execution)
Personal Data Leak git ls-files Hard-fails if PERSONAL_PROFILE.md, .backup. files, or compiled resumes are accidentally tracked

OWASP LLM Top 10 custom rules

  • LLM01 Prompt Injection — string concatenation into prompt builders
  • LLM02 Insecure Output Handling — innerHTML =, document.write, dangerouslySetInnerHTML
  • LLM05 Supply Chain — preinstall/postinstall hooks in package.json
  • LLM06 Sensitive Data — Anthropic/OpenAI/GitHub token patterns
  • LLM08 Excessive Agency — eval(), new Function(), dynamic child_process.exec

Test plan

  • Merge triggers the workflow on the next PR and all 5 jobs appear in CI
  • GITLEAKS_LICENSE secret can be left unset (public repo — Gitleaks works without it)
  • npm audit job shows as skipped until resumes/web-builder is committed
  • LaTeX safety job passes on current templates (no \write18 present)
  • PII check passes (profile files are gitignored)

🤖 Generated with Claude Code

Adds a 5-job security workflow triggered on PR open, synchronize, and
reopen events — covering secret scanning (Gitleaks), npm dependency
audit, TypeScript/React SAST via Semgrep, LaTeX shell-escape injection
detection, and a personal data leak gate that hard-fails if gitignored
profile files are accidentally tracked.

Includes custom Semgrep rules targeting OWASP LLM Top 10 risks relevant
to a Claude Code plugin: LLM01 prompt injection, LLM02 insecure output
handling, LLM05 supply chain hooks, LLM06 credential disclosure, and
LLM08 excessive agency (eval/exec). Findings upload as SARIF to the
GitHub Security tab.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@datarian
datarian merged commit 847d223 into main Jun 13, 2026
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