torusguard 1.3.3 → 1.3.5
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 +66 -63
- package/.torusguard/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
- package/.torusguard/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
- package/.torusguard/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
- package/.torusguard/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
- package/.torusguard/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
- package/.torusguard/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
- package/.torusguard/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
- package/.torusguard/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
- package/.torusguard/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
- package/.torusguard/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
- package/.torusguard/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
- package/.torusguard/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
- package/.torusguard/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
- package/.torusguard/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
- package/.torusguard/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
- package/.torusguard/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
- package/.torusguard/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
- package/.torusguard/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
- package/.torusguard/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
- package/.torusguard/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
- package/.torusguard/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
- package/.torusguard/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
- package/.torusguard/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
- package/.torusguard/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
- package/.torusguard/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
- package/.torusguard/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
- package/.torusguard/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
- package/.torusguard/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
- package/.torusguard/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
- package/.torusguard/rules_catalog.json +520 -0
- package/.torusguard/runs/report-latest.html +93 -7
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-002-256-c8a22e/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-platform-001-183-47fd5e/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260910-120238-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
- package/.torusguard/runs/run-20260910-120238-audit/findings.json +1520 -0
- package/.torusguard/runs/run-20260910-120238-audit/findings.md +560 -0
- package/.torusguard/runs/run-20260910-120238-audit/manifest.json +13 -0
- package/.torusguard/runs/run-20260910-120238-audit/recheck.md +86 -0
- package/.torusguard/runs/run-20260910-120238-audit/remediation.md +262 -0
- package/.torusguard/runs/run-20260910-120238-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260910-121238-audit/findings.json +794 -0
- package/.torusguard/runs/run-20260910-121238-audit/findings.md +344 -0
- package/.torusguard/runs/run-20260910-121238-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260910-121238-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260910-130454-audit/findings.json +893 -0
- package/.torusguard/runs/run-20260910-130454-audit/findings.md +386 -0
- package/.torusguard/runs/run-20260910-130454-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260910-130454-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260910-130519-audit/findings.json +563 -0
- package/.torusguard/runs/run-20260910-130519-audit/findings.md +246 -0
- package/.torusguard/runs/run-20260910-130519-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260910-130519-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-214110-audit/findings.json +1256 -0
- package/.torusguard/runs/run-20260912-214110-audit/findings.md +534 -0
- package/.torusguard/runs/run-20260912-214110-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260912-214110-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-214813-audit/findings.json +992 -0
- package/.torusguard/runs/run-20260912-214813-audit/findings.md +422 -0
- package/.torusguard/runs/run-20260912-214813-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260912-214813-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-auth-003-49-7c96f3/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215555-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215555-audit/findings.json +530 -0
- package/.torusguard/runs/run-20260912-215555-audit/findings.md +232 -0
- package/.torusguard/runs/run-20260912-215555-audit/manifest.json +13 -0
- package/.torusguard/runs/run-20260912-215555-audit/remediation.md +102 -0
- package/.torusguard/runs/run-20260912-215555-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-215731-audit/apply_plan.md +6 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-client-001-7-587129/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-db-002-9-5f7850/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/minimal_patch_plan.md +22 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-001-27-2486f1/patch.diff +10 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-001-12-cf8156/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/minimal_patch_plan.md +23 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-17-876973/patch.diff +11 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/minimal_patch_plan.md +23 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-platform-002-5-40c794/patch.diff +11 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-001-26-affcfa/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-rate-002-54-0b38d2/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-18-a3c1e8/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-001-9-e22e50/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-28-a1a0a1/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-sec-004-30-00569e/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/metadata.json +17 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/minimal_patch_plan.md +21 -0
- package/.torusguard/runs/run-20260912-215731-audit/bundles/bnd-tg-ssrf-004-9-9803ad/patch.diff +9 -0
- package/.torusguard/runs/run-20260912-215731-audit/diff_summary.md +186 -0
- package/.torusguard/runs/run-20260912-215731-audit/findings.json +497 -0
- package/.torusguard/runs/run-20260912-215731-audit/findings.md +218 -0
- package/.torusguard/runs/run-20260912-215731-audit/manifest.json +14 -0
- package/.torusguard/runs/run-20260912-215731-audit/recheck.md +76 -0
- package/.torusguard/runs/run-20260912-215731-audit/remediation.md +234 -0
- package/.torusguard/runs/run-20260912-215731-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-220134-audit/findings.json +68 -0
- package/.torusguard/runs/run-20260912-220134-audit/findings.md +36 -0
- package/.torusguard/runs/run-20260912-220134-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260912-220134-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-220200-audit/findings.json +1 -0
- package/.torusguard/runs/run-20260912-220200-audit/findings.md +8 -0
- package/.torusguard/runs/run-20260912-220200-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260912-220200-audit/recheck.md +6 -0
- package/.torusguard/runs/run-20260912-220200-audit/summary.md +5 -0
- package/.torusguard/runs/run-20260912-220227-audit/findings.json +1 -0
- package/.torusguard/runs/run-20260912-220227-audit/findings.md +8 -0
- package/.torusguard/runs/run-20260912-220227-audit/manifest.json +12 -0
- package/.torusguard/runs/run-20260912-220227-audit/recheck.md +6 -0
- package/.torusguard/runs/run-20260912-220227-audit/summary.md +5 -0
- package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/html_reporter.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/report_sync.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/rules_sync.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
- package/.torusguard/scripts/__pycache__/term_ui.cpython-311.pyc +0 -0
- package/.torusguard/scripts/apply_runner.py +383 -339
- package/.torusguard/scripts/audit_runner.py +1306 -550
- package/.torusguard/scripts/finding_scorer.py +14 -2
- package/.torusguard/scripts/harden_runner.py +628 -375
- package/.torusguard/scripts/recheck_runner.py +248 -221
- package/.torusguard/scripts/recipes_runner.py +137 -130
- package/.torusguard/scripts/report_sync.py +423 -0
- package/.torusguard/scripts/sarif_exporter.py +116 -116
- package/.torusguard/scripts/term_ui.py +162 -0
- package/.torusguard/skills/torusguard/SKILL.md +61 -31
- package/.torusguard/skills/torusguard-apply/SKILL.md +80 -46
- package/.torusguard/skills/torusguard-audit/SKILL.md +83 -70
- package/.torusguard/skills/torusguard-authorize/SKILL.md +5 -4
- package/.torusguard/skills/torusguard-exploit-check/SKILL.md +6 -5
- package/.torusguard/skills/torusguard-full/SKILL.md +1 -1
- package/.torusguard/skills/torusguard-harden/SKILL.md +94 -63
- package/.torusguard/skills/torusguard-init/SKILL.md +64 -52
- package/.torusguard/skills/torusguard-recheck/SKILL.md +77 -53
- package/.torusguard/skills/torusguard-report/SKILL.md +72 -54
- package/.torusguard/skills/torusguard-status/SKILL.md +58 -42
- package/.torusguard/skills/torusguard-verify/SKILL.md +8 -7
- package/.torusguard/skills/torusguard-web-validate/SKILL.md +8 -7
- package/.torusguard/snapshots/run-20260912-215731-audit/demo/playground/vulnerable_nextjs/actions.ts.bak +24 -0
- package/.torusguard/snapshots/run-20260912-215731-audit/examples/hardened-react-express/server/index.js.bak +121 -0
- package/.torusguard/snapshots/run-20260912-215731-audit/examples/python/fastapi-vuln/main.py.bak +20 -0
- package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/src/App.jsx.bak +63 -0
- package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/client/vite.config.js.bak +12 -0
- package/.torusguard/snapshots/run-20260912-215731-audit/examples/vulnerable-react-express/server/index.js.bak +82 -0
- package/.torusguard/workflows/apply.md +11 -4
- package/.torusguard/workflows/audit.md +7 -1
- package/.torusguard/workflows/authorize.md +2 -1
- package/.torusguard/workflows/exploit-check.md +2 -1
- package/.torusguard/workflows/harden.md +7 -1
- package/.torusguard/workflows/init.md +6 -1
- package/.torusguard/workflows/memory.md +2 -1
- package/.torusguard/workflows/recheck.md +7 -1
- package/.torusguard/workflows/report.md +7 -1
- package/.torusguard/workflows/status.md +6 -1
- package/.torusguard/workflows/verify.md +6 -1
- package/.torusguard/workflows/web-validate.md +2 -1
- package/README.md +470 -344
- package/bin/torusguard.js +209 -97
- package/package.json +1 -1
- package/skills/torusguard/SKILL.md +73 -42
- package/skills/torusguard/payload/.manifest.json +66 -63
- package/skills/torusguard/payload/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +30 -14
- package/skills/torusguard/payload/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +33 -16
- package/skills/torusguard/payload/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +31 -15
- package/skills/torusguard/payload/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +26 -16
- package/skills/torusguard/payload/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +24 -16
- package/skills/torusguard/payload/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +32 -18
- package/skills/torusguard/payload/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +24 -17
- package/skills/torusguard/payload/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +31 -18
- package/skills/torusguard/payload/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +28 -17
- package/skills/torusguard/payload/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +33 -17
- package/skills/torusguard/payload/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +31 -16
- package/skills/torusguard/payload/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +25 -16
- package/skills/torusguard/payload/rules/secrets/TG-SEC-005-secret-in-git-history.md +24 -19
- package/skills/torusguard/payload/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +36 -19
- package/skills/torusguard/payload/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +21 -16
- package/skills/torusguard/payload/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +45 -18
- package/skills/torusguard/payload/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +20 -16
- package/skills/torusguard/payload/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +28 -19
- package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +25 -18
- package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +29 -19
- package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +23 -18
- package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +23 -18
- package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +36 -16
- package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +26 -17
- package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +30 -16
- package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +25 -16
- package/skills/torusguard/payload/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +28 -17
- package/skills/torusguard/payload/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +31 -17
- package/skills/torusguard/payload/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +31 -17
- package/skills/torusguard/payload/rules_catalog.json +520 -0
- package/skills/torusguard/payload/scripts/apply_runner.py +383 -339
- package/skills/torusguard/payload/scripts/audit_runner.py +1306 -550
- package/skills/torusguard/payload/scripts/finding_scorer.py +14 -2
- package/skills/torusguard/payload/scripts/harden_runner.py +628 -375
- package/skills/torusguard/payload/scripts/recheck_runner.py +248 -221
- package/skills/torusguard/payload/scripts/recipes_runner.py +137 -130
- package/skills/torusguard/payload/scripts/report_sync.py +423 -0
- package/skills/torusguard/payload/scripts/sarif_exporter.py +116 -116
- package/skills/torusguard/payload/scripts/term_ui.py +162 -0
- package/skills/torusguard/payload/skills/torusguard/SKILL.md +75 -42
- package/skills/torusguard/payload/skills/torusguard-apply/SKILL.md +63 -25
- package/skills/torusguard/payload/skills/torusguard-audit/SKILL.md +62 -45
- package/skills/torusguard/payload/skills/torusguard-authorize/SKILL.md +11 -5
- package/skills/torusguard/payload/skills/torusguard-exploit-check/SKILL.md +12 -6
- package/skills/torusguard/payload/skills/torusguard-full/SKILL.md +7 -2
- package/skills/torusguard/payload/skills/torusguard-harden/SKILL.md +71 -36
- package/skills/torusguard/payload/skills/torusguard-init/SKILL.md +45 -29
- package/skills/torusguard/payload/skills/torusguard-recheck/SKILL.md +59 -31
- package/skills/torusguard/payload/skills/torusguard-report/SKILL.md +52 -30
- package/skills/torusguard/payload/skills/torusguard-status/SKILL.md +40 -20
- package/skills/torusguard/payload/skills/torusguard-verify/SKILL.md +14 -8
- package/skills/torusguard/payload/skills/torusguard-web-validate/SKILL.md +14 -8
- package/skills/torusguard/payload/workflows/apply.md +11 -4
- package/skills/torusguard/payload/workflows/audit.md +7 -1
- package/skills/torusguard/payload/workflows/authorize.md +2 -1
- package/skills/torusguard/payload/workflows/exploit-check.md +2 -1
- package/skills/torusguard/payload/workflows/harden.md +7 -1
- package/skills/torusguard/payload/workflows/init.md +6 -1
- package/skills/torusguard/payload/workflows/memory.md +2 -1
- package/skills/torusguard/payload/workflows/recheck.md +7 -1
- package/skills/torusguard/payload/workflows/report.md +7 -1
- package/skills/torusguard/payload/workflows/status.md +6 -1
- package/skills/torusguard/payload/workflows/verify.md +6 -1
- package/skills/torusguard/payload/workflows/web-validate.md +2 -1
- package/skills/torusguard-apply/SKILL.md +63 -27
- package/skills/torusguard-audit/SKILL.md +62 -50
- package/skills/torusguard-authorize/SKILL.md +7 -2
- package/skills/torusguard-exploit-check/SKILL.md +7 -2
- package/skills/torusguard-full/SKILL.md +7 -2
- package/skills/torusguard-harden/SKILL.md +71 -40
- package/skills/torusguard-init/SKILL.md +45 -30
- package/skills/torusguard-recheck/SKILL.md +59 -32
- package/skills/torusguard-report/SKILL.md +52 -31
- package/skills/torusguard-status/SKILL.md +40 -21
- package/skills/torusguard-verify/SKILL.md +7 -2
- package/skills/torusguard-web-validate/SKILL.md +7 -2
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-web-validate
|
|
3
3
|
description: Execute authorized HTTP probing against local/staging web applications — session capture, transparent audit headers, and secret redaction.
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
workflow: .torusguard/workflows/web-validate.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
|
---
|
|
10
11
|
|
|
@@ -34,11 +35,12 @@ All requests pass through `.torusguard/scripts/safety_gate.py`:
|
|
|
34
35
|
## Execution Steps
|
|
35
36
|
|
|
36
37
|
1. **Gate Check:** Validate scope in `scope.json` and query `safety_gate.py`.
|
|
37
|
-
2. **
|
|
38
|
-
3. **
|
|
39
|
-
4. **
|
|
40
|
-
5. **
|
|
41
|
-
6. **
|
|
38
|
+
2. **Handle Automation Failure:** If automated web validation scripts fail, YOU must manually construct the HTTP requests (using `curl` or `fetch`) and inspect the responses.
|
|
39
|
+
3. **Inject Audit Header:** Attach `X-TorusGuard-AuthID: <auth_id>` to all outbound requests.
|
|
40
|
+
4. **Dispatch Bounded Probe:** Send single non-destructive HTTP request.
|
|
41
|
+
5. **Validate Security Headers:** Check for CSP, HSTS, X-Content-Type-Options, and CORS configurations.
|
|
42
|
+
6. **Audit Cookie Flags:** Verify `HttpOnly`, `Secure`, and `SameSite` on session cookies.
|
|
43
|
+
7. **Capture Replay Trace:** Save sanitized trace in `.torusguard/runs/<run_id>/requests.json`.
|
|
42
44
|
|
|
43
45
|
---
|
|
44
46
|
|
|
@@ -47,6 +49,10 @@ All Bearer tokens, cookies, passwords, and API keys are redacted prior to disk s
|
|
|
47
49
|
|
|
48
50
|
---
|
|
49
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
|
+
|
|
50
56
|
## Safety Constraints
|
|
51
57
|
- Max 50 requests per validation session.
|
|
52
58
|
- Never test unauthorized domains or third-party APIs.
|
|
@@ -56,7 +62,7 @@ All Bearer tokens, cookies, passwords, and API keys are redacted prior to disk s
|
|
|
56
62
|
|
|
57
63
|
## Output Format
|
|
58
64
|
```markdown
|
|
59
|
-
🌐 [TorusGuard] Web Validation Completed
|
|
65
|
+
🌐 [TorusGuard] Web Validation Completed (AI Assisted)
|
|
60
66
|
- Target: <Host URL> | Endpoints Tested: <Count>
|
|
61
67
|
- Header Posture: <CSP/HSTS Status> | Cookies: <Flags Status>
|
|
62
68
|
- Replay Trace: `.torusguard/runs/<run_id>/requests.json`
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Governed patch application with pre-apply rollback snapshots and Human Gate authorization.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: remediator
|
|
6
6
|
lifecycle-phase: Phase 5 (Patch Application)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-apply
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/apply_runner.py
|
|
11
|
+
- .torusguard/scripts/report_sync.py
|
|
10
12
|
- .torusguard/scripts/run_manager.py
|
|
11
13
|
- .torusguard/scripts/diff_guard.py
|
|
12
14
|
---
|
|
@@ -26,7 +28,7 @@ Governed patch application with pre-apply rollback snapshots and Human Gate auth
|
|
|
26
28
|
|
|
27
29
|
Inspect bundle validity and file safety before modifying disk code:
|
|
28
30
|
1. **Bundle Verification:** Assert `patch.diff` exists in active run's remediation folder.
|
|
29
|
-
2. **Pre-Apply Snapshot:** Save a byte-for-byte backup copy (`.bak` or
|
|
31
|
+
2. **Pre-Apply Snapshot:** Save a byte-for-byte backup copy (`.bak` or `.torusguard/snapshots/<run_id>/`) prior to editing.
|
|
30
32
|
3. **Uncommitted Changes:** Check git status; ensure target file has clean baseline.
|
|
31
33
|
4. **Ponytail Check:** Re-verify that patch additions $\le 35$ and deletions $\le 25$.
|
|
32
34
|
5. **Human Gate:** Confirm operator approval before committing edits to disk.
|
|
@@ -47,11 +49,16 @@ Inspect bundle validity and file safety before modifying disk code:
|
|
|
47
49
|
|
|
48
50
|
---
|
|
49
51
|
|
|
52
|
+
## Living Report Invariant
|
|
53
|
+
- Applied patches create pre-apply `.bak` snapshots in `.torusguard/snapshots/<run_id>/`.
|
|
54
|
+
- Finding statuses transition in `security_report.md` to `APPLIED 🔵`.
|
|
55
|
+
- Instant rollback available via `npx torusguard rollback`.
|
|
56
|
+
|
|
50
57
|
## Execution Steps
|
|
51
58
|
|
|
52
59
|
1. **Load Remediation Bundle:** Read `patch.diff` and metadata from active run directory.
|
|
53
60
|
2. **Audit Patch Invariants:** Run `python .torusguard/scripts/diff_guard.py <patch.diff>`.
|
|
54
|
-
3. **Create Rollback Backup:** Copy target file to `.torusguard/runs/<run_id
|
|
61
|
+
3. **Create Rollback Backup:** Copy target file to `.torusguard/runs/<run_id>/.torusguard/snapshots/<run_id>/<filename>.bak`.
|
|
55
62
|
4. **Apply Minimal Diff:** Execute precise surgical edit using `replace_file_content` or `patch`.
|
|
56
63
|
5. **Assert Syntax & Integrity:** Check that modified file compiles cleanly without syntax errors.
|
|
57
64
|
6. **Log Application Ledger:** Record timestamp, original SHA-256, and patched SHA-256 in `apply-log.json`.
|
|
@@ -81,7 +88,7 @@ Inspect bundle validity and file safety before modifying disk code:
|
|
|
81
88
|
### 🚀 TorusGuard Patch Application
|
|
82
89
|
- **Finding Addressed:** `TG-XXX-HASH`
|
|
83
90
|
- **File Patched:** `src/path/to/file.py`
|
|
84
|
-
- **Rollback Backup:** `.torusguard/runs/<run_id
|
|
91
|
+
- **Rollback Backup:** `.torusguard/runs/<run_id>/.torusguard/snapshots/<run_id>/<file>.bak`
|
|
85
92
|
- **Churn Applied:** +[Additions] / -[Deletions] lines
|
|
86
93
|
- **Syntax Check:** PASSED (clean compile)
|
|
87
94
|
- **Status:** APPLIED — run `/torusguard recheck` to verify fix
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Static security AST scanning, stable line-shift invariant fingerprinting, root-cause clustering, and 0-100 confidence scoring.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: auditor
|
|
6
6
|
lifecycle-phase: Phase 2 (Static Audit & Clustering)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-audit
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/audit_runner.py
|
|
11
|
+
- .torusguard/scripts/report_sync.py
|
|
10
12
|
- .torusguard/scripts/run_manager.py
|
|
11
13
|
- .torusguard/scripts/finding_scorer.py
|
|
12
14
|
---
|
|
@@ -45,6 +47,10 @@ Inspect workspace prerequisites before launching static audit:
|
|
|
45
47
|
|
|
46
48
|
---
|
|
47
49
|
|
|
50
|
+
## Living Report Invariant
|
|
51
|
+
- Audit discoveries automatically synchronize to `security_report.md` at workspace root.
|
|
52
|
+
- Findings transition into `OPEN 🔴` status with stable invariant fingerprints.
|
|
53
|
+
|
|
48
54
|
## Execution Steps
|
|
49
55
|
|
|
50
56
|
1. **Allocate Run Folder:** Run `python .torusguard/scripts/run_manager.py create audit`.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Legal scope definition, target ownership proof verification, and safety boundary enforcement for runtime validation.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: reviewer
|
|
6
6
|
lifecycle-phase: Phase 1 (Authorization Gate)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-authorize
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/safety_gate.py
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Safe, bounded, single-step exploitability confirmation across 5 standard verification statuses.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: validator
|
|
6
6
|
lifecycle-phase: Phase 3c (Exploitability Check)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-exploit-check
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/safety_gate.py
|
|
11
12
|
- .torusguard/scripts/finding_scorer.py
|
|
12
13
|
---
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Governed remediation formulation under strict Ponytail Protocol bounds (<= 35 additions, <= 25 deletions) and bundle packaging.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: remediator
|
|
6
6
|
lifecycle-phase: Phase 4 (Remediation Formulation)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-harden
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/harden_runner.py
|
|
11
|
+
- .torusguard/scripts/report_sync.py
|
|
10
12
|
- .torusguard/scripts/run_manager.py
|
|
11
13
|
- .torusguard/scripts/diff_guard.py
|
|
12
14
|
---
|
|
@@ -46,6 +48,10 @@ Inspect finding targets and patch constraints before generating diffs:
|
|
|
46
48
|
|
|
47
49
|
---
|
|
48
50
|
|
|
51
|
+
## Living Report Invariant
|
|
52
|
+
- Candidate patches transition findings in `security_report.md` into `CANDIDATE 🟡` status.
|
|
53
|
+
- Every patch strictly conforms to Ponytail bounds (<= 35 additions, <= 25 deletions).
|
|
54
|
+
|
|
49
55
|
## Execution Steps
|
|
50
56
|
|
|
51
57
|
1. **Select Target Finding:** Choose verified flaw from active run directory.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Baseline project discovery, workspace scaffolding, stack detection, and framework-tailored security rule activation.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: profiler
|
|
6
6
|
lifecycle-phase: Phase 0 (Baseline Setup)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-init
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/stack_detect.py
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -44,6 +45,10 @@ Inspect workspace state before running initialization:
|
|
|
44
45
|
|
|
45
46
|
---
|
|
46
47
|
|
|
48
|
+
## Living Report Invariant
|
|
49
|
+
- Provisions baseline `security_report.md` single-source-of-truth ledger.
|
|
50
|
+
- Activates tailored rules across 18 families based on detected stack.
|
|
51
|
+
|
|
47
52
|
## Execution Steps
|
|
48
53
|
|
|
49
54
|
1. **Scaffold Directory Topology:** Verify `.torusguard/` structure (`config/`, `rules/active/`, `runs/`, `scripts/`, `workflows/`, `templates/`, `schemas/`).
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: TorusGuard Adaptive Security Memory Engine — view memory stats, export/import intelligence, apply TTL decay, and manage false positives.
|
|
3
3
|
tools: Read, Grep, Glob, Bash
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: reviewer
|
|
6
6
|
lifecycle-phase: Intelligence / Memory
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/memory_engine.py
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Targeted differential AST re-scan, fix closure verification, and regression state machine transitions.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: reviewer
|
|
6
6
|
lifecycle-phase: Phase 6 (Targeted Recheck & Verification)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-recheck
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/recheck_runner.py
|
|
11
|
+
- .torusguard/scripts/report_sync.py
|
|
10
12
|
- .torusguard/scripts/run_manager.py
|
|
11
13
|
- .torusguard/scripts/finding_scorer.py
|
|
12
14
|
---
|
|
@@ -46,6 +48,10 @@ Inspect applied patch history and target file scope before re-checking:
|
|
|
46
48
|
|
|
47
49
|
---
|
|
48
50
|
|
|
51
|
+
## Living Report Invariant
|
|
52
|
+
- Verified fix closures transition findings in `security_report.md` to `RESOLVED 🟢`.
|
|
53
|
+
- Regressions transition findings to `REGRESSED ❌`.
|
|
54
|
+
|
|
49
55
|
## Execution Steps
|
|
50
56
|
|
|
51
57
|
1. **Identify Modified Files:** Extract list of altered files from latest apply step.
|
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Executive posture reporting, cluster analysis, signed compliance audit, and OASIS SARIF v2.1.0 structured export.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: reviewer
|
|
6
6
|
lifecycle-phase: Phase 7 (Reporting & SARIF Export)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-report
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/html_reporter.py
|
|
11
|
+
- .torusguard/scripts/report_sync.py
|
|
10
12
|
- .torusguard/scripts/sarif_exporter.py
|
|
11
13
|
- .torusguard/scripts/run_manager.py
|
|
12
14
|
---
|
|
@@ -45,6 +47,10 @@ Inspect run records and reporting parameters before generating release artifacts
|
|
|
45
47
|
|
|
46
48
|
---
|
|
47
49
|
|
|
50
|
+
## Living Report Invariant
|
|
51
|
+
- Executive posture reports incorporate health scoring and metrics from `security_report.md`.
|
|
52
|
+
- Emits visual dark-mode HTML (`--html`) and OASIS SARIF v2.1.0 (`--sarif`).
|
|
53
|
+
|
|
48
54
|
## Execution Steps
|
|
49
55
|
|
|
50
56
|
1. **Aggregate Lifecycle Data:** Load all finding cards, verification traces, and recheck logs.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Read-only diagnostic overview of workspace security posture, active configuration, rules catalog, and run history.
|
|
3
3
|
tools: Read, Grep, Glob, Bash
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: reviewer
|
|
6
6
|
lifecycle-phase: System / Diagnostics
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-status
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/run_manager.py
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -44,6 +45,10 @@ Inspect workspace state and configuration records prior to status display:
|
|
|
44
45
|
|
|
45
46
|
---
|
|
46
47
|
|
|
48
|
+
## Living Report Invariant
|
|
49
|
+
- Reads current health score and status breakdown directly from `security_report.md`.
|
|
50
|
+
- Displays 18 rule families and 74 rules in standardized 75-column terminal cards.
|
|
51
|
+
|
|
47
52
|
## Execution Steps
|
|
48
53
|
|
|
49
54
|
1. **Read Configuration:** Load `.torusguard/config/torusguard.json`; extract stack, version, and enabled rule count.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Evidence sufficiency verification, live disk line match audit, and finding score refinement.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: validator
|
|
6
6
|
lifecycle-phase: Phase 3a (Evidence Verification)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-verify
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/finding_scorer.py
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -44,6 +45,10 @@ Inspect finding records and evidence integrity before verification:
|
|
|
44
45
|
|
|
45
46
|
---
|
|
46
47
|
|
|
48
|
+
## Living Report Invariant
|
|
49
|
+
- Confirmed evidence sufficiency transitions findings in `security_report.md` to `VERIFIED 🟠`.
|
|
50
|
+
- False positives transition to `FALSE POSITIVE ⚪`.
|
|
51
|
+
|
|
47
52
|
## Execution Steps
|
|
48
53
|
|
|
49
54
|
1. **Locate Target Findings:** Load active findings from latest run directory.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Authorized HTTP probing, token redaction, transparent audit header injection, and replay trace capture.
|
|
3
3
|
tools: Read, Grep, Glob, Bash, Write
|
|
4
|
-
version:
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
agent: validator
|
|
6
6
|
lifecycle-phase: Phase 3b (Runtime Web Validation)
|
|
7
7
|
required-skills:
|
|
8
8
|
- torusguard-web-validate
|
|
9
9
|
scripts-binding:
|
|
10
|
+
- .torusguard/scripts/report_sync.py
|
|
10
11
|
- .torusguard/scripts/safety_gate.py
|
|
11
12
|
---
|
|
12
13
|
|
|
@@ -1,48 +1,84 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-apply
|
|
3
|
-
description: Apply governed remediation patches to disk with pre-apply rollback snapshots and Human Gate validation.
|
|
4
|
-
version:
|
|
3
|
+
description: Apply governed remediation patches to disk with pre-apply rollback snapshots and Human Gate validation via CLI or AI Agent.
|
|
4
|
+
version: 1.3.5
|
|
5
5
|
workflow: .torusguard/workflows/apply.md
|
|
6
|
-
tools: Read, Grep, Glob,
|
|
6
|
+
tools: Read, Grep, Glob, Write, replace_file_content, run_command
|
|
7
7
|
scripts-binding:
|
|
8
|
-
- .torusguard/scripts/
|
|
9
|
-
- .torusguard/scripts/
|
|
8
|
+
- .torusguard/scripts/report_sync.py
|
|
9
|
+
- .torusguard/scripts/apply_runner.py
|
|
10
|
+
- .torusguard/scripts/term_ui.py
|
|
11
|
+
- .torusguard/scripts/memory_engine.py
|
|
10
12
|
---
|
|
11
13
|
|
|
12
14
|
# TorusGuard Apply — Governed Patch Application & Rollback Snapshot
|
|
13
15
|
|
|
14
16
|
## Objective
|
|
15
|
-
Safely apply approved remediation bundles to disk source files,
|
|
17
|
+
Safely apply approved remediation bundles to disk source files, creating an automated byte-for-byte pre-apply backup snapshot (`.bak`) in `.torusguard/snapshots/<run_id>/`, asserting syntax validity, and distilling passing patterns into Golden Fix Recipes.
|
|
16
18
|
|
|
17
19
|
---
|
|
18
20
|
|
|
19
|
-
## Execution
|
|
21
|
+
## Two Execution Modes
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
23
|
+
### Mode A: Automated CLI Execution (Interactive or Non-Interactive)
|
|
24
|
+
Run the governed patch applier from your terminal:
|
|
25
|
+
```bash
|
|
26
|
+
# Interactive Human Gate review (prompts for each patch: [y]es / [n]o / [a]ll / [q]uit)
|
|
27
|
+
npx torusguard apply
|
|
28
|
+
|
|
29
|
+
# Non-interactive automated application
|
|
30
|
+
npx torusguard apply --yes
|
|
31
|
+
|
|
32
|
+
# Apply patches from a specific run ID
|
|
33
|
+
npx torusguard apply --run run-20260910-121618-audit --yes
|
|
34
|
+
|
|
35
|
+
# Emergency rollback from pre-apply snapshot
|
|
36
|
+
npx torusguard rollback
|
|
37
|
+
# or
|
|
38
|
+
npx torusguard apply --rollback
|
|
39
|
+
```
|
|
40
|
+
**Under the Hood:** Executes `python .torusguard/scripts/apply_runner.py`.
|
|
41
|
+
1. Reads candidate bundles from `.torusguard/runs/<run_id>/bundles/`.
|
|
42
|
+
2. Creates `.bak` snapshot in `.torusguard/snapshots/<run_id>/<rel_path>.bak`.
|
|
43
|
+
3. Performs line-aware replacement without corrupting concurrent modifications.
|
|
44
|
+
4. Distills the applied fix into a **Golden Fix Recipe** registered in `.torusguard/memory/patterns.json`.
|
|
45
|
+
5. Emits `diff_summary.md` and `apply_plan.md` in the run directory.
|
|
46
|
+
6. Displays pixel-perfect 75-column terminal cards.
|
|
47
|
+
|
|
48
|
+
### Mode B: In-Session AI Chat Agent Application
|
|
49
|
+
When applying patches directly within an AI chat session:
|
|
50
|
+
1. **Human Gate Confirmation:** Present the unified diff to the operator and request explicit approval before editing code.
|
|
51
|
+
2. **Pre-Apply Snapshot:** Ensure target file backup is created at `.torusguard/snapshots/<run_id>/<rel_path>.bak`.
|
|
52
|
+
3. **Execute Surgical Edit:** Use `replace_file_content` to apply only the approved lines. Strictly adhere to the formulated Ponytail diff.
|
|
53
|
+
4. **Syntax & Integrity Check:** Verify that the patched file is syntactically valid (e.g. `node --check <file>` or `python -m py_compile <file>`). If syntax fails, immediately restore from `.bak`.
|
|
54
|
+
5. **Memory Registration:** Update persistent memory events in `.torusguard/memory/events.json` with event `fix_applied`.
|
|
55
|
+
6. **Recommend Recheck:** Advise running `/torusguard recheck` or `npx torusguard recheck` to verify closure.
|
|
28
56
|
|
|
29
57
|
---
|
|
30
58
|
|
|
31
|
-
##
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
59
|
+
## Rollback Guarantee
|
|
60
|
+
If an applied patch introduces unexpected runtime behavior or breaks tests:
|
|
61
|
+
```bash
|
|
62
|
+
# Instant one-command rollback of the latest applied run:
|
|
63
|
+
npx torusguard rollback
|
|
64
|
+
|
|
65
|
+
# Or rollback a specific run:
|
|
66
|
+
npx torusguard rollback --run run-20260910-121618-audit
|
|
67
|
+
```
|
|
68
|
+
All affected files are restored byte-for-byte from `.torusguard/snapshots/<run_id>/`.
|
|
37
69
|
|
|
38
70
|
---
|
|
39
71
|
|
|
40
|
-
## Output Format
|
|
72
|
+
## Output Card Format
|
|
41
73
|
```markdown
|
|
42
|
-
🚀
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
|
|
74
|
+
### 🚀 TorusGuard Patch Applied Successfully
|
|
75
|
+
- **Target File:** `server/index.js:9`
|
|
76
|
+
- **Rule ID:** `TG-SEC-001` (Hardcoded JWT secret)
|
|
77
|
+
- **Ponytail Churn:** +1 / -1
|
|
78
|
+
- **Rollback Snapshot:** `.torusguard/snapshots/<run_id>/server/index.js.bak`
|
|
79
|
+
- **Golden Recipe:** Distilled into persistent memory
|
|
80
|
+
- **Next Step:** Run `npx torusguard recheck` or `/torusguard recheck` to verify closure
|
|
48
81
|
```
|
|
82
|
+
|
|
83
|
+
## Living Report Ground Truth
|
|
84
|
+
- Read `security_report.md` in the workspace root before taking any action. Update the relevant finding card after completing remediation.
|
|
@@ -1,75 +1,87 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: torusguard-audit
|
|
3
|
-
description: Static AST scanning,
|
|
4
|
-
version: 1.
|
|
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
|
|
5
5
|
workflow: .torusguard/workflows/audit.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
|
|
9
|
+
- .torusguard/scripts/audit_runner.py
|
|
10
|
+
- .torusguard/scripts/term_ui.py
|
|
8
11
|
- .torusguard/scripts/finding_scorer.py
|
|
9
|
-
- .torusguard/scripts/run_manager.py
|
|
10
12
|
---
|
|
11
13
|
|
|
12
|
-
# TorusGuard Audit — Static Code Analysis
|
|
14
|
+
# TorusGuard Audit — Static Code Security Analysis
|
|
13
15
|
|
|
14
16
|
## Objective
|
|
15
|
-
Execute static AST analysis,
|
|
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.
|
|
16
18
|
|
|
17
19
|
---
|
|
18
20
|
|
|
19
|
-
## Execution
|
|
21
|
+
## Two Execution Modes
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
- `TG-DB-*`: Unscoped tenant queries (`Model.get(id=id)`).
|
|
27
|
-
- `TG-AUTH-*`: Insecure cookies, open CORS.
|
|
28
|
-
- `TG-CLIENT-*`: Client bundle secret leaks.
|
|
29
|
-
4. **Stable Fingerprinting:** Compute SHA-256 hash of surrounding AST context.
|
|
30
|
-
5. **Root-Cause Clustering:** Group findings by causal sink (`cluster-tenant-isolation`).
|
|
31
|
-
6. **Scoring:** Calculate 0–100 score via `finding_scorer.py` (applies memory boost/suppression).
|
|
32
|
-
7. **Write Artifacts:** Save `findings.json` and sync findings to memory engine.
|
|
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
|
|
33
28
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
## Confidence Scoring Rubric
|
|
37
|
-
- **1. Evidence (35):** AST flow (35), regex sink (20), heuristic (10).
|
|
38
|
-
- **2. Reproduction (25):** Automated test (25), simulated (15), hypothesis (0).
|
|
39
|
-
- **3. Corroboration (15):** >=3 files (15), 2 files (10), single (5).
|
|
40
|
-
- **4. Environment (15):** Explicit route (15), ambiguous (8), unknown (0).
|
|
41
|
-
- **5. Review Status (10):** Human confirmed (10), agent verified (5), auto (0).
|
|
42
|
-
- **Memory Modifier:** False positive (-30), regression (+15), recurring (+10).
|
|
43
|
-
- **Bands:** 90–100 (`Confirmed`), 70–89 (`High`), 50–69 (`Medium`), <50 (`Review`).
|
|
29
|
+
# Scan specific directory or example app
|
|
30
|
+
npx torusguard audit ./examples/vulnerable-react-express
|
|
44
31
|
|
|
45
|
-
|
|
32
|
+
# Include test fixtures and spec directories
|
|
33
|
+
npx torusguard audit --include-tests
|
|
46
34
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
### [TG-DB-004] Missing Tenant Scoping in /invoices/
|
|
50
|
-
- **Severity**: High | **Confidence**: 90/100 (Confirmed) | **Memory Boost**: +10
|
|
51
|
-
- **File**: `views.py:42` | **Cluster**: `cluster-tenant-isolation`
|
|
52
|
-
- **Remediation**: Apply `.filter(tenant=request.user.tenant)`.
|
|
35
|
+
# Output machine-readable JSON
|
|
36
|
+
npx torusguard audit --json
|
|
53
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`.
|
|
54
59
|
|
|
55
60
|
---
|
|
56
61
|
|
|
57
|
-
##
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
-
|
|
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`) |
|
|
61
71
|
|
|
62
72
|
---
|
|
63
73
|
|
|
64
|
-
## Output Format
|
|
74
|
+
## Output Card Format
|
|
65
75
|
```markdown
|
|
66
|
-
🛡️
|
|
67
|
-
- Run ID
|
|
68
|
-
-
|
|
69
|
-
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
Next: Run `/torusguard harden` to formulate surgical fixes.
|
|
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`
|
|
75
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:
|
|
4
|
+
version: 1.3.5
|
|
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.
|