torusguard 1.3.5 → 1.3.6
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 +35 -35
- package/.torusguard/runs/report-latest.html +2685 -303
- package/.torusguard/runs/results-latest.sarif +20 -0
- package/.torusguard/runs/run-20260918-104221-audit/findings.json +1 -0
- package/.torusguard/runs/run-20260918-104221-audit/findings.md +8 -0
- package/.torusguard/runs/run-20260918-104221-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260918-104221-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260918-104236-audit/findings.json +2314 -0
- package/.torusguard/runs/run-20260918-104236-audit/findings.md +960 -0
- package/.torusguard/runs/run-20260918-104236-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260918-104236-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260918-105723-audit/findings.json +2382 -0
- package/.torusguard/runs/run-20260918-105723-audit/findings.md +960 -0
- package/.torusguard/runs/run-20260918-105723-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260918-105723-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260918-105731-audit/findings.json +1 -0
- package/.torusguard/runs/run-20260918-105731-audit/findings.md +8 -0
- package/.torusguard/runs/run-20260918-105731-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260918-105731-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260918-105940-audit/findings.json +1 -0
- package/.torusguard/runs/run-20260918-105940-audit/findings.md +8 -0
- package/.torusguard/runs/run-20260918-105940-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260918-105940-audit/summary.md +5 -0
- 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__/diff_guard.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/finding_scorer.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__/memory_engine.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/monorepo_detector.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/recheck_runner.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/report_sync.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/run_manager.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/sarif_exporter.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/stack_detect.cpython-314.pyc +0 -0
- package/.torusguard/scripts/__pycache__/term_ui.cpython-314.pyc +0 -0
- package/.torusguard/scripts/apply_runner.py +11 -5
- package/.torusguard/scripts/audit_runner.py +222 -15
- package/.torusguard/scripts/harden_runner.py +3 -3
- package/.torusguard/scripts/html_reporter.py +2668 -648
- package/.torusguard/scripts/recheck_runner.py +3 -3
- package/.torusguard/scripts/recipes_runner.py +3 -3
- package/.torusguard/scripts/report_sync.py +370 -74
- package/.torusguard/scripts/sarif_exporter.py +48 -8
- package/.torusguard/scripts/stack_detect.py +44 -2
- package/.torusguard/scripts/term_ui.py +1 -1
- package/.torusguard/skills/torusguard/SKILL.md +75 -72
- package/.torusguard/skills/torusguard-apply/SKILL.md +84 -80
- package/.torusguard/skills/torusguard-audit/SKILL.md +87 -83
- package/.torusguard/skills/torusguard-authorize/SKILL.md +7 -2
- package/.torusguard/skills/torusguard-exploit-check/SKILL.md +7 -2
- package/.torusguard/skills/torusguard-full/SKILL.md +7 -2
- package/.torusguard/skills/torusguard-harden/SKILL.md +98 -94
- package/.torusguard/skills/torusguard-init/SKILL.md +68 -64
- package/.torusguard/skills/torusguard-recheck/SKILL.md +81 -77
- package/.torusguard/skills/torusguard-report/SKILL.md +93 -72
- package/.torusguard/skills/torusguard-status/SKILL.md +62 -58
- package/.torusguard/skills/torusguard-verify/SKILL.md +7 -2
- package/.torusguard/skills/torusguard-web-validate/SKILL.md +7 -2
- package/.torusguard/workflows/apply.md +1 -1
- package/.torusguard/workflows/audit.md +1 -1
- package/.torusguard/workflows/authorize.md +1 -1
- package/.torusguard/workflows/exploit-check.md +1 -1
- package/.torusguard/workflows/harden.md +1 -1
- package/.torusguard/workflows/init.md +1 -1
- package/.torusguard/workflows/memory.md +1 -1
- package/.torusguard/workflows/recheck.md +1 -1
- package/.torusguard/workflows/report.md +1 -1
- package/.torusguard/workflows/status.md +1 -1
- package/.torusguard/workflows/verify.md +1 -1
- package/.torusguard/workflows/web-validate.md +1 -1
- package/README.md +14 -8
- package/bin/torusguard.js +56 -20
- package/package.json +1 -1
- package/skills/torusguard/SKILL.md +1 -1
- package/skills/torusguard/bootstrap.py +7 -2
- package/skills/torusguard/payload/.manifest.json +35 -35
- package/skills/torusguard/payload/scripts/__pycache__/apply_runner.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/audit_runner.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/diff_guard.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/finding_scorer.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/harden_runner.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/html_reporter.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/html_reporter.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/manifest_builder.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/memory_engine.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/memory_engine.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/monorepo_detector.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/monorepo_detector.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/recheck_runner.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/report_sync.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/report_sync.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/rules_sync.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/run_manager.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/run_manager.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/sarif_exporter.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/stack_detect.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
- package/skills/torusguard/payload/scripts/__pycache__/term_ui.cpython-314.pyc +0 -0
- package/skills/torusguard/payload/scripts/apply_runner.py +11 -5
- package/skills/torusguard/payload/scripts/audit_runner.py +222 -15
- package/skills/torusguard/payload/scripts/harden_runner.py +3 -3
- package/skills/torusguard/payload/scripts/html_reporter.py +2668 -648
- package/skills/torusguard/payload/scripts/recheck_runner.py +3 -3
- package/skills/torusguard/payload/scripts/recipes_runner.py +3 -3
- package/skills/torusguard/payload/scripts/report_sync.py +370 -74
- package/skills/torusguard/payload/scripts/sarif_exporter.py +48 -8
- package/skills/torusguard/payload/scripts/stack_detect.py +44 -2
- package/skills/torusguard/payload/scripts/term_ui.py +1 -1
- package/skills/torusguard/payload/skills/torusguard/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +40 -23
- package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +1 -1
- package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +1 -1
- package/skills/torusguard/payload/workflows/apply.md +1 -1
- package/skills/torusguard/payload/workflows/audit.md +1 -1
- package/skills/torusguard/payload/workflows/authorize.md +1 -1
- package/skills/torusguard/payload/workflows/exploit-check.md +1 -1
- package/skills/torusguard/payload/workflows/harden.md +1 -1
- package/skills/torusguard/payload/workflows/init.md +1 -1
- package/skills/torusguard/payload/workflows/memory.md +1 -1
- package/skills/torusguard/payload/workflows/recheck.md +1 -1
- package/skills/torusguard/payload/workflows/report.md +1 -1
- package/skills/torusguard/payload/workflows/status.md +1 -1
- package/skills/torusguard/payload/workflows/verify.md +1 -1
- package/skills/torusguard/payload/workflows/web-validate.md +1 -1
- package/skills/torusguard-apply/SKILL.md +1 -1
- package/skills/torusguard-audit/SKILL.md +1 -1
- package/skills/torusguard-authorize/SKILL.md +1 -1
- package/skills/torusguard-exploit-check/SKILL.md +1 -1
- package/skills/torusguard-full/SKILL.md +1 -1
- package/skills/torusguard-harden/SKILL.md +1 -1
- package/skills/torusguard-init/SKILL.md +1 -1
- package/skills/torusguard-recheck/SKILL.md +1 -1
- package/skills/torusguard-report/SKILL.md +40 -23
- package/skills/torusguard-status/SKILL.md +1 -1
- package/skills/torusguard-verify/SKILL.md +1 -1
- package/skills/torusguard-web-validate/SKILL.md +1 -1
|
@@ -1,83 +1,87 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: torusguard-audit
|
|
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: 1.3.
|
|
5
|
-
workflow: .torusguard/workflows/audit.md
|
|
6
|
-
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
-
scripts-binding:
|
|
8
|
-
- .torusguard/scripts/
|
|
9
|
-
- .torusguard/scripts/
|
|
10
|
-
- .torusguard/scripts/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
|
|
41
|
-
- `TG-
|
|
42
|
-
- `TG-
|
|
43
|
-
- `TG-
|
|
44
|
-
- `TG-
|
|
45
|
-
- `TG-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
|
64
|
-
|
|
|
65
|
-
| **TG-
|
|
66
|
-
| **TG-
|
|
67
|
-
| **TG-
|
|
68
|
-
| **TG-
|
|
69
|
-
| **TG-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- **
|
|
78
|
-
- **
|
|
79
|
-
- **
|
|
80
|
-
- **
|
|
81
|
-
- **
|
|
82
|
-
- **
|
|
83
|
-
|
|
1
|
+
---
|
|
2
|
+
name: torusguard-audit
|
|
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: 1.3.6
|
|
5
|
+
workflow: .torusguard/workflows/audit.md
|
|
6
|
+
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
+
scripts-binding:
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
9
|
+
- .torusguard/scripts/audit_runner.py
|
|
10
|
+
- .torusguard/scripts/term_ui.py
|
|
11
|
+
- .torusguard/scripts/finding_scorer.py
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# TorusGuard Audit — Static Code Security Analysis
|
|
15
|
+
|
|
16
|
+
## Objective
|
|
17
|
+
Execute static AST analysis across polyglot project files, evaluate code against 74 canonical security rules across 11 families, assign stable line-shift invariant fingerprints, cluster architectural root causes, and score findings with auditable 0–100 confidence ratings.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Two Execution Modes
|
|
22
|
+
|
|
23
|
+
### Mode A: Automated CLI Execution
|
|
24
|
+
Run the static security audit from your terminal:
|
|
25
|
+
```bash
|
|
26
|
+
# Scan current repository
|
|
27
|
+
npx torusguard audit
|
|
28
|
+
|
|
29
|
+
# Scan specific directory or example app
|
|
30
|
+
npx torusguard audit ./examples/vulnerable-react-express
|
|
31
|
+
|
|
32
|
+
# Include test fixtures and spec directories
|
|
33
|
+
npx torusguard audit --include-tests
|
|
34
|
+
|
|
35
|
+
# Output machine-readable JSON
|
|
36
|
+
npx torusguard audit --json
|
|
37
|
+
```
|
|
38
|
+
**Under the Hood:** Executes `python .torusguard/scripts/audit_runner.py`.
|
|
39
|
+
- Auto-detects repository stack and skips build/cache directories (`node_modules`, `.git`, `.venv`, `dist`, `build`).
|
|
40
|
+
- Evaluates files across 18 canonical security families:
|
|
41
|
+
- `TG-SEC-*`: Hardcoded credentials, private keys, JWT secrets, client env leaks.
|
|
42
|
+
- `TG-INPUT-*`: SQL injection, command injection, path traversal, unsafe HTML rendering.
|
|
43
|
+
- `TG-DB-*`: Missing tenant isolation, service role keys in client code.
|
|
44
|
+
- `TG-AUTH-*`: Plaintext passwords, missing cookie security flags (httpOnly, secure, sameSite).
|
|
45
|
+
- `TG-PLATFORM-*`: Permissive wildcard CORS with credentials, missing security headers.
|
|
46
|
+
- `TG-DIFF-*`: Disabled TLS verification (`verify=False`, `rejectUnauthorized: false`).
|
|
47
|
+
- Generates run directory: `.torusguard/runs/run-YYYYMMDD-HHMMSS-audit/`.
|
|
48
|
+
- Writes `findings.json`, `findings.md`, and `manifest.json`.
|
|
49
|
+
- Displays standardized 75-column terminal cards.
|
|
50
|
+
- Returns exit code `1` if findings are discovered, `0` if clean.
|
|
51
|
+
|
|
52
|
+
### Mode B: In-Session AI Chat Agent Scan
|
|
53
|
+
When auditing files directly in AI chat:
|
|
54
|
+
1. **Discover Sinks:** Use `grep_search` and `view_file` to search for dangerous patterns across server and client code.
|
|
55
|
+
2. **Cluster Root Causes:** Group findings by causal architecture (e.g. `cluster-tenant-isolation`, `cluster-credentials-exposure`, `cluster-injection`).
|
|
56
|
+
3. **Audit Evidence Sufficiency:** Ensure that user-controlled input reaches the vulnerable sink without prior sanitization or schema validation.
|
|
57
|
+
4. **Present Actionable Findings:** Display finding cards with severity, rule ID, file, line, and remediation recommendation.
|
|
58
|
+
5. **Prompt Next Phase:** Guide the operator to `/torusguard harden` or `npx torusguard harden`.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Canonical Rule Families
|
|
63
|
+
| Family | Scope | Example Violations |
|
|
64
|
+
| :--- | :--- | :--- |
|
|
65
|
+
| **TG-SEC** | Secrets & Credentials | Hardcoded JWT secret, API key strings, token logging |
|
|
66
|
+
| **TG-INPUT** | Injection & Input Validation | Raw SQL interpolation, DOM `innerHTML`, `path.join` traversal |
|
|
67
|
+
| **TG-DB** | Database & Tenant Scoping | Unscoped `.objects.get(id=...)`, Prisma missing `tenantId` |
|
|
68
|
+
| **TG-AUTH** | Authentication & Cookies | Insecure cookies (missing httpOnly/secure/sameSite) |
|
|
69
|
+
| **TG-PLATFORM** | Server & Platform Config | Wildcard CORS (`origin: '*'`) with credentials |
|
|
70
|
+
| **TG-DIFF** | Security Bypasses | Disabled TLS verification (`verify=False`) |
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Output Card Format
|
|
75
|
+
```markdown
|
|
76
|
+
### 🛡️ TorusGuard Static Security Audit Completed
|
|
77
|
+
- **Run ID:** `run-20260910-121618-audit`
|
|
78
|
+
- **Scope:** 7 files evaluated across 11 canonical families
|
|
79
|
+
- **Status:** ✖ CRITICAL FINDINGS DETECTED
|
|
80
|
+
- **Findings:** 2 Critical, 2 High, 2 Medium/Low (6 total)
|
|
81
|
+
- **Clusters:** 3 architectural root causes identified
|
|
82
|
+
- **Artifacts:** `.torusguard/runs/<run_id>/findings.json`
|
|
83
|
+
- **Next Action:** Run `npx torusguard harden` or `/torusguard harden`
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Living Report Ground Truth
|
|
87
|
+
- Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
|
|
@@ -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: 1.3.
|
|
4
|
+
version: 1.3.6
|
|
5
5
|
workflow: .torusguard/workflows/authorize.md
|
|
6
|
-
tools: Read, Grep, Glob, Write
|
|
6
|
+
tools: Read, Grep, Glob, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
8
9
|
- .torusguard/scripts/safety_gate.py
|
|
9
10
|
---
|
|
10
11
|
|
|
@@ -30,6 +31,10 @@ Define and validate legal runtime authorization boundaries, verify target owners
|
|
|
30
31
|
|
|
31
32
|
---
|
|
32
33
|
|
|
34
|
+
## Living Report Ground Truth
|
|
35
|
+
- Always inspect `security_report.md` at workspace root before acting.
|
|
36
|
+
- Update finding statuses after completion to eliminate hallucination.
|
|
37
|
+
|
|
33
38
|
## Safety Constraints
|
|
34
39
|
- Never authorize wildcard hosts (`*`) or third-party domains.
|
|
35
40
|
- State-changing destructive actions (`DELETE`, bulk drops) are disabled by default.
|
|
@@ -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: 1.3.
|
|
4
|
+
version: 1.3.6
|
|
5
5
|
workflow: .torusguard/workflows/exploit-check.md
|
|
6
|
-
tools: Read, Grep, Glob, Bash, Write
|
|
6
|
+
tools: Read, Grep, Glob, Bash, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
8
9
|
- .torusguard/scripts/safety_gate.py
|
|
9
10
|
- .torusguard/scripts/finding_scorer.py
|
|
10
11
|
---
|
|
@@ -48,6 +49,10 @@ Before dispatching any exploitability probe:
|
|
|
48
49
|
|
|
49
50
|
---
|
|
50
51
|
|
|
52
|
+
## Living Report Ground Truth
|
|
53
|
+
- Always inspect `security_report.md` at workspace root before acting.
|
|
54
|
+
- Update finding statuses after completion to eliminate hallucination.
|
|
55
|
+
|
|
51
56
|
## Safety Constraints
|
|
52
57
|
- Zero destructive payloads (`DROP`, `DELETE`, `UPDATE`).
|
|
53
58
|
- No denial-of-service or continuous fuzzing loops.
|
|
@@ -1,10 +1,11 @@
|
|
|
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: 1.3.
|
|
4
|
+
version: 1.3.6
|
|
5
5
|
workflow: .torusguard/workflows/audit.md
|
|
6
|
-
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
6
|
+
tools: Read, Grep, Glob, Bash, Edit, Write, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
8
9
|
- .torusguard/scripts/stack_detect.py
|
|
9
10
|
- .torusguard/scripts/safety_gate.py
|
|
10
11
|
- .torusguard/scripts/finding_scorer.py
|
|
@@ -53,6 +54,10 @@ Evaluates Evidence (35 pts), Reproduction (25 pts), Corroboration (15 pts), Envi
|
|
|
53
54
|
|
|
54
55
|
---
|
|
55
56
|
|
|
57
|
+
## Living Report Ground Truth
|
|
58
|
+
- Always inspect `security_report.md` at workspace root before acting.
|
|
59
|
+
- Update finding statuses after completion to eliminate hallucination.
|
|
60
|
+
|
|
56
61
|
## Safety & Governance
|
|
57
62
|
- Human Gate mandatory before code modifications in Phase 5.
|
|
58
63
|
- Enforce Ponytail line bounds ($\le 35$ additions, $\le 25$ deletions).
|
|
@@ -1,94 +1,98 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: torusguard-harden
|
|
3
|
-
description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions) via CLI or AI Agent.
|
|
4
|
-
version: 1.3.
|
|
5
|
-
workflow: .torusguard/workflows/harden.md
|
|
6
|
-
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
-
scripts-binding:
|
|
8
|
-
- .torusguard/scripts/
|
|
9
|
-
- .torusguard/scripts/
|
|
10
|
-
- .torusguard/scripts/
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
├──
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
-
|
|
80
|
-
- **
|
|
81
|
-
- **
|
|
82
|
-
- **
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
- **
|
|
91
|
-
- **
|
|
92
|
-
- **
|
|
93
|
-
- **
|
|
94
|
-
|
|
1
|
+
---
|
|
2
|
+
name: torusguard-harden
|
|
3
|
+
description: Package surgical remediation bundles conforming to the Ponytail Protocol (<= 35 additions, <= 25 deletions) via CLI or AI Agent.
|
|
4
|
+
version: 1.3.6
|
|
5
|
+
workflow: .torusguard/workflows/harden.md
|
|
6
|
+
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
+
scripts-binding:
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
9
|
+
- .torusguard/scripts/harden_runner.py
|
|
10
|
+
- .torusguard/scripts/diff_guard.py
|
|
11
|
+
- .torusguard/scripts/term_ui.py
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# TorusGuard Harden — Governed Remediation & Bundle Packaging
|
|
15
|
+
|
|
16
|
+
## Objective
|
|
17
|
+
Formulate minimal, surgical code fixes bound by the Ponytail Protocol ($\le 35$ additions, $\le 25$ deletions), packaging unified diffs into auditable remediation bundles ready for review.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Two Execution Modes
|
|
22
|
+
|
|
23
|
+
### Mode A: Automated CLI Execution (Recommended First Step)
|
|
24
|
+
Run the autonomous remediation engine via the terminal:
|
|
25
|
+
```bash
|
|
26
|
+
# Harden latest audit run
|
|
27
|
+
npx torusguard harden
|
|
28
|
+
|
|
29
|
+
# Harden specific project directory
|
|
30
|
+
npx torusguard harden ./my-project
|
|
31
|
+
|
|
32
|
+
# Harden specific run ID
|
|
33
|
+
npx torusguard harden --run run-20260910-121618-audit
|
|
34
|
+
|
|
35
|
+
# Machine-readable JSON output
|
|
36
|
+
npx torusguard harden --json
|
|
37
|
+
```
|
|
38
|
+
**Under the Hood:** Executes `python .torusguard/scripts/harden_runner.py`.
|
|
39
|
+
- Discovers findings in `.torusguard/runs/<run_id>/findings.json`.
|
|
40
|
+
- Matches findings against canonical AST patch templates (`TG-SEC-*`, `TG-INPUT-*`, `TG-DB-*`, `TG-PLATFORM-*`, `TG-AUTH-*`, `TG-DIFF-*`).
|
|
41
|
+
- Validates that every candidate patch strictly satisfies Ponytail bounds ($\le 35$ additions, $\le 25$ deletions).
|
|
42
|
+
- Packages candidate bundles into `.torusguard/runs/<run_id>/bundles/<bundle_id>/` containing `patch.diff`, `minimal_patch_plan.md`, and `metadata.json`.
|
|
43
|
+
- Emits run-level summary `remediation.md`.
|
|
44
|
+
- Renders pixel-perfect 75-column terminal cards.
|
|
45
|
+
|
|
46
|
+
### Mode B: In-Session AI Chat Agent Remediation
|
|
47
|
+
When findings require complex architectural changes, or when the automated CLI cannot formulate a template match:
|
|
48
|
+
1. **Locate Target Finding:** Inspect `.torusguard/runs/<run_id>/findings.md` or `findings.json`.
|
|
49
|
+
2. **Inspect AST Context:** Read surrounding lines ($\pm 15$) of the vulnerable sink using `view_file`.
|
|
50
|
+
3. **Formulate Minimal Fix:** Craft a surgical code modification:
|
|
51
|
+
- Parameterize SQL queries (replace concatenation with `?` or `$1` or `%s`).
|
|
52
|
+
- Add tenant isolation (`where: { tenantId }`, `organization_id=...`).
|
|
53
|
+
- Replace unsafe HTML injection (`dangerouslySetInnerHTML`, `.innerHTML = ...`) with safe text rendering (`textContent`, React elements).
|
|
54
|
+
- Sanitize path traversal using `path.basename()` or `os.path.basename()`.
|
|
55
|
+
- Constrain wildcard CORS headers to verified origin environment variables.
|
|
56
|
+
- Restore TLS verification flags (`verify=True`, `rejectUnauthorized: true`).
|
|
57
|
+
4. **Validate Ponytail Bounds:** Count additions ($\le 35$) and deletions ($\le 25$). Never perform full-file rewrites.
|
|
58
|
+
5. **Package Bundle Artifacts:** Write bundle under `.torusguard/runs/<run_id>/bundles/<bundle_id>/`:
|
|
59
|
+
- `patch.diff`: Standard unified diff.
|
|
60
|
+
- `minimal_patch_plan.md`: Context, rationale, and diff preview.
|
|
61
|
+
- `metadata.json`: Bundle metadata.
|
|
62
|
+
6. **Report to Operator:** Present proposed diff card and recommend running `/torusguard apply` or `npx torusguard apply`.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Remediation Bundle Structure
|
|
67
|
+
```
|
|
68
|
+
.torusguard/runs/<run_id>/
|
|
69
|
+
├── remediation.md # Run-level catalog of formulated candidate patches
|
|
70
|
+
└── bundles/
|
|
71
|
+
└── bnd-<rule_id>-<line>-<hash>/
|
|
72
|
+
├── patch.diff # Unified diff preview
|
|
73
|
+
├── minimal_patch_plan.md # Detailed explanation, rationale, and churn stats
|
|
74
|
+
└── metadata.json # Machine-readable bundle metadata
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Non-Negotiable Invariants
|
|
80
|
+
- **Ponytail Limit:** Strict upper bound of $\le 35$ additions and $\le 25$ deletions per bundle.
|
|
81
|
+
- **Dry-Run Rule:** Never modify target source code during `harden`. All edits must be reviewed before application in Phase 5 (`apply`).
|
|
82
|
+
- **No Unrelated Churn:** Do not reformat unrelated code, reorder imports, or change styles.
|
|
83
|
+
- **Zero Security Bypasses:** Never insert `# nosec`, `verify=False`, `[AllowAnonymous]`, or `csrf().disable()`.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Output Card Format
|
|
88
|
+
```markdown
|
|
89
|
+
### 🛠️ TorusGuard Remediation Bundle Formulated
|
|
90
|
+
- **Target Finding:** `[TG-SEC-001]` at `server/index.js:9`
|
|
91
|
+
- **Ponytail Churn:** +1 / -1 (Compliant <= 35 add, <= 25 del)
|
|
92
|
+
- **Strategy:** Migrated hardcoded JWT secret to environment variable process.env.JWT_SECRET
|
|
93
|
+
- **Bundle Directory:** `.torusguard/runs/<run_id>/bundles/bnd-tg-sec-001-9-a8310c/`
|
|
94
|
+
- **Next Step:** Run `npx torusguard apply` or `/torusguard apply` to review and apply
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## Living Report Ground Truth
|
|
98
|
+
- Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
|
|
@@ -1,64 +1,68 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: torusguard-init
|
|
3
|
-
description: Initialize TorusGuard workspace — detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline via CLI or AI Agent.
|
|
4
|
-
version: 1.3.
|
|
5
|
-
workflow: .torusguard/workflows/init.md
|
|
6
|
-
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
-
scripts-binding:
|
|
8
|
-
- .torusguard/scripts/
|
|
9
|
-
- .torusguard/scripts/
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
- **
|
|
61
|
-
- **
|
|
62
|
-
- **
|
|
63
|
-
- **
|
|
64
|
-
|
|
1
|
+
---
|
|
2
|
+
name: torusguard-init
|
|
3
|
+
description: Initialize TorusGuard workspace — detect project stack, activate tailored TG-* security rules, and generate SECURITY.md baseline via CLI or AI Agent.
|
|
4
|
+
version: 1.3.6
|
|
5
|
+
workflow: .torusguard/workflows/init.md
|
|
6
|
+
tools: Read, Grep, Glob, Write, run_command
|
|
7
|
+
scripts-binding:
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
9
|
+
- .torusguard/scripts/stack_detect.py
|
|
10
|
+
- .torusguard/scripts/term_ui.py
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# TorusGuard Init — Project Stack Discovery & Rule Activation
|
|
14
|
+
|
|
15
|
+
## Objective
|
|
16
|
+
Auto-detect repository technology stack across 16+ languages and frameworks, provision the `.torusguard/` workspace structure, activate tailored `TG-*` security rules into `.torusguard/rules/active/`, and generate `SECURITY.md` baseline policies.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Two Execution Modes
|
|
21
|
+
|
|
22
|
+
### Mode A: Automated CLI Execution
|
|
23
|
+
Run the workspace initializer from your terminal:
|
|
24
|
+
```bash
|
|
25
|
+
# Initialize current repository
|
|
26
|
+
npx torusguard init
|
|
27
|
+
|
|
28
|
+
# Initialize specific directory
|
|
29
|
+
npx torusguard init ./my-app
|
|
30
|
+
|
|
31
|
+
# Force re-initialization (overwriting existing configuration)
|
|
32
|
+
npx torusguard init --force
|
|
33
|
+
|
|
34
|
+
# Explicitly specify stack (e.g. react, nextjs, django, fastapi, express)
|
|
35
|
+
npx torusguard init --stack express
|
|
36
|
+
```
|
|
37
|
+
**Under the Hood:**
|
|
38
|
+
- Runs `stack_detect.py` to inspect package files (`package.json`, `pyproject.toml`, `requirements.txt`, `go.mod`, `Cargo.toml`, `Gemfile`, `composer.json`, `*.csproj`).
|
|
39
|
+
- Detects backend frameworks, frontend libraries, ORMs (Prisma, Mongoose, SQLAlchemy, Django ORM), and authentication systems.
|
|
40
|
+
- Scaffolds `.torusguard/` directory tree: `config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`, `memory/`, `snapshots/`.
|
|
41
|
+
- Copies tailored rule definitions into `.torusguard/rules/active/`.
|
|
42
|
+
- Provisions `SECURITY.md` with standard responsible disclosure contacts.
|
|
43
|
+
- Writes `.torusguard/config/torusguard.json`.
|
|
44
|
+
- Displays 75-column terminal cards.
|
|
45
|
+
|
|
46
|
+
### Mode B: In-Session AI Chat Agent Initialization
|
|
47
|
+
When initializing a workspace directly in AI chat:
|
|
48
|
+
1. **Detect Stack:** Inspect root files (`package.json`, `requirements.txt`, etc.) to determine languages and frameworks.
|
|
49
|
+
2. **Bootstrap Structure:** Ensure `.torusguard/` structure exists. If missing, run `python skills/torusguard/bootstrap.py --target .`.
|
|
50
|
+
3. **Activate Rules:** Populate `.torusguard/rules/active/` with applicable rule files from `rules/`.
|
|
51
|
+
4. **Provision Policy:** Create `SECURITY.md` if not already present.
|
|
52
|
+
5. **Write Configuration:** Persist settings into `.torusguard/config/torusguard.json`.
|
|
53
|
+
6. **Prompt Audit:** Advise the user to run `npx torusguard audit` or `/torusguard audit`.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Output Card Format
|
|
58
|
+
```markdown
|
|
59
|
+
### 🛡️ TorusGuard Workspace Initialized Successfully
|
|
60
|
+
- **Primary Stack:** Node.js / React / Express
|
|
61
|
+
- **Active Rules:** 74 canonical security rules enabled in `.torusguard/rules/active/`
|
|
62
|
+
- **Configuration:** Written to `.torusguard/config/torusguard.json`
|
|
63
|
+
- **Security Policy:** Baseline `SECURITY.md` generated
|
|
64
|
+
- **Next Step:** Run `npx torusguard audit` or `/torusguard audit` to scan for flaws
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Living Report Ground Truth
|
|
68
|
+
- Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
|