Security Tooling

CodeReaper

Status: ActivePlatform: GitHub ActionsStack: TypeScript, GitHub Actions, Snyk, OWASP
CodeReaper hero image

Problem

Security vulnerabilities accumulate silently across repositories. Dependencies contain CVEs. API keys leak into commit history. Secrets persist in git logs even after removal from current code. Manual security review does not scale. Individual repository scanning provides localized results but misses aggregate patterns.

Organizations with dozens or hundreds of repositories have no unified view of security posture. Which repos have critical vulnerabilities? Which contain exposed secrets? Which dependencies create supply chain risk? Answering these questions requires examining each repository independently — work that compounds with repository count and becomes effectively impossible to maintain manually.


Approach

CodeReaper operates through three integrated scanning engines: Snyk for CVE-based vulnerability detection, OWASP Dependency-Check for supply chain analysis, and custom regex pattern matching for secret detection (API keys, tokens, private keys, credentials). Each engine examines a different attack surface. Results aggregate into a master report showing security posture across the entire repository collection.

The system runs via GitHub Actions with configurable trigger events: push to main, pull request creation, scheduled intervals, and manual dispatch. Automated label creation maintains consistent severity taxonomy across all repositories: security, critical, high-priority, medium-priority, low-priority, immediate-action, action-needed, review-needed, routine-scan, good-status.


Implementation

Integration operates through GitHub Apps for authentication and repository access. Scans trigger on configurable events and post results as GitHub issues with severity labels, creating trackable remediation items within existing workflows.

CI/CD pipeline integration blocks merges when new vulnerabilities or exposed secrets are detected. This shifts security left — issues caught during development rather than production.

The reporting system tracks historical security posture evolution: critical issue count over time, average remediation time, repeat violations indicating systematic problems. Credential rotation and expiration are handled gracefully — failed API calls generate alerts rather than silent failures, and scanning continues using available engines when individual credentials expire.

Priority assignment combines CVSS scores, secret type and exposure duration, and dependency criticality to distinguish actual risk from theoretical concern. The goal is not zero vulnerabilities — an impossible standard — but systematic identification and rational prioritization.

TypeScriptGitHub ActionsSnykOWASPNode.jsCI/CD