🛡️ GSC — Git Security Checker
Self-learning SAST that sees the past, present, and future of every vulnerability
Not just another scanner. GSC proves vulnerabilities with generated exploits, fixes them with verified patches, and heals your codebase with automatic PRs.
Quick Start · Features · GitHub Action · Architecture · Roadmap
🎯 Why GSC?
Every SAST tool shows you a snapshot of "right now" — a list of findings you have to triage, verify, and fix manually.
GSC is different. It closes the entire security loop:
detect → prove → fix → verify → heal → predict → learn
| Stage | What GSC does | Who else does this? |
|---|---|---|
| Detect | 25+ detectors + LLM revalidation | Semgrep, Snyk, CodeQL |
| Prove | Auto-generates a working exploit (PoC) | 🔴 Nobody |
| Fix | Auto-generates a minimal patch via LLM | 🔴 Nobody |
| Verify | Re-runs PoC in sandbox — exploit must fail | 🔴 Nobody |
| Heal | Opens a PR with the verified fix | 🔴 Nobody |
| Predict | Forecasts where the next vulnerability appears | 🔴 Nobody |
| Learn | Self-tunes: auto-deactivates noisy patterns | 🔴 Nobody |
Semgrep, Snyk, CodeQL, Sn1per — they all see a slice of "now." GSC sees the past, present, and future of every vulnerability.
✨ What Makes GSC Unique
🥇 Proof-of-Fix — verified auto-remediation
GSC doesn't just tell you there's a bug. It:
- Generates a working exploit (PoC) and runs it → proves the code is vulnerable
- Generates a minimal patch via LLM
- Applies the patch in an isolated sandbox
- Re-runs the exploit → if the exploit now fails, the fix is verified ✅
- Optionally validates on staging via nuclei DAST scan (v0.28)
gsc pof generate abc123 --report scan.json --project-root ./repo
Finding GS005 (SQL Injection) — app.py:42
PoC before: SQLi successful: admin@admin.com (VULNERABLE)
Patch: query = "SELECT ... WHERE id=?" ; cursor.execute(query, (uid,))
PoC after: ERROR: no results (SAFE)
DAST verify: nuclei staging scan → no findings ✅
✅ VERIFIED (sandbox + DAST)
🥈 Self-Healing CI — automatic remediation PRs
Wire GSC into CI. On every CRITICAL/HIGH finding, GSC runs Proof-of-Fix
and — if the patch is verified — opens a pull request with the fix.
gsc pof batch scan.json --create-pr --max-fixes 3
→ Opens PR #142: [GSC Auto-Fix] 2 verified fixes
🥉 Security Archaeology — vulnerability time-travel
Trace the full lifespan of any vulnerability: who introduced it, when, who fixed it, and how long it lived.
gsc archaeology trace abc123 --repo ./project
GS003 SQLi in auth.py:42
Introduced by: commit abc123 (alice) on 2026-06-15
Fixed by: commit def456 (bob) on 2026-08-01
Lived: 47 days
Module auth — average lifespan: 23.4 days
🔮 Predictive Forecasting — risk heatmaps
GSC scores every file by likelihood of future vulnerabilities using past density, code churn, author count, file size, and module clustering.
gsc forecast heatmap --repo ./project
Score Level C H Churn File
55 critical 3 2 42 🔴 payments/checkout.py
38 high 1 4 18 🟠 auth/login.py
22 medium 0 2 12 🟡 api/handler.go
8 low 0 0 2 🟢 utils/helpers.py
🗣️ NL Policy — security rules in plain language
Write a policy in English (or Russian). GSC compiles it to a deterministic regex rule and enforces it across the repo.
gsc policy add "secrets must never appear in log statements"
→ Policy nlp-abc12345 (CRITICAL) compiled
Pattern: (?i)(?:log\.(?:info|error|debug|warn)\(.*(?:password|secret|token|key).*)
🔗 Exploit Chain Composer
GSC composes individual findings into real attack chains, showing how a low-severity leak chains into a critical breach (e.g., Info Leak → IDOR → SQLi → RCE).
🔐 Cross-Repo Secret Correlation (v0.27)
Scans multiple repos, fingerprints secrets (stores hashes only, never values), correlates the same secret across codebases, and detects rotation.
🧠 Self-Learning Engine
- Nightly LLM revalidation of findings (DeepSeek)
- Developer feedback loop:
gsc feedback <key> --verdict tp|fp - Auto-deactivation of patterns with < 30% TP rate at ≥ 10 verdicts
- Blocking Engine only blocks with detectors of proven accuracy
🔬 DAST Validation (v0.28)
SAST findings exported as nuclei YAML templates. Validate on staging:
gsc export-nuclei scan.json -o templates/
gsc scan-dast https://staging.example.com --severity critical
🏗️ Architecture
GSC SAST+DAST Hybrid Platform
├── 25 plugin detectors (GS001–GS028)
├── LLM revalidator (DeepSeek) — confidence scoring
├── PoC Auto-Generator — working exploits (Python/curl)
├── Proof-of-Fix — sandbox + staging verification
├── Self-Healing CI — auto-PR with verified patches
├── Security Archaeology — vulnerability lifespan tracing
├── Predictive Forecasting — risk heatmaps
├── NL Policy — human-language security rules
├── Exploit Chain Composer — cross-file attack paths
├── Cross-Repo Secret Correlation — fingerprint + rotation
├── Blocking Engine — auto-policy with community verdicts
├── GitHub Adapter — PR comments, checks, SARIF, /gsc commands
├── Nuclei Integration — DAST export/import/validate (v0.28)
└── SQLite DB — schema 25, WAL, 403K fingerprints
Scan modes: quick (CI, ~5s, regex-only) · standard (daily, LLM) · deep (full audit with chains)
⚡ Quick Start
# Full scan of a repository
gsc external-scan https://github.com/user/repo --profile audit
# PR diff scan (CI gate)
gsc external-scan ./repo --profile pr-gate \
--mode diff --base main --head HEAD --fail-on-blocking
# Scan + auto-generate verified fixes
gsc external-scan ./repo --profile audit --with-poc --with-chains
# Predict risk hotspots
gsc forecast heatmap --repo ./repo
# Trace a vulnerability's history
gsc archaeology trace <finding_key> --repo ./repo
# Export to nuclei for DAST validation
gsc export-nuclei scan.json -o nuclei-templates/
nuclei -t nuclei-templates/ -u https://staging.example.com
Profiles: developer-review · pr-gate · audit · candidate-review
📊 Comparison
| Capability | GSC | Semgrep | Snyk | CodeQL | Sn1per |
|---|---|---|---|---|---|
| SAST detection | ✅ | ✅ | ✅ | ✅ | ❌ |
| Auto PoC generation | ✅ | ❌ | ❌ | ❌ | ❌ |
| Auto verified fix | ✅ | ❌ | ❌ | ❌ | ❌ |
| Self-healing PRs | ✅ | ❌ | ❌ | ❌ | ❌ |
| Self-learning / auto-tune | ✅ | ❌ | ❌ | ❌ | ❌ |
| Vulnerability archaeology | ✅ | ❌ | ❌ | ❌ | ❌ |
| Predictive forecasting | ✅ | ❌ | ❌ | ❌ | ❌ |
| Exploit chain composition | ✅ | ❌ | ❌ | ❌ | ❌ |
| NL security policies | ✅ | ⚠️ | ❌ | ❌ | ❌ |
| Cross-repo secret correlation | ✅ | ❌ | ⚠️ | ❌ | ❌ |
| DAST validation | ✅ | ❌ | ❌ | ❌ | ✅ |
| PR integration | ✅ | ✅ | ✅ | ✅ | ❌ |
🧪 Quality
- 78/78 tests (67 corpus + 11 nuclei integration)
- 17/17 calibration projects (11 clean + 6 vulnerable)
- Hard chain assertion with retry (2-of-3, temperature 0)
- Production rollout Phase 0–5 complete (blocking-standard)
- Schema 25, WAL, auto-backup migrations
🗺️ Roadmap
| Phase | Status |
|---|---|
| Core pipeline v0.11–v0.16 | ✅ |
| Unique features v0.17–v0.21 | ✅ |
| Production rollout Phase 0–5 | ✅ |
| Exclusive features v0.27 (PoF, Archaeology, Forecast…) | ✅ |
| SAST+DAST hybrid v0.28 (nuclei integration) | ✅ |
| VSCode extension / Marketplace | 🔜 |
| Enterprise (Helm, SSO) | 📋 |
📄 License
Business Source License 1.1 (BSL 1.1). See LICENSE.
🚀 GitHub Action
One line to add GSC to any repo:
- uses: poliakarmai/gsc@master
with:
deep_scan: true
with_poc: true
with_chains: true
The action will:
- 🔍 Scan your code on every PR and push
- 💬 Post findings as a PR comment (upserts on new commits)
- 📊 Show a security score badge on your README
- 🚫 Optionally block merge on CRITICAL findings
Template: Copy .github/workflows/gsc-audit-template.yml to your repo.
GSC doesn't just find vulnerabilities. It proves them, fixes them, and learns from them.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gsc_security-1.3.0-py3-none-any.whl.
File metadata
- Download URL: gsc_security-1.3.0-py3-none-any.whl
- Upload date:
- Size: 256.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81131f68547ae53caa07572ed97e6074f9714645cd5aaaaca7380a7cb0d0c225
|
|
| MD5 |
210ad9633755ca1c95c97c391552a810
|
|
| BLAKE2b-256 |
d4b3a2746159540a8bb3bff24735701757dd0b5e56e6d6d2694d7006a73edc88
|