torusguard 1.4.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.torusguard/.manifest.json +50 -28
- package/.torusguard/auth.json +5 -0
- package/.torusguard/rules/container/TG-CONT-001-root-user-execution.md +50 -0
- package/.torusguard/rules/container/TG-CONT-002-docker-socket-mount.md +47 -0
- package/.torusguard/rules/container/TG-CONT-003-privileged-container-mode.md +53 -0
- package/.torusguard/rules/container/TG-CONT-004-build-arg-secret-exposure.md +43 -0
- package/.torusguard/rules/git/TG-GIT-001-historical-secret-in-git-commit.md +44 -0
- package/.torusguard/rules/git/TG-GIT-002-plaintext-credentials-in-git-config.md +41 -0
- package/.torusguard/rules/git/TG-GIT-003-sensitive-tracked-file-gitignore-breach.md +40 -0
- package/.torusguard/rules/rag/TG-RAG-001-untrusted-rag-context-injection.md +72 -0
- package/.torusguard/rules/rag/TG-RAG-002-autonomous-llm-tool-unsandboxed-call.md +51 -0
- package/.torusguard/rules/rag/TG-RAG-003-unpartitioned-vector-tenant-lookup.md +51 -0
- package/.torusguard/rules/redos/TG-REDOS-001-catastrophic-exponential-backtracking.md +46 -0
- package/.torusguard/rules/redos/TG-REDOS-002-unbounded-nested-quantifier.md +43 -0
- package/.torusguard/rules_catalog.json +338 -518
- package/.torusguard/scripts/__pycache__/apply_runner.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/audit_runner.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/harden_runner.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/html_reporter.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/manifest_builder.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/recipes_runner.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/report_sync.cpython-314.pyc +0 -0
- package/.torusguard/scripts/manifest_builder.py +1 -1
- package/.torusguard/skills/torusguard/SKILL.md +69 -24
- package/.torusguard/skills/torusguard/bootstrap.py +57 -24
- package/.torusguard/skills/torusguard-ai-guard/SKILL.md +95 -0
- package/.torusguard/skills/torusguard-apply/SKILL.md +60 -34
- package/.torusguard/skills/torusguard-audit/SKILL.md +73 -24
- package/.torusguard/skills/torusguard-authorize/SKILL.md +48 -6
- package/.torusguard/skills/torusguard-container/SKILL.md +94 -0
- package/.torusguard/skills/torusguard-exploit-check/SKILL.md +50 -6
- package/.torusguard/skills/torusguard-full/SKILL.md +62 -19
- package/.torusguard/skills/torusguard-git-mine/SKILL.md +92 -0
- package/.torusguard/skills/torusguard-harden/SKILL.md +81 -50
- package/.torusguard/skills/torusguard-init/SKILL.md +61 -14
- package/.torusguard/skills/torusguard-ocr-scan/SKILL.md +94 -0
- package/.torusguard/skills/torusguard-recheck/SKILL.md +71 -18
- package/.torusguard/skills/torusguard-redos/SKILL.md +91 -0
- package/.torusguard/skills/torusguard-report/SKILL.md +50 -9
- package/.torusguard/skills/torusguard-status/SKILL.md +63 -10
- package/.torusguard/skills/torusguard-verify/SKILL.md +52 -10
- package/.torusguard/skills/torusguard-web-validate/SKILL.md +53 -8
- package/.torusguard/snapshots/20260921-182638/go.mod.bak +11 -0
- package/.torusguard/snapshots/20260921-185213/file.go.bak +5 -0
- package/.torusguard/workflows/ai-guard.md +31 -0
- package/.torusguard/workflows/apply.md +32 -55
- package/.torusguard/workflows/audit.md +28 -46
- package/.torusguard/workflows/authorize.md +27 -50
- package/.torusguard/workflows/container.md +29 -0
- package/.torusguard/workflows/exploit-check.md +28 -50
- package/.torusguard/workflows/git-mine.md +25 -0
- package/.torusguard/workflows/harden.md +29 -48
- package/.torusguard/workflows/init.md +27 -50
- package/.torusguard/workflows/memory.md +18 -23
- package/.torusguard/workflows/ocr-scan.md +25 -0
- package/.torusguard/workflows/recheck.md +28 -46
- package/.torusguard/workflows/redos.md +27 -0
- package/.torusguard/workflows/report.md +33 -52
- package/.torusguard/workflows/status.md +31 -52
- package/.torusguard/workflows/verify.md +29 -49
- package/.torusguard/workflows/web-validate.md +22 -45
- package/README.md +336 -386
- package/package.json +1 -1
- package/skills/torusguard/SKILL.md +71 -24
- package/skills/torusguard/__pycache__/bootstrap.cpython-314.pyc +0 -0
- package/skills/torusguard/bootstrap.py +60 -71
- package/skills/torusguard/payload/.manifest.json +50 -28
- package/skills/torusguard/payload/TORUSGUARD.md +145 -145
- package/skills/torusguard/payload/agents/auditor.md +41 -41
- package/skills/torusguard/payload/agents/profiler.md +49 -49
- package/skills/torusguard/payload/agents/remediator.md +41 -41
- package/skills/torusguard/payload/agents/reviewer.md +39 -39
- package/skills/torusguard/payload/agents/validator.md +46 -46
- package/skills/torusguard/payload/config/scope.json +24 -24
- package/skills/torusguard/payload/references/csharp-security.md +41 -41
- package/skills/torusguard/payload/references/go-security.md +41 -41
- package/skills/torusguard/payload/references/java-security.md +40 -40
- package/skills/torusguard/payload/references/polyglot-security-matrix.md +25 -25
- package/skills/torusguard/payload/references/rust-security.md +40 -40
- package/skills/torusguard/payload/rules/container/TG-CONT-001-root-user-execution.md +50 -0
- package/skills/torusguard/payload/rules/container/TG-CONT-002-docker-socket-mount.md +47 -0
- package/skills/torusguard/payload/rules/container/TG-CONT-003-privileged-container-mode.md +53 -0
- package/skills/torusguard/payload/rules/container/TG-CONT-004-build-arg-secret-exposure.md +43 -0
- package/skills/torusguard/payload/rules/custom/.gitkeep +1 -1
- package/skills/torusguard/payload/rules/custom/README.md +30 -30
- package/skills/torusguard/payload/rules/git/TG-GIT-001-historical-secret-in-git-commit.md +44 -0
- package/skills/torusguard/payload/rules/git/TG-GIT-002-plaintext-credentials-in-git-config.md +41 -0
- package/skills/torusguard/payload/rules/git/TG-GIT-003-sensitive-tracked-file-gitignore-breach.md +40 -0
- package/skills/torusguard/payload/rules/rag/TG-RAG-001-untrusted-rag-context-injection.md +72 -0
- package/skills/torusguard/payload/rules/rag/TG-RAG-002-autonomous-llm-tool-unsandboxed-call.md +51 -0
- package/skills/torusguard/payload/rules/rag/TG-RAG-003-unpartitioned-vector-tenant-lookup.md +51 -0
- package/skills/torusguard/payload/rules/redos/TG-REDOS-001-catastrophic-exponential-backtracking.md +46 -0
- package/skills/torusguard/payload/rules/redos/TG-REDOS-002-unbounded-nested-quantifier.md +43 -0
- package/skills/torusguard/payload/rules_catalog.json +338 -518
- package/skills/torusguard/payload/scripts/__pycache__/term_ui.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/manifest_builder.py +1 -1
- package/skills/torusguard/payload/scripts/rules_sync.py +321 -321
- package/skills/torusguard/payload/scripts/safety_gate.py +64 -64
- package/skills/torusguard/payload/skills/torusguard/SKILL.md +69 -24
- package/skills/torusguard/payload/skills/torusguard/bootstrap.py +57 -24
- package/skills/torusguard/payload/skills/torusguard-ai-guard/SKILL.md +95 -0
- package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +60 -34
- package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +73 -24
- package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +48 -6
- package/skills/torusguard/payload/skills/torusguard-container/SKILL.md +94 -0
- package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +50 -6
- package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +62 -19
- package/skills/torusguard/payload/skills/torusguard-git-mine/SKILL.md +92 -0
- package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +81 -50
- package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +61 -14
- package/skills/torusguard/payload/skills/torusguard-ocr-scan/SKILL.md +94 -0
- package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +71 -18
- package/skills/torusguard/payload/skills/torusguard-redos/SKILL.md +91 -0
- package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +50 -9
- package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +63 -10
- package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +52 -10
- package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +53 -8
- package/skills/torusguard/payload/templates/audit-report.template.md +54 -54
- package/skills/torusguard/payload/templates/authorization.template.md +34 -34
- package/skills/torusguard/payload/templates/finding-card.template.md +32 -32
- package/skills/torusguard/payload/templates/remediation-bundle.template.md +35 -35
- package/skills/torusguard/payload/workflows/ai-guard.md +31 -0
- package/skills/torusguard/payload/workflows/apply.md +31 -62
- package/skills/torusguard/payload/workflows/audit.md +27 -51
- package/skills/torusguard/payload/workflows/authorize.md +27 -50
- package/skills/torusguard/payload/workflows/container.md +29 -0
- package/skills/torusguard/payload/workflows/exploit-check.md +28 -50
- package/skills/torusguard/payload/workflows/git-mine.md +25 -0
- package/skills/torusguard/payload/workflows/harden.md +28 -52
- package/skills/torusguard/payload/workflows/init.md +27 -56
- package/skills/torusguard/payload/workflows/memory.md +18 -23
- package/skills/torusguard/payload/workflows/ocr-scan.md +25 -0
- package/skills/torusguard/payload/workflows/recheck.md +28 -46
- package/skills/torusguard/payload/workflows/redos.md +27 -0
- package/skills/torusguard/payload/workflows/report.md +39 -62
- package/skills/torusguard/payload/workflows/status.md +31 -55
- package/skills/torusguard/payload/workflows/verify.md +29 -49
- package/skills/torusguard/payload/workflows/web-validate.md +22 -45
- package/skills/torusguard/references/csharp-security.md +41 -0
- package/skills/torusguard/references/go-security.md +41 -0
- package/skills/torusguard/references/java-security.md +40 -0
- package/skills/torusguard/references/polyglot-security-matrix.md +25 -0
- package/skills/torusguard/references/rust-security.md +40 -0
- package/skills/torusguard-ai-guard/SKILL.md +95 -0
- package/skills/torusguard-apply/SKILL.md +60 -34
- package/skills/torusguard-audit/SKILL.md +73 -24
- package/skills/torusguard-authorize/SKILL.md +48 -6
- package/skills/torusguard-container/SKILL.md +94 -0
- package/skills/torusguard-exploit-check/SKILL.md +50 -6
- package/skills/torusguard-full/SKILL.md +62 -19
- package/skills/torusguard-git-mine/SKILL.md +92 -0
- package/skills/torusguard-harden/SKILL.md +81 -50
- package/skills/torusguard-init/SKILL.md +61 -14
- package/skills/torusguard-ocr-scan/SKILL.md +94 -0
- package/skills/torusguard-recheck/SKILL.md +71 -18
- package/skills/torusguard-redos/SKILL.md +91 -0
- package/skills/torusguard-report/SKILL.md +50 -9
- package/skills/torusguard-status/SKILL.md +63 -10
- package/skills/torusguard-verify/SKILL.md +52 -10
- package/skills/torusguard-web-validate/SKILL.md +53 -8
|
@@ -1,41 +1,39 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-audit
|
|
3
3
|
description: Static AST security scanning, line-shift invariant fingerprinting, root-cause clustering, and 0-100 confidence scoring via CLI or AI Agent.
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
workflow: .torusguard/workflows/audit.md
|
|
6
6
|
tools: Read, Grep, Glob, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- .torusguard/scripts/term_ui.py
|
|
11
|
-
- .torusguard/scripts/finding_scorer.py
|
|
8
|
+
- internal/scanner/scanner.go
|
|
9
|
+
- cmd/torusguard/main.go
|
|
12
10
|
---
|
|
13
11
|
|
|
14
12
|
# TorusGuard Audit — Static Code Security Analysis
|
|
15
13
|
|
|
16
14
|
## Objective
|
|
17
|
-
Execute static AST analysis across polyglot project files, evaluate code against 74 canonical security rules across
|
|
15
|
+
Execute static AST analysis across polyglot project files, evaluate code against 74 canonical security rules across 18 families, assign stable line-shift invariant fingerprints, cluster architectural root causes, synchronize findings with `security_report.md`, and score findings with auditable 0–100 confidence ratings.
|
|
18
16
|
|
|
19
17
|
---
|
|
20
18
|
|
|
21
|
-
##
|
|
19
|
+
## Tri-Mode Execution
|
|
22
20
|
|
|
23
21
|
### Mode A: Automated CLI Execution
|
|
24
22
|
Run the static security audit from your terminal:
|
|
25
23
|
```bash
|
|
26
24
|
# Scan current repository
|
|
27
|
-
|
|
25
|
+
torusguard audit
|
|
28
26
|
|
|
29
27
|
# Scan specific directory or example app
|
|
30
|
-
|
|
28
|
+
torusguard audit ./examples/vulnerable-react-express
|
|
31
29
|
|
|
32
30
|
# Include test fixtures and spec directories
|
|
33
|
-
|
|
31
|
+
torusguard audit --include-tests
|
|
34
32
|
|
|
35
33
|
# Output machine-readable JSON
|
|
36
|
-
|
|
34
|
+
torusguard audit --json
|
|
37
35
|
```
|
|
38
|
-
**Under the Hood:** Executes `
|
|
36
|
+
**Under the Hood:** Executes compiled Go static analysis engine (`internal/scanner`).
|
|
39
37
|
- Auto-detects repository stack and skips build/cache directories (`node_modules`, `.git`, `.venv`, `dist`, `build`).
|
|
40
38
|
- Evaluates files across 18 canonical security families:
|
|
41
39
|
- `TG-SEC-*`: Hardcoded credentials, private keys, JWT secrets, client env leaks.
|
|
@@ -43,19 +41,33 @@ npx torusguard audit --json
|
|
|
43
41
|
- `TG-DB-*`: Missing tenant isolation, service role keys in client code.
|
|
44
42
|
- `TG-AUTH-*`: Plaintext passwords, missing cookie security flags (httpOnly, secure, sameSite).
|
|
45
43
|
- `TG-PLATFORM-*`: Permissive wildcard CORS with credentials, missing security headers.
|
|
46
|
-
- `TG-DIFF-*`: Disabled TLS verification (`verify=False`, `
|
|
47
|
-
-
|
|
48
|
-
-
|
|
44
|
+
- `TG-DIFF-*`: Disabled TLS verification (`verify=False`, `InsecureSkipVerify: true`).
|
|
45
|
+
- `TG-NPE-*`: Null-pointer exceptions, unchecked nil error dereferences.
|
|
46
|
+
- `TG-CONC-*`: Concurrency hazards, goroutine loop variable capture.
|
|
47
|
+
- Writes findings directly to `security_report.md` at workspace root.
|
|
49
48
|
- Displays standardized 75-column terminal cards.
|
|
50
|
-
- Returns exit code `1` if findings are discovered, `0` if clean.
|
|
51
49
|
|
|
52
50
|
### Mode B: In-Session AI Chat Agent Scan
|
|
53
51
|
When auditing files directly in AI chat:
|
|
54
52
|
1. **Discover Sinks:** Use `grep_search` and `view_file` to search for dangerous patterns across server and client code.
|
|
55
53
|
2. **Cluster Root Causes:** Group findings by causal architecture (e.g. `cluster-tenant-isolation`, `cluster-credentials-exposure`, `cluster-injection`).
|
|
56
54
|
3. **Audit Evidence Sufficiency:** Ensure that user-controlled input reaches the vulnerable sink without prior sanitization or schema validation.
|
|
57
|
-
4. **
|
|
58
|
-
5. **
|
|
55
|
+
4. **Context Minimization (1/9th Token Strategy):** Inspect only bounded AST context windows ($\pm 3$ lines) via `scanner.ExtractContext` rather than ingesting entire files.
|
|
56
|
+
5. **Present Actionable Findings:** Display finding cards with severity, rule ID, file, line, and remediation recommendation.
|
|
57
|
+
6. **Prompt Next Phase:** Guide the operator to `/torusguard harden` or `torusguard harden`.
|
|
58
|
+
|
|
59
|
+
### Mode C: Native MCP Tool Execution
|
|
60
|
+
For autonomous AI coding agents (Antigravity, Cursor, Windsurf, Claude Code):
|
|
61
|
+
- **Tool Invocation:** Call `torusguard_audit` with target arguments:
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"target": ".",
|
|
65
|
+
"include_ocr": true,
|
|
66
|
+
"max_image_mb": 10
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
- **Programmatic Return:** Receives formatted finding summaries, active rule counts, and confirmation that `security_report.md` is updated on disk.
|
|
70
|
+
- **Resource Companion:** Inspect the living report via resource `torusguard://security_report` or rules catalog via `torusguard://rules_catalog`.
|
|
59
71
|
|
|
60
72
|
---
|
|
61
73
|
|
|
@@ -67,7 +79,9 @@ When auditing files directly in AI chat:
|
|
|
67
79
|
| **TG-DB** | Database & Tenant Scoping | Unscoped `.objects.get(id=...)`, Prisma missing `tenantId` |
|
|
68
80
|
| **TG-AUTH** | Authentication & Cookies | Insecure cookies (missing httpOnly/secure/sameSite) |
|
|
69
81
|
| **TG-PLATFORM** | Server & Platform Config | Wildcard CORS (`origin: '*'`) with credentials |
|
|
70
|
-
| **TG-DIFF** | Security Bypasses | Disabled TLS verification (`verify=False`) |
|
|
82
|
+
| **TG-DIFF** | Security Bypasses | Disabled TLS verification (`verify=False`, `# nosec`) |
|
|
83
|
+
| **TG-NPE** | Null Dereference / NPE | Unchecked optional chaining, unhandled nil error returns |
|
|
84
|
+
| **TG-CONC** | Concurrency & Thread-Safety | Goroutine loop variable capture, unmutexed map mutations |
|
|
71
85
|
|
|
72
86
|
---
|
|
73
87
|
|
|
@@ -75,13 +89,48 @@ When auditing files directly in AI chat:
|
|
|
75
89
|
```markdown
|
|
76
90
|
### 🛡️ TorusGuard Static Security Audit Completed
|
|
77
91
|
- **Run ID:** `run-20260910-121618-audit`
|
|
78
|
-
- **Scope:** 7 files evaluated across
|
|
92
|
+
- **Scope:** 7 files evaluated across 18 canonical families
|
|
79
93
|
- **Status:** ✖ CRITICAL FINDINGS DETECTED
|
|
80
94
|
- **Findings:** 2 Critical, 2 High, 2 Medium/Low (6 total)
|
|
81
95
|
- **Clusters:** 3 architectural root causes identified
|
|
82
|
-
- **Artifacts:**
|
|
83
|
-
- **Next Action:** Run `
|
|
96
|
+
- **Artifacts:** `security_report.md`
|
|
97
|
+
- **Next Action:** Run `torusguard harden` or `/torusguard harden`
|
|
84
98
|
```
|
|
85
99
|
|
|
86
|
-
|
|
87
|
-
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 🏛️ OpenCodeReview Precision & Context Minimization
|
|
103
|
+
- **1/9th Token Minimization:** Use `scanner.ExtractContext` to extract only the bounded $\pm 3$ lines context window instead of ingesting entire files.
|
|
104
|
+
- **Line-Level Pinning:** Every finding is reported with exact 1-indexed line numbers, line content, severity, and suggested remediation.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🚨 LLM Trap Table
|
|
109
|
+
|
|
110
|
+
| Pattern | What AI Does Wrong | What Is Actually Correct |
|
|
111
|
+
| :--- | :--- | :--- |
|
|
112
|
+
| **Unbounded File Reading** | Reads entire 800+ line files to diagnose a 1-line vulnerability. | Read only the bounded context ($\pm 3$ lines) around the finding's line number. |
|
|
113
|
+
| **Ignoring NPE / Concurrency** | Focuses only on secrets and misses thread-safety and null-pointer hazards. | Enforce `TG-NPE-001` and `TG-CONC-001` checks during audit review. |
|
|
114
|
+
| **False Positive Escalation** | Flags documentation strings or mock test fixtures as production vulnerabilities. | Skip test files (`*_test.go`, `.test.ts`) and verify sink exploitability before reporting. |
|
|
115
|
+
| **Missing Sync to Ground Truth** | Produces analysis in chat without checking or updating `security_report.md`. | Always reconcile against `security_report.md` at workspace root. |
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## ✅ Pre-Flight Self-Audit
|
|
120
|
+
|
|
121
|
+
Before completing an audit pass, verify:
|
|
122
|
+
- [ ] Did I run `torusguard audit` or inspect `security_report.md` first?
|
|
123
|
+
- [ ] Are all reported findings pinned to precise line numbers?
|
|
124
|
+
- [ ] Did I verify user input reaches the sink without prior validation?
|
|
125
|
+
- [ ] Did I extract only the minimal AST context window ($\pm 3$ lines) to conserve tokens?
|
|
126
|
+
- [ ] Did I evaluate against all 18 families including NPE and concurrency rules?
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 🔁 VBC Protocol (Verify → Build → Confirm)
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
VERIFY: Scan source code and image assets using torusguard audit or torusguard_audit MCP tool.
|
|
134
|
+
BUILD: Synthesize findings clustered by root cause with exact line numbers and bounded AST snippets.
|
|
135
|
+
CONFIRM: Synchronize living findings into security_report.md and guide operator to /torusguard harden.
|
|
136
|
+
```
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-authorize
|
|
3
3
|
description: Register and validate runtime target authorization boundaries — scope boundaries, ownership proofs, TTL expiration, and Safety Gate enforcement.
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
workflow: .torusguard/workflows/authorize.md
|
|
6
6
|
tools: Read, Grep, Glob, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
+
- internal/scanner/scanner.go
|
|
8
9
|
- .torusguard/scripts/report_sync.py
|
|
9
10
|
- .torusguard/scripts/safety_gate.py
|
|
10
11
|
---
|
|
@@ -16,18 +17,27 @@ Define and validate legal runtime authorization boundaries, verify target owners
|
|
|
16
17
|
|
|
17
18
|
---
|
|
18
19
|
|
|
20
|
+
## Tri-Mode Parity
|
|
21
|
+
|
|
22
|
+
| Mode | Command / Tool | Governed Behavior |
|
|
23
|
+
| :--- | :--- | :--- |
|
|
24
|
+
| **Mode A: CLI Terminal** | `torusguard authorize` | Interactive boundary setup, generates cryptographically signed scope tokens. |
|
|
25
|
+
| **Mode B: AI Chat Slash** | `/torusguard authorize` | Conversational parameter collection, validates host ownership and environment. |
|
|
26
|
+
| **Mode C: Native MCP Tool**| — | Administrative gatekeeper ensuring strict safety boundaries before probes. |
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
19
30
|
## Execution Steps
|
|
20
31
|
|
|
21
32
|
1. **Capture Scope Parameters:** Collect target host URL, allowed path prefixes, forbidden prefixes, and session TTL.
|
|
22
|
-
2. **Validate Environment:** Assert target is local (`localhost`, `127.0.0.1`) or staging (`*.staging.*`). Block production targets without explicit override.
|
|
33
|
+
2. **Validate Environment:** Assert target is local (`localhost`, `127.0.0.1`) or staging (`*.staging.*`). Block production targets without explicit cryptographic override.
|
|
23
34
|
3. **Verify Host Ownership:** Confirm ownership token or local process socket binding.
|
|
24
35
|
4. **Invoke Safety Gate:**
|
|
25
36
|
```bash
|
|
26
|
-
|
|
37
|
+
torusguard authorize --url <target_url>
|
|
27
38
|
```
|
|
28
|
-
5. **
|
|
29
|
-
6. **
|
|
30
|
-
7. **Validate Schema:** Confirm `scope.json` adheres to `auth-boundary.schema.json`.
|
|
39
|
+
5. **Write Scope Record:** Persist authorized targets, rate limits, and expiration timestamp into `.torusguard/config/scope.json`.
|
|
40
|
+
6. **Validate Schema:** Confirm `scope.json` adheres to `auth-boundary.schema.json`.
|
|
31
41
|
|
|
32
42
|
---
|
|
33
43
|
|
|
@@ -39,6 +49,7 @@ Define and validate legal runtime authorization boundaries, verify target owners
|
|
|
39
49
|
- Never authorize wildcard hosts (`*`) or third-party domains.
|
|
40
50
|
- State-changing destructive actions (`DELETE`, bulk drops) are disabled by default.
|
|
41
51
|
- Set strict TTL (default 4 hours, maximum 24 hours).
|
|
52
|
+
- Fail-Closed Cryptography: Authorization token generation must panic on entropy failure. No hardcoded fallback tokens are permitted.
|
|
42
53
|
|
|
43
54
|
---
|
|
44
55
|
|
|
@@ -51,3 +62,34 @@ Define and validate legal runtime authorization boundaries, verify target owners
|
|
|
51
62
|
- Scope File: `.torusguard/config/scope.json`
|
|
52
63
|
Next: Run `/torusguard web-validate` to begin safe runtime probing.
|
|
53
64
|
```
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## 🚨 LLM Trap Table
|
|
69
|
+
|
|
70
|
+
| Pattern | What AI Does Wrong | What Is Actually Correct |
|
|
71
|
+
| :--- | :--- | :--- |
|
|
72
|
+
| **Wildcard Scope Authorization** | Accepts `*` or wide domain patterns like `*.com`, enabling unbounded network probes. | Strictly enforce exact domain/port matching (`http://localhost:3000`, `https://staging.internal`). |
|
|
73
|
+
| **Infinite TTL** | Omits `expires_at` or sets multi-year expiration timestamps. | Enforce TTL bound of maximum 24 hours (default 4 hours) to prevent lingering test permissions. |
|
|
74
|
+
| **Production Probe Authorization** | Authorizes live production domains without ownership challenge or manual user confirmation. | Reject production domains unless explicit cryptographic ownership challenge succeeds. |
|
|
75
|
+
| **Destructive Method Inclusion** | Allows `DELETE`, `PUT /bulk`, or `DROP` routes in `allowed_paths`. | Blacklist state-altering destructive paths; confine runtime validation to safe, non-destructive probes. |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## ✅ Pre-Flight Self-Audit
|
|
80
|
+
|
|
81
|
+
Before authorizing any runtime scope:
|
|
82
|
+
- [ ] Is the target host local (`localhost`, `127.0.0.1`) or an authorized staging environment?
|
|
83
|
+
- [ ] Are wildcards (`*`) strictly rejected?
|
|
84
|
+
- [ ] Is the TTL strictly bounded (≤24 hours)?
|
|
85
|
+
- [ ] Are destructive routes and SQL operations explicitly forbidden?
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 🔁 VBC Protocol (Verify → Build → Confirm)
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
VERIFY: Check target URL, environment, and ownership proof against safety boundaries.
|
|
93
|
+
BUILD: Construct scope.json record with explicit allowed paths and TTL bounds.
|
|
94
|
+
CONFIRM: Validate JSON against auth-boundary.schema.json and persist to .torusguard/config/scope.json.
|
|
95
|
+
```
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: torusguard-container
|
|
3
|
+
description: Audits Dockerfiles, Containerfiles, and Docker Compose configurations for root users, exposed docker sockets, privileged mode, and embedded secrets via CLI, Chat, or MCP.
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
workflow: .torusguard/workflows/container.md
|
|
6
|
+
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
+
scripts-binding:
|
|
8
|
+
- internal/scanner/container.go
|
|
9
|
+
- cmd/torusguard/main.go
|
|
10
|
+
- cmd/torusguard/mcp.go
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# TorusGuard Container & Docker Security Audit
|
|
14
|
+
|
|
15
|
+
## Objective
|
|
16
|
+
Detect and remediate critical container runtime and build-time security vulnerabilities across `Dockerfile`, `Containerfile`, `docker-compose.yml`, and `compose.yaml` files. Enforces non-root execution, privilege containment, socket isolation, and BuildKit secret mounts.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Tri-Mode Execution
|
|
21
|
+
|
|
22
|
+
### Mode A: Automated CLI Execution
|
|
23
|
+
Run container audits against current directory or specific target project:
|
|
24
|
+
```bash
|
|
25
|
+
# Scan container files in current directory
|
|
26
|
+
torusguard container
|
|
27
|
+
|
|
28
|
+
# Scan container files in specific workspace target
|
|
29
|
+
torusguard container --target ./deployments/docker
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Mode B: In-Session AI Chat Slash Command
|
|
33
|
+
Run `/torusguard container` in chat.
|
|
34
|
+
The agent invokes the native Go scanner or MCP tool to inspect container definitions, audit user permissions, and report structural container misconfigurations.
|
|
35
|
+
|
|
36
|
+
### Mode C: Native MCP Tool Call
|
|
37
|
+
MCP-enabled coding agents (Antigravity, Cursor, Windsurf, Claude Code) call:
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"tool": "torusguard_container",
|
|
41
|
+
"arguments": {
|
|
42
|
+
"target": "."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Supported Patterns & Invariants
|
|
50
|
+
- **TG-CONT-001 (Root Execution Default):** Detects omission of explicit `USER <non-root>` instruction or explicit `USER root` declarations in production container stages.
|
|
51
|
+
- **TG-CONT-002 (Docker Socket Exposure):** Detects dangerous mounting of the host daemon socket (`/var/run/docker.sock`), which grants unconfined root privileges over the host.
|
|
52
|
+
- **TG-CONT-003 (Privileged Container Flag):** Detects `privileged: true`, `seccomp:unconfined`, or `SYS_ADMIN` capability grants that defeat Linux namespace and cgroup boundaries.
|
|
53
|
+
- **TG-CONT-004 (Build-Time Secret Injection):** Flags embedding sensitive tokens, passwords, or keys via `ARG` or `ENV` directives in Dockerfiles rather than BuildKit secret mounts.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## 🏛️ OpenCodeReview Hybrid Architecture Integration
|
|
58
|
+
- **Deterministic Dockerfile & Compose Parser:** Pattern extraction is executed by Go AST/regex parsers without external Docker daemon dependencies.
|
|
59
|
+
- **Token Efficiency:** Only flagged container directives and minimal surrounding context are returned to the agent context.
|
|
60
|
+
- **Ponytail Bounds:** Remediation patches must add dedicated non-root users (`USER appuser`) or switch secrets to `--mount=type=secret` without full container file rewrites (≤35 additions, ≤25 deletions).
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 🚨 LLM Trap Table
|
|
65
|
+
|
|
66
|
+
| Pattern | What AI Does Wrong | What Is Actually Correct |
|
|
67
|
+
| :--- | :--- | :--- |
|
|
68
|
+
| **Default Root Execution** | Forgets that Docker executes as UID 0 (`root`) unless a non-root `USER` is declared. | Always declare `RUN adduser -D appuser && USER appuser` before the entrypoint. |
|
|
69
|
+
| **Secrets in Build Arguments** | Recommends `ARG API_KEY` or `ENV DB_PASSWORD`, leaving keys baked into image layers. | Use Docker BuildKit secret mounts: `RUN --mount=type=secret,id=mysecret ...`. |
|
|
70
|
+
| **Permissive Privileged Mode** | Adds `privileged: true` or `cap_add: [ALL]` to resolve permission or port binding errors. | Grant only specific minimal Linux capabilities (e.g. `NET_BIND_SERVICE`) or fix file ownership. |
|
|
71
|
+
| **Docker Socket Mounting** | Mounts `/var/run/docker.sock` inside container to run Docker commands inside Docker. | Use Docker-in-Docker (dind) rootless or ephemeral CI runners with isolated daemons. |
|
|
72
|
+
| **Full File Rewrites** | Rewrites entire multi-stage Dockerfile destroying cached layer order. | Formulate surgical diffs replacing or inserting only the missing `USER` or mount flag. |
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## ✅ Pre-Flight Self-Audit
|
|
77
|
+
|
|
78
|
+
Before concluding a container security review, verify:
|
|
79
|
+
- [ ] Did I scan all Dockerfiles (`Dockerfile`, `Dockerfile.*`, `Containerfile`)?
|
|
80
|
+
- [ ] Did I scan all compose files (`docker-compose.yml`, `compose.yaml`)?
|
|
81
|
+
- [ ] Is there an unprivileged non-root user defined before `ENTRYPOINT` or `CMD`?
|
|
82
|
+
- [ ] Are sensitive environment variables passed via runtime `.env` / secret managers instead of `ARG` / `ENV`?
|
|
83
|
+
- [ ] Is `/var/run/docker.sock` completely absent from compose volumes?
|
|
84
|
+
- [ ] Are all proposed fixes within Ponytail churn bounds (≤35 additions, ≤25 deletions)?
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 🔁 VBC Protocol (Verify → Build → Confirm)
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
VERIFY: Identify Dockerfiles and Compose files in the workspace.
|
|
92
|
+
BUILD: Execute torusguard container or torusguard_container to locate container privilege and secret flaws.
|
|
93
|
+
CONFIRM: Formulate surgical remediation patch introducing non-root users and removing dangerous mounts, rechecking with torusguard recheck.
|
|
94
|
+
```
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-exploit-check
|
|
3
3
|
description: Safe, non-destructive confirmation of exploitability using inert canary tokens and sentinels.
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
workflow: .torusguard/workflows/exploit-check.md
|
|
6
6
|
tools: Read, Grep, Glob, Bash, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
+
- internal/scanner/scanner.go
|
|
8
9
|
- .torusguard/scripts/report_sync.py
|
|
9
10
|
- .torusguard/scripts/safety_gate.py
|
|
10
11
|
- .torusguard/scripts/finding_scorer.py
|
|
@@ -17,11 +18,21 @@ Confirm whether candidate findings are practically exploitable using safe, singl
|
|
|
17
18
|
|
|
18
19
|
---
|
|
19
20
|
|
|
21
|
+
## Tri-Mode Parity
|
|
22
|
+
|
|
23
|
+
| Mode | Command / Tool | Governed Behavior |
|
|
24
|
+
| :--- | :--- | :--- |
|
|
25
|
+
| **Mode A: CLI Terminal** | `torusguard exploit-check` | Dispatches single-step sentinel canaries, confirms exploitability safely. |
|
|
26
|
+
| **Mode B: AI Chat Slash** | `/torusguard exploit-check` | Evaluates reproduction traces and classifies findings into 5 statuses. |
|
|
27
|
+
| **Mode C: Native MCP Tool**| — | Bounded execution guarded by safety gate and inert payloads. |
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
20
31
|
## Authorization Gate Check
|
|
21
32
|
Before dispatching any exploitability probe:
|
|
22
33
|
1. Verify target route is explicitly authorized in `.torusguard/config/scope.json`.
|
|
23
34
|
2. Verify authorization TTL has not expired.
|
|
24
|
-
3. Assert probe passes
|
|
35
|
+
3. Assert probe passes safety boundaries.
|
|
25
36
|
|
|
26
37
|
---
|
|
27
38
|
|
|
@@ -37,15 +48,17 @@ Before dispatching any exploitability probe:
|
|
|
37
48
|
|
|
38
49
|
1. **Verify Scope:** Read `scope.json`; assert authorized endpoint.
|
|
39
50
|
2. **Select Canary:** Choose matching non-destructive probe strategy.
|
|
40
|
-
3. **
|
|
41
|
-
|
|
42
|
-
|
|
51
|
+
3. **Dispatch Probe:** Send request with header `X-TorusGuard-AuthID`:
|
|
52
|
+
```bash
|
|
53
|
+
torusguard exploit-check --finding TG-SEC-001
|
|
54
|
+
```
|
|
55
|
+
4. **Classify Status:** Transition finding into one of 5 canonical outcomes:
|
|
43
56
|
- `Confirmed`: Canary reflected or secondary tenant data leaked.
|
|
44
57
|
- `Not Reproducible`: Endpoint responded with 401/403 or sanitized input.
|
|
45
58
|
- `Needs Review`: Ambiguous status code or incomplete response.
|
|
46
59
|
- `Blocked by Controls`: WAF or rate limiter stopped probe.
|
|
47
60
|
- `Out of Scope`: Target endpoint is not authorized.
|
|
48
|
-
|
|
61
|
+
5. **Record Evidence:** Save trace in `.torusguard/runs/<run_id>/exploit-evidence.md`.
|
|
49
62
|
|
|
50
63
|
---
|
|
51
64
|
|
|
@@ -68,3 +81,34 @@ Before dispatching any exploitability probe:
|
|
|
68
81
|
- Evidence: <Response snippet or status code>
|
|
69
82
|
Next: Run `/torusguard harden` to formulate surgical remediation bundle.
|
|
70
83
|
```
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 🚨 LLM Trap Table
|
|
88
|
+
|
|
89
|
+
| Pattern | What AI Does Wrong | What Is Actually Correct |
|
|
90
|
+
| :--- | :--- | :--- |
|
|
91
|
+
| **Destructive Payloads** | Generates real data-altering payloads (`'; DROP TABLE users;--`, `<script>evil()</script>`). | Use strictly inert canaries (`' OR 1=1--`, `<tg-canary-tag>`) that cannot destroy state or exfiltrate data. |
|
|
92
|
+
| **Fuzzing Floods** | Runs recursive wordlist fuzzing or multi-hundred request automated attacks. | Enforce single-step bounded confirmation (1-2 deterministic probe requests max). |
|
|
93
|
+
| **False Confirmation** | Declares finding "Confirmed" based on a generic HTTP 500 error without validating the canary reflection. | Require differential response evidence (e.g. reflection of exact sentinel tag or tenant leak). |
|
|
94
|
+
| **Missing Scope Check** | Probes external auth providers (OAuth Google/GitHub) during auth validation. | Confine probes strictly to internal endpoints authorized in `scope.json`. |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## ✅ Pre-Flight Self-Audit
|
|
99
|
+
|
|
100
|
+
Before dispatching an exploitability check:
|
|
101
|
+
- [ ] Is the probe payload completely inert and non-destructive?
|
|
102
|
+
- [ ] Is the route explicitly in scope and within TTL?
|
|
103
|
+
- [ ] Is the `X-TorusGuard-AuthID` header attached?
|
|
104
|
+
- [ ] Is the outcome classification mapped to one of the 5 canonical statuses?
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 🔁 VBC Protocol (Verify → Build → Confirm)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
VERIFY: Check route authorization in scope.json and confirm finding AST context.
|
|
112
|
+
BUILD: Select inert canary token (e.g. <tg-canary-tag>) and construct probe.
|
|
113
|
+
CONFIRM: Evaluate response for differential proof, classify status, and record trace.
|
|
114
|
+
```
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-full
|
|
3
3
|
description: Master 7-stage security pipeline orchestrator — coordinates discovery, authorization, static audit, runtime validation, governed remediation, recheck, and reporting.
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
workflow: .torusguard/workflows/audit.md
|
|
6
6
|
tools: Read, Grep, Glob, Bash, Edit, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
+
- internal/scanner/scanner.go
|
|
9
|
+
- internal/harden/patch.go
|
|
10
|
+
- internal/apply/apply.go
|
|
8
11
|
- .torusguard/scripts/report_sync.py
|
|
9
|
-
- .torusguard/scripts/stack_detect.py
|
|
10
|
-
- .torusguard/scripts/safety_gate.py
|
|
11
|
-
- .torusguard/scripts/finding_scorer.py
|
|
12
|
-
- .torusguard/scripts/run_manager.py
|
|
13
|
-
- .torusguard/scripts/sarif_exporter.py
|
|
14
12
|
---
|
|
15
13
|
|
|
16
14
|
# TorusGuard Full — Master 7-Stage Pipeline Orchestrator
|
|
@@ -20,15 +18,33 @@ Execute the full, closed-loop TorusGuard security lifecycle from stack discovery
|
|
|
20
18
|
|
|
21
19
|
---
|
|
22
20
|
|
|
21
|
+
## Tri-Mode Pipeline Parity
|
|
22
|
+
|
|
23
|
+
| Stage | Mode A: Terminal CLI | Mode B: AI Chat Slash | Mode C: Native MCP Tool |
|
|
24
|
+
| :--- | :--- | :--- | :--- |
|
|
25
|
+
| **0. Init** | `torusguard init` | `/torusguard init` | Init + `torusguard_status` |
|
|
26
|
+
| **1. Authorize** | `torusguard authorize` | `/torusguard authorize` | Safety Gate Boundary |
|
|
27
|
+
| **2. Audit & Vision** | `torusguard audit` / `ocr-scan` | `/torusguard audit` / `ocr-scan` | `torusguard_audit` / `torusguard_ocr_scan` |
|
|
28
|
+
| **3. Verify** | `torusguard verify` | `/torusguard verify` | `torusguard_verify` |
|
|
29
|
+
| **4. Harden** | `torusguard harden` | `/torusguard harden` | `torusguard_harden` |
|
|
30
|
+
| **5. Apply** | `torusguard apply [--yes]` | `/torusguard apply` | Human Gate Approval |
|
|
31
|
+
| **6. Recheck** | `torusguard recheck` | `/torusguard recheck` | `torusguard_recheck` |
|
|
32
|
+
| **7. Report** | `torusguard report --html` | `/torusguard report` | `torusguard://security_report` |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
23
36
|
## 7-Stage Security Pipeline
|
|
24
|
-
|
|
37
|
+
```
|
|
38
|
+
0. Init ──► 1. Authorize ──► 2. Audit ──► 3. Validate ──► 4. Harden ──► 5. Apply ──► 6. Recheck ──► 7. Report
|
|
39
|
+
(Baseline) (Scope Gate) (AST Scan) (Evidence) (Ponytail) (Human Gate) (Regression) (SARIF/HTML)
|
|
40
|
+
```
|
|
25
41
|
|
|
26
42
|
---
|
|
27
43
|
|
|
28
44
|
## Specialist Skill Routing
|
|
29
45
|
- **Phase 0:** `torusguard-init` (`profiler`)
|
|
30
46
|
- **Phase 1:** `torusguard-authorize` (`reviewer`)
|
|
31
|
-
- **Phase 2:** `torusguard-audit` (`auditor`)
|
|
47
|
+
- **Phase 2:** `torusguard-audit` (`auditor`) / `torusguard-ocr-scan` (`vision`)
|
|
32
48
|
- **Phase 3:** `torusguard-verify` / `torusguard-exploit-check` (`validator`)
|
|
33
49
|
- **Phase 4:** `torusguard-harden` (`remediator`)
|
|
34
50
|
- **Phase 5:** `torusguard-apply` (`remediator`)
|
|
@@ -38,19 +54,14 @@ Execute the full, closed-loop TorusGuard security lifecycle from stack discovery
|
|
|
38
54
|
---
|
|
39
55
|
|
|
40
56
|
## Pipeline Execution Instructions
|
|
41
|
-
1. **Init:** Detect stack via `
|
|
57
|
+
1. **Init:** Detect stack via `torusguard init` and activate tailored rules in `.torusguard/rules/active/`.
|
|
42
58
|
2. **Authorize:** Verify target ownership and TTL in `.torusguard/config/scope.json`.
|
|
43
|
-
3. **Audit:** Scan ASTs; assign fingerprints;
|
|
59
|
+
3. **Audit:** Scan ASTs via `torusguard audit` (or `torusguard ocr-scan` for visual assets); assign fingerprints; compute confidence scores.
|
|
44
60
|
4. **Validate:** Audit evidence sufficiency; optionally send bounded probe canary.
|
|
45
|
-
5. **Harden:** Formulate surgical diffs bound by Ponytail limits ($\le 35$
|
|
46
|
-
6. **Apply:**
|
|
47
|
-
7. **Recheck:** Re-scan modified files
|
|
48
|
-
8. **Report:** Export OASIS SARIF v2.1.0 and emit
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## Confidence Scoring Rubric
|
|
53
|
-
Evaluates Evidence (35 pts), Reproduction (25 pts), Corroboration (15 pts), Environment (15 pts), and Review Status (10 pts) into 4 bands: Confirmed (90–100), High (70–89), Medium (50–69), Needs Review (<50).
|
|
61
|
+
5. **Harden:** Formulate surgical diffs bound by Ponytail limits ($\le 35$ additions, $\le 25$ deletions).
|
|
62
|
+
6. **Apply:** Capture `.bak` snapshot in `.torusguard/snapshots/`; obtain Human Gate; apply patch via `torusguard apply`.
|
|
63
|
+
7. **Recheck:** Re-scan modified files via `torusguard recheck`; assert findings are `Fixed` with zero regressions.
|
|
64
|
+
8. **Report:** Export OASIS SARIF v2.1.0 and emit visual HTML dashboard via `torusguard report --html`.
|
|
54
65
|
|
|
55
66
|
---
|
|
56
67
|
|
|
@@ -62,6 +73,7 @@ Evaluates Evidence (35 pts), Reproduction (25 pts), Corroboration (15 pts), Envi
|
|
|
62
73
|
- Human Gate mandatory before code modifications in Phase 5.
|
|
63
74
|
- Enforce Ponytail line bounds ($\le 35$ additions, $\le 25$ deletions).
|
|
64
75
|
- Never dispatch network probes outside authorized scope in `scope.json`.
|
|
76
|
+
- Zero security bypasses permitted (`TG-DIFF-001`).
|
|
65
77
|
|
|
66
78
|
---
|
|
67
79
|
|
|
@@ -73,3 +85,34 @@ Evaluates Evidence (35 pts), Reproduction (25 pts), Corroboration (15 pts), Envi
|
|
|
73
85
|
- SARIF Log: `.torusguard/runs/<run_id>/results.sarif`
|
|
74
86
|
- Report: `.torusguard/runs/<run_id>/report.md`
|
|
75
87
|
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 🚨 LLM Trap Table
|
|
92
|
+
|
|
93
|
+
| Pattern | What AI Does Wrong | What Is Actually Correct |
|
|
94
|
+
| :--- | :--- | :--- |
|
|
95
|
+
| **Pipeline Step Skipping** | Jumps directly from Audit to Apply without verifying evidence or validating Ponytail patch bounds. | Follow the 7 stages in sequential order; each stage gate must be satisfied. |
|
|
96
|
+
| **Human Gate Bypass** | Writes modifications directly to disk without presenting candidate diffs or awaiting user confirmation. | Always require explicit Human Gate confirmation before Phase 5 (`torusguard apply`). |
|
|
97
|
+
| **Full File Rewrites** | Rewrites complete source files during remediation, causing massive line churn and regression risk. | Formulate surgical patches respecting Ponytail bounds ($\le 35$ add, $\le 25$ del) using Line-Level Reflection. |
|
|
98
|
+
| **Unsynchronized State** | Generates reports that don't match the statuses in `security_report.md`. | Keep `security_report.md` synchronized at every phase transition as the single living source of truth. |
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## ✅ Pre-Flight Self-Audit
|
|
103
|
+
|
|
104
|
+
Before orchestrating the full pipeline:
|
|
105
|
+
- [ ] Are all prerequisite tools (`torusguard` binary) available?
|
|
106
|
+
- [ ] Is `security_report.md` inspected prior to initiating any scans or fixes?
|
|
107
|
+
- [ ] Are all patches bounded by Ponytail limits and verified without security bypasses?
|
|
108
|
+
- [ ] Is a `.bak` snapshot captured before any disk modification?
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## 🔁 VBC Protocol (Verify → Build → Confirm)
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
VERIFY: Review current workspace security posture and verify phase prerequisites.
|
|
116
|
+
BUILD: Execute the pipeline stage by stage using designated specialist skills.
|
|
117
|
+
CONFIRM: Validate final SARIF, HTML report, and synchronized security_report.md.
|
|
118
|
+
```
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: torusguard-git-mine
|
|
3
|
+
description: Mines git commit history, commit diffs, and local repository metadata for leaked credentials, private keys, and historical API tokens via CLI, Chat, or MCP.
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
workflow: .torusguard/workflows/git-mine.md
|
|
6
|
+
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
+
scripts-binding:
|
|
8
|
+
- internal/scanner/git_mine.go
|
|
9
|
+
- cmd/torusguard/main.go
|
|
10
|
+
- cmd/torusguard/mcp.go
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# TorusGuard Git History Secret Mining
|
|
14
|
+
|
|
15
|
+
## Objective
|
|
16
|
+
Inspect local `.git` metadata, remote configurations, and commit logs across the repository's commit history to identify leaked API tokens, private keys, database URIs, and credentials that were committed in past revisions or embedded in remote URLs.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Tri-Mode Execution
|
|
21
|
+
|
|
22
|
+
### Mode A: Automated CLI Execution
|
|
23
|
+
Run Git history mining against current repository or specified target workspace:
|
|
24
|
+
```bash
|
|
25
|
+
# Mine Git commit history and .git/config in current workspace
|
|
26
|
+
torusguard git-mine
|
|
27
|
+
|
|
28
|
+
# Mine specific repository target
|
|
29
|
+
torusguard git-mine --target /path/to/repo
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Mode B: In-Session AI Chat Slash Command
|
|
33
|
+
Run `/torusguard git-mine` in chat.
|
|
34
|
+
The agent executes the compiled Go Git mining engine or MCP tool to inspect commit history logs, detect historical secret leaks, and provide provider revocation guidance.
|
|
35
|
+
|
|
36
|
+
### Mode C: Native MCP Tool Call
|
|
37
|
+
MCP-enabled coding agents (Antigravity, Cursor, Windsurf, Claude Code) call:
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"tool": "torusguard_git_mine",
|
|
41
|
+
"arguments": {
|
|
42
|
+
"target": "."
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Supported Patterns & Invariants
|
|
50
|
+
- **TG-GIT-001 (Historical Secret Commit):** Detects API keys (OpenAI `sk-...`, AWS `AKIA...`, GitHub `ghp_...`), private certificates, or database credentials introduced in prior git commits even if removed from the current working tree.
|
|
51
|
+
- **TG-GIT-002 (Plaintext Remote Credentials):** Flags remote URLs in `.git/config` containing basic authentication credentials (`https://user:token@github.com/...`).
|
|
52
|
+
- **TG-GIT-003 (Sensitive File History Tracking):** Detects tracked `.env`, `id_rsa`, `.pem`, or `.key` files in git log metadata that bypass `.gitignore`.
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 🏛️ OpenCodeReview Hybrid Architecture Integration
|
|
57
|
+
- **Deterministic History Inspection:** Analyzes commit logs via local Git commands or fallback file reading with strict 5-second timeouts and bounded commit depths.
|
|
58
|
+
- **Token Minimization:** Emits commit SHA, author timestamp, and redacted secret preview rather than dumping full commit logs into LLM context.
|
|
59
|
+
- **Revocation-First Governance:** Prioritizes immediate credential revocation at the provider (OpenAI, AWS, GitHub) before history rewrites (`git filter-repo` / BFG).
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## 🚨 LLM Trap Table
|
|
64
|
+
|
|
65
|
+
| Pattern | What AI Does Wrong | What Is Actually Correct |
|
|
66
|
+
| :--- | :--- | :--- |
|
|
67
|
+
| **Working Tree Only Bias** | Only scans files currently on disk, assuming deleted secrets are safely removed. | Always mine Git commit history (`git log -p`) because Git never forgets past commits. |
|
|
68
|
+
| **Token in Remote Origin URL** | Recommends `git remote set-url origin https://ghp_xxx@github.com/...` which writes token to disk in plaintext. | Use SSH keys, GitHub CLI (`gh auth login`), or credential helpers (`git credential-manager`). |
|
|
69
|
+
| **History Rewriting Over Revocation** | Recommends scrubbing Git history before revoking the leaked secret at the cloud provider. | Always rotate and revoke the credential immediately at the provider first; assume it was scraped. |
|
|
70
|
+
| **Single Commit Amends** | Recommends `git commit --amend` when the secret was committed 5 commits ago. | Use `git rebase -i` or `git-filter-repo` for deeper historical scrubbing. |
|
|
71
|
+
| **Tracking .env in Git** | Adds `.env` to `.gitignore` without running `git rm --cached .env`, leaving file tracked. | Run `git rm --cached <file>` so Git stops tracking the sensitive file in subsequent commits. |
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## ✅ Pre-Flight Self-Audit
|
|
76
|
+
|
|
77
|
+
Before concluding a Git repository security audit, verify:
|
|
78
|
+
- [ ] Is `.git` directory present and valid?
|
|
79
|
+
- [ ] Were remote URLs in `.git/config` checked for embedded plaintext passwords or tokens?
|
|
80
|
+
- [ ] Were the most recent 50 commits audited for added secrets in commit diffs?
|
|
81
|
+
- [ ] Did I verify whether `.env` or private keys were ever tracked in git history?
|
|
82
|
+
- [ ] Was the user instructed to rotate/revoke leaked keys at the provider immediately?
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 🔁 VBC Protocol (Verify → Build → Confirm)
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
VERIFY: Confirm workspace is a valid Git repository with accessible commit history.
|
|
90
|
+
BUILD: Execute torusguard git-mine or torusguard_git_mine to detect historical leaks and credential configs.
|
|
91
|
+
CONFIRM: Provide immediate rotation steps, clean .git/config, and scrub historical commits via git-filter-repo.
|
|
92
|
+
```
|