torusguard 1.0.0 → 1.3.1

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.
Files changed (411) hide show
  1. package/.torusguard/.manifest.json +196 -78
  2. package/.torusguard/references/csharp-security.md +41 -0
  3. package/.torusguard/references/go-security.md +41 -0
  4. package/.torusguard/references/java-security.md +40 -0
  5. package/.torusguard/references/polyglot-security-matrix.md +25 -0
  6. package/.torusguard/references/rust-security.md +40 -0
  7. package/.torusguard/rules/README.md +93 -62
  8. package/.torusguard/rules/TG-AUTH-001-weak-password-storage.md +103 -0
  9. package/.torusguard/rules/TG-AUTH-002-client-only-authorization.md +85 -0
  10. package/.torusguard/rules/TG-AUTH-003-missing-object-authorization.md +85 -0
  11. package/.torusguard/rules/TG-AUTH-004-insecure-session-cookie.md +96 -0
  12. package/.torusguard/rules/TG-AUTH-005-unsafe-password-reset.md +104 -0
  13. package/.torusguard/rules/TG-CLIENT-001-public-production-source-maps.md +102 -0
  14. package/.torusguard/rules/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  15. package/.torusguard/rules/TG-DB-001-frontend-database-query.md +83 -0
  16. package/.torusguard/rules/TG-DB-002-privileged-database-credential.md +86 -0
  17. package/.torusguard/rules/TG-DB-003-frontend-admin-sdk.md +91 -0
  18. package/.torusguard/rules/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  19. package/.torusguard/rules/TG-INPUT-001-missing-server-validation.md +98 -0
  20. package/.torusguard/rules/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  21. package/.torusguard/rules/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  22. package/.torusguard/rules/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  23. package/.torusguard/rules/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  24. package/.torusguard/rules/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  25. package/.torusguard/rules/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  26. package/.torusguard/rules/TG-PLATFORM-002-missing-security-headers.md +95 -0
  27. package/.torusguard/rules/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  28. package/.torusguard/rules/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  29. package/.torusguard/rules/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  30. package/.torusguard/rules/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  31. package/.torusguard/rules/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  32. package/.torusguard/rules/TG-SEC-001-hardcoded-secrets.md +83 -0
  33. package/.torusguard/rules/TG-SEC-002-public-environment-secrets.md +83 -0
  34. package/.torusguard/rules/TG-SEC-003-tracked-env-file.md +79 -0
  35. package/.torusguard/rules/TG-SEC-004-sensitive-logging.md +83 -0
  36. package/.torusguard/rules/active/TG-AUTH-001-weak-password-storage.md +103 -0
  37. package/.torusguard/rules/active/TG-AUTH-002-client-only-authorization.md +85 -0
  38. package/.torusguard/rules/active/TG-AUTH-003-missing-object-authorization.md +85 -0
  39. package/.torusguard/rules/active/TG-AUTH-004-insecure-session-cookie.md +96 -0
  40. package/.torusguard/rules/active/TG-AUTH-005-unsafe-password-reset.md +104 -0
  41. package/.torusguard/rules/active/TG-CLIENT-001-public-production-source-maps.md +102 -0
  42. package/.torusguard/rules/active/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  43. package/.torusguard/rules/active/TG-DB-001-frontend-database-query.md +83 -0
  44. package/.torusguard/rules/active/TG-DB-002-privileged-database-credential.md +86 -0
  45. package/.torusguard/rules/active/TG-DB-003-frontend-admin-sdk.md +91 -0
  46. package/.torusguard/rules/active/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  47. package/.torusguard/rules/active/TG-INPUT-001-missing-server-validation.md +98 -0
  48. package/.torusguard/rules/active/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  49. package/.torusguard/rules/active/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  50. package/.torusguard/rules/active/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  51. package/.torusguard/rules/active/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  52. package/.torusguard/rules/active/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  53. package/.torusguard/rules/active/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  54. package/.torusguard/rules/active/TG-PLATFORM-002-missing-security-headers.md +95 -0
  55. package/.torusguard/rules/active/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  56. package/.torusguard/rules/active/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  57. package/.torusguard/rules/active/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  58. package/.torusguard/rules/active/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  59. package/.torusguard/rules/active/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  60. package/.torusguard/rules/active/TG-SEC-001-hardcoded-secrets.md +83 -0
  61. package/.torusguard/rules/active/TG-SEC-002-public-environment-secrets.md +83 -0
  62. package/.torusguard/rules/active/TG-SEC-003-tracked-env-file.md +79 -0
  63. package/.torusguard/rules/active/TG-SEC-004-sensitive-logging.md +83 -0
  64. package/.torusguard/rules/agent/TG-AGENT-001-prompt-injection-system-context.md +56 -0
  65. package/.torusguard/rules/agent/TG-AGENT-002-unsafe-tool-dispatch-unsandboxed-execution.md +68 -0
  66. package/.torusguard/rules/agent/TG-AGENT-003-broad-mcp-tool-scoping.md +53 -0
  67. package/.torusguard/rules/agent/TG-AGENT-004-persistent-memory-cross-session-leakage.md +67 -0
  68. package/.torusguard/rules/authorization/TG-AUTH-006-mass-assignment.md +70 -0
  69. package/.torusguard/rules/authorization/TG-AUTH-007-missing-property-level-authorization.md +71 -0
  70. package/.torusguard/rules/authorization/TG-AUTH-008-untrusted-role-header-injection.md +112 -0
  71. package/.torusguard/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +37 -0
  72. package/.torusguard/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +37 -0
  73. package/.torusguard/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +37 -0
  74. package/.torusguard/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +37 -0
  75. package/.torusguard/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +37 -0
  76. package/.torusguard/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +37 -0
  77. package/.torusguard/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +37 -0
  78. package/.torusguard/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +37 -0
  79. package/.torusguard/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +37 -0
  80. package/.torusguard/rules/custom/.gitkeep +1 -0
  81. package/.torusguard/rules/custom/README.md +30 -0
  82. package/.torusguard/rules/edge/TG-EDGE-001-serverless-global-state-leak.md +83 -0
  83. package/.torusguard/rules/edge/TG-EDGE-003-aws-lambda-ephemeral-cold-start.md +76 -0
  84. package/.torusguard/rules/graphql/TG-GQL-001-missing-query-depth-or-complexity-limits.md +64 -0
  85. package/.torusguard/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +37 -0
  86. package/.torusguard/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +37 -0
  87. package/.torusguard/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +37 -0
  88. package/.torusguard/rules/secrets/TG-SEC-005-secret-in-git-history.md +37 -0
  89. package/.torusguard/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +37 -0
  90. package/.torusguard/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +37 -0
  91. package/.torusguard/rules/ssrf/TG-SSRF-001-user-controlled-server-side-url-fetch.md +68 -0
  92. package/.torusguard/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +37 -0
  93. package/.torusguard/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +37 -0
  94. package/.torusguard/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +37 -0
  95. package/.torusguard/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +37 -0
  96. package/.torusguard/rules/supply-chain/TG-SUPPLY-002-vulnerable-dependency-review-missing.md +94 -0
  97. package/.torusguard/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +37 -0
  98. package/.torusguard/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +37 -0
  99. package/.torusguard/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +37 -0
  100. package/.torusguard/rules/supply-chain/TG-SUPPLY-006-container-build-secret-persistence.md +61 -0
  101. package/.torusguard/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +37 -0
  102. package/.torusguard/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +37 -0
  103. package/.torusguard/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +37 -0
  104. package/.torusguard/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +37 -0
  105. package/.torusguard/rules/websocket/TG-WS-001-unauthenticated-websocket-handshake.md +82 -0
  106. package/.torusguard/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +37 -0
  107. package/.torusguard/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +37 -0
  108. package/.torusguard/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +37 -0
  109. package/.torusguard/runs/report-latest.html +370 -0
  110. package/.torusguard/runs/run-20260908-112648-audit/findings.json +1520 -0
  111. package/.torusguard/runs/run-20260908-112648-audit/findings.md +560 -0
  112. package/.torusguard/runs/run-20260908-112648-audit/manifest.json +12 -0
  113. package/.torusguard/runs/run-20260908-112648-audit/summary.md +5 -0
  114. package/.torusguard/runs/run-20260908-112722-audit/findings.json +1520 -0
  115. package/.torusguard/runs/run-20260908-112722-audit/findings.md +560 -0
  116. package/.torusguard/runs/run-20260908-112722-audit/manifest.json +12 -0
  117. package/.torusguard/runs/run-20260908-112722-audit/summary.md +5 -0
  118. package/.torusguard/runs/run-20260908-113004-audit/findings.json +1520 -0
  119. package/.torusguard/runs/run-20260908-113004-audit/findings.md +560 -0
  120. package/.torusguard/runs/run-20260908-113004-audit/manifest.json +12 -0
  121. package/.torusguard/runs/run-20260908-113004-audit/summary.md +5 -0
  122. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  123. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  124. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  125. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  126. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  127. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  128. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  129. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  130. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  131. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-334-cb819d/metadata.json +15 -0
  132. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-334-cb819d/minimal_patch_plan.md +21 -0
  133. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-334-cb819d/patch.diff +9 -0
  134. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  135. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  136. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  137. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  138. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  139. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  140. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  141. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  142. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  143. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  144. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  145. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  146. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-232-1b45d1/metadata.json +15 -0
  147. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-232-1b45d1/minimal_patch_plan.md +21 -0
  148. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-232-1b45d1/patch.diff +9 -0
  149. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  150. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  151. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  152. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  153. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  154. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  155. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  156. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  157. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  158. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  159. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  160. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  161. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  162. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  163. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  164. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  165. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  166. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  167. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  168. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  169. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  170. package/.torusguard/runs/run-20260908-113127-audit/findings.json +1520 -0
  171. package/.torusguard/runs/run-20260908-113127-audit/findings.md +560 -0
  172. package/.torusguard/runs/run-20260908-113127-audit/manifest.json +13 -0
  173. package/.torusguard/runs/run-20260908-113127-audit/remediation.md +262 -0
  174. package/.torusguard/runs/run-20260908-113127-audit/summary.md +5 -0
  175. package/.torusguard/runs/run-20260908-115240-audit/apply_plan.md +6 -0
  176. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  177. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  178. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  179. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  180. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  181. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  182. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  183. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  184. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  185. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-334-cb819d/metadata.json +15 -0
  186. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-334-cb819d/minimal_patch_plan.md +21 -0
  187. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-334-cb819d/patch.diff +9 -0
  188. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  189. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  190. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  191. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  192. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  193. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  194. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  195. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  196. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  197. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  198. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  199. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  200. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-232-1b45d1/metadata.json +15 -0
  201. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-232-1b45d1/minimal_patch_plan.md +21 -0
  202. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-232-1b45d1/patch.diff +9 -0
  203. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  204. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  205. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  206. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-platform-001-168-5027cb/metadata.json +15 -0
  207. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-platform-001-168-5027cb/minimal_patch_plan.md +21 -0
  208. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-platform-001-168-5027cb/patch.diff +9 -0
  209. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  210. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  211. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  212. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  213. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  214. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  215. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  216. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  217. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  218. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  219. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  220. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  221. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  222. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  223. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  224. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  225. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  226. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  227. package/.torusguard/runs/run-20260908-115240-audit/diff_summary.md +221 -0
  228. package/.torusguard/runs/run-20260908-115240-audit/findings.json +1553 -0
  229. package/.torusguard/runs/run-20260908-115240-audit/findings.md +572 -0
  230. package/.torusguard/runs/run-20260908-115240-audit/manifest.json +14 -0
  231. package/.torusguard/runs/run-20260908-115240-audit/recheck.md +91 -0
  232. package/.torusguard/runs/run-20260908-115240-audit/remediation.md +278 -0
  233. package/.torusguard/runs/run-20260908-115240-audit/summary.md +5 -0
  234. package/.torusguard/schemas/golden-recipe.schema.json +75 -0
  235. package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  236. package/.torusguard/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
  237. package/.torusguard/scripts/__pycache__/memory_engine.cpython-311.pyc +0 -0
  238. package/.torusguard/scripts/__pycache__/monorepo_detector.cpython-311.pyc +0 -0
  239. package/.torusguard/scripts/__pycache__/run_manager.cpython-311.pyc +0 -0
  240. package/.torusguard/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
  241. package/.torusguard/scripts/apply_runner.py +332 -0
  242. package/.torusguard/scripts/audit_runner.py +550 -0
  243. package/.torusguard/scripts/diff_guard.py +183 -8
  244. package/.torusguard/scripts/finding_scorer.py +91 -5
  245. package/.torusguard/scripts/harden_runner.py +353 -0
  246. package/.torusguard/scripts/html_reporter.py +643 -0
  247. package/.torusguard/scripts/manifest_builder.py +7 -5
  248. package/.torusguard/scripts/memory_engine.py +525 -99
  249. package/.torusguard/scripts/monorepo_detector.py +123 -10
  250. package/.torusguard/scripts/recheck_runner.py +221 -0
  251. package/.torusguard/scripts/recipes_runner.py +130 -0
  252. package/.torusguard/scripts/rules_sync.py +321 -0
  253. package/.torusguard/scripts/run_manager.py +17 -5
  254. package/.torusguard/scripts/stack_detect.py +458 -26
  255. package/.torusguard/skills/torusguard/SKILL.md +42 -42
  256. package/.torusguard/skills/torusguard/references/csharp-security.md +41 -0
  257. package/.torusguard/skills/torusguard/references/go-security.md +41 -0
  258. package/.torusguard/skills/torusguard/references/java-security.md +40 -0
  259. package/.torusguard/skills/torusguard/references/polyglot-security-matrix.md +25 -0
  260. package/.torusguard/skills/torusguard/references/rust-security.md +40 -0
  261. package/.torusguard/snapshots/run-20260908-115240-audit/examples/vulnerable-react-express/client/src/App.jsx.bak +63 -0
  262. package/.torusguard/snapshots/run-20260908-115240-audit/examples/vulnerable-react-express/server/index.js.bak +82 -0
  263. package/.torusguard/snapshots/run-20260908-115240-audit/harness/engine/fixture_manager.py.bak +245 -0
  264. package/.torusguard/snapshots/run-20260908-115240-audit/harness/master_validation.py.bak +698 -0
  265. package/.torusguard/snapshots/run-20260908-115240-audit/harness/runner.py.bak +551 -0
  266. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_e2e.py.bak +498 -0
  267. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_qa_v0_6_0.py.bak +572 -0
  268. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v0_6_1_scale.py.bak +371 -0
  269. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v0_6_2_modern_stacks.py.bak +462 -0
  270. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v0_6_3_hardening.py.bak +444 -0
  271. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v1_0_0_memory.py.bak +302 -0
  272. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v1_1_0_advanced_memory.py.bak +342 -0
  273. package/.torusguard/snapshots/run-20260908-115240-audit/skills/torusguard/payload/scripts/harden_runner.py.bak +353 -0
  274. package/.torusguard/snapshots/run-20260908-115240-audit/tests/test_v0_6_0_governed_remediation.py.bak +353 -0
  275. package/README.md +344 -410
  276. package/bin/torusguard.js +195 -21
  277. package/package.json +1 -1
  278. package/skills/torusguard/SKILL.md +42 -42
  279. package/skills/torusguard/bootstrap.py +149 -70
  280. package/skills/torusguard/payload/.manifest.json +196 -78
  281. package/skills/torusguard/payload/references/csharp-security.md +41 -0
  282. package/skills/torusguard/payload/references/go-security.md +41 -0
  283. package/skills/torusguard/payload/references/java-security.md +40 -0
  284. package/skills/torusguard/payload/references/polyglot-security-matrix.md +25 -0
  285. package/skills/torusguard/payload/references/rust-security.md +40 -0
  286. package/skills/torusguard/payload/rules/README.md +93 -62
  287. package/skills/torusguard/payload/rules/TG-AUTH-001-weak-password-storage.md +103 -0
  288. package/skills/torusguard/payload/rules/TG-AUTH-002-client-only-authorization.md +85 -0
  289. package/skills/torusguard/payload/rules/TG-AUTH-003-missing-object-authorization.md +85 -0
  290. package/skills/torusguard/payload/rules/TG-AUTH-004-insecure-session-cookie.md +96 -0
  291. package/skills/torusguard/payload/rules/TG-AUTH-005-unsafe-password-reset.md +104 -0
  292. package/skills/torusguard/payload/rules/TG-CLIENT-001-public-production-source-maps.md +102 -0
  293. package/skills/torusguard/payload/rules/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  294. package/skills/torusguard/payload/rules/TG-DB-001-frontend-database-query.md +83 -0
  295. package/skills/torusguard/payload/rules/TG-DB-002-privileged-database-credential.md +86 -0
  296. package/skills/torusguard/payload/rules/TG-DB-003-frontend-admin-sdk.md +91 -0
  297. package/skills/torusguard/payload/rules/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  298. package/skills/torusguard/payload/rules/TG-INPUT-001-missing-server-validation.md +98 -0
  299. package/skills/torusguard/payload/rules/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  300. package/skills/torusguard/payload/rules/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  301. package/skills/torusguard/payload/rules/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  302. package/skills/torusguard/payload/rules/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  303. package/skills/torusguard/payload/rules/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  304. package/skills/torusguard/payload/rules/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  305. package/skills/torusguard/payload/rules/TG-PLATFORM-002-missing-security-headers.md +95 -0
  306. package/skills/torusguard/payload/rules/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  307. package/skills/torusguard/payload/rules/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  308. package/skills/torusguard/payload/rules/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  309. package/skills/torusguard/payload/rules/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  310. package/skills/torusguard/payload/rules/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  311. package/skills/torusguard/payload/rules/TG-SEC-001-hardcoded-secrets.md +83 -0
  312. package/skills/torusguard/payload/rules/TG-SEC-002-public-environment-secrets.md +83 -0
  313. package/skills/torusguard/payload/rules/TG-SEC-003-tracked-env-file.md +79 -0
  314. package/skills/torusguard/payload/rules/TG-SEC-004-sensitive-logging.md +83 -0
  315. package/skills/torusguard/payload/rules/active/TG-AUTH-001-weak-password-storage.md +103 -0
  316. package/skills/torusguard/payload/rules/active/TG-AUTH-002-client-only-authorization.md +85 -0
  317. package/skills/torusguard/payload/rules/active/TG-AUTH-003-missing-object-authorization.md +85 -0
  318. package/skills/torusguard/payload/rules/active/TG-AUTH-004-insecure-session-cookie.md +96 -0
  319. package/skills/torusguard/payload/rules/active/TG-AUTH-005-unsafe-password-reset.md +104 -0
  320. package/skills/torusguard/payload/rules/active/TG-CLIENT-001-public-production-source-maps.md +102 -0
  321. package/skills/torusguard/payload/rules/active/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  322. package/skills/torusguard/payload/rules/active/TG-DB-001-frontend-database-query.md +83 -0
  323. package/skills/torusguard/payload/rules/active/TG-DB-002-privileged-database-credential.md +86 -0
  324. package/skills/torusguard/payload/rules/active/TG-DB-003-frontend-admin-sdk.md +91 -0
  325. package/skills/torusguard/payload/rules/active/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  326. package/skills/torusguard/payload/rules/active/TG-INPUT-001-missing-server-validation.md +98 -0
  327. package/skills/torusguard/payload/rules/active/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  328. package/skills/torusguard/payload/rules/active/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  329. package/skills/torusguard/payload/rules/active/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  330. package/skills/torusguard/payload/rules/active/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  331. package/skills/torusguard/payload/rules/active/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  332. package/skills/torusguard/payload/rules/active/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  333. package/skills/torusguard/payload/rules/active/TG-PLATFORM-002-missing-security-headers.md +95 -0
  334. package/skills/torusguard/payload/rules/active/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  335. package/skills/torusguard/payload/rules/active/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  336. package/skills/torusguard/payload/rules/active/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  337. package/skills/torusguard/payload/rules/active/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  338. package/skills/torusguard/payload/rules/active/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  339. package/skills/torusguard/payload/rules/active/TG-SEC-001-hardcoded-secrets.md +83 -0
  340. package/skills/torusguard/payload/rules/active/TG-SEC-002-public-environment-secrets.md +83 -0
  341. package/skills/torusguard/payload/rules/active/TG-SEC-003-tracked-env-file.md +79 -0
  342. package/skills/torusguard/payload/rules/active/TG-SEC-004-sensitive-logging.md +83 -0
  343. package/skills/torusguard/payload/rules/agent/TG-AGENT-001-prompt-injection-system-context.md +56 -0
  344. package/skills/torusguard/payload/rules/agent/TG-AGENT-002-unsafe-tool-dispatch-unsandboxed-execution.md +68 -0
  345. package/skills/torusguard/payload/rules/agent/TG-AGENT-003-broad-mcp-tool-scoping.md +53 -0
  346. package/skills/torusguard/payload/rules/agent/TG-AGENT-004-persistent-memory-cross-session-leakage.md +67 -0
  347. package/skills/torusguard/payload/rules/authorization/TG-AUTH-006-mass-assignment.md +70 -0
  348. package/skills/torusguard/payload/rules/authorization/TG-AUTH-007-missing-property-level-authorization.md +71 -0
  349. package/skills/torusguard/payload/rules/authorization/TG-AUTH-008-untrusted-role-header-injection.md +112 -0
  350. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +37 -0
  351. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +37 -0
  352. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +37 -0
  353. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +37 -0
  354. package/skills/torusguard/payload/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +37 -0
  355. package/skills/torusguard/payload/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +37 -0
  356. package/skills/torusguard/payload/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +37 -0
  357. package/skills/torusguard/payload/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +37 -0
  358. package/skills/torusguard/payload/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +37 -0
  359. package/skills/torusguard/payload/rules/custom/.gitkeep +1 -0
  360. package/skills/torusguard/payload/rules/custom/README.md +30 -0
  361. package/skills/torusguard/payload/rules/edge/TG-EDGE-001-serverless-global-state-leak.md +83 -0
  362. package/skills/torusguard/payload/rules/edge/TG-EDGE-003-aws-lambda-ephemeral-cold-start.md +76 -0
  363. package/skills/torusguard/payload/rules/graphql/TG-GQL-001-missing-query-depth-or-complexity-limits.md +64 -0
  364. package/skills/torusguard/payload/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +37 -0
  365. package/skills/torusguard/payload/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +37 -0
  366. package/skills/torusguard/payload/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +37 -0
  367. package/skills/torusguard/payload/rules/secrets/TG-SEC-005-secret-in-git-history.md +37 -0
  368. package/skills/torusguard/payload/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +37 -0
  369. package/skills/torusguard/payload/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +37 -0
  370. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-001-user-controlled-server-side-url-fetch.md +68 -0
  371. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +37 -0
  372. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +37 -0
  373. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +37 -0
  374. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +37 -0
  375. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-002-vulnerable-dependency-review-missing.md +94 -0
  376. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +37 -0
  377. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +37 -0
  378. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +37 -0
  379. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-006-container-build-secret-persistence.md +61 -0
  380. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +37 -0
  381. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +37 -0
  382. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +37 -0
  383. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +37 -0
  384. package/skills/torusguard/payload/rules/websocket/TG-WS-001-unauthenticated-websocket-handshake.md +82 -0
  385. package/skills/torusguard/payload/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +37 -0
  386. package/skills/torusguard/payload/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +37 -0
  387. package/skills/torusguard/payload/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +37 -0
  388. package/skills/torusguard/payload/schemas/golden-recipe.schema.json +75 -0
  389. package/skills/torusguard/payload/scripts/apply_runner.py +332 -0
  390. package/skills/torusguard/payload/scripts/audit_runner.py +550 -0
  391. package/skills/torusguard/payload/scripts/diff_guard.py +183 -8
  392. package/skills/torusguard/payload/scripts/finding_scorer.py +91 -5
  393. package/skills/torusguard/payload/scripts/harden_runner.py +353 -0
  394. package/skills/torusguard/payload/scripts/html_reporter.py +643 -0
  395. package/skills/torusguard/payload/scripts/manifest_builder.py +7 -5
  396. package/skills/torusguard/payload/scripts/memory_engine.py +525 -99
  397. package/skills/torusguard/payload/scripts/monorepo_detector.py +123 -10
  398. package/skills/torusguard/payload/scripts/recheck_runner.py +221 -0
  399. package/skills/torusguard/payload/scripts/recipes_runner.py +130 -0
  400. package/skills/torusguard/payload/scripts/rules_sync.py +321 -0
  401. package/skills/torusguard/payload/scripts/run_manager.py +17 -5
  402. package/skills/torusguard/payload/scripts/stack_detect.py +458 -26
  403. package/skills/torusguard/payload/skills/torusguard/SKILL.md +42 -42
  404. package/skills/torusguard/payload/skills/torusguard/bootstrap.py +149 -70
  405. package/skills/torusguard/payload/skills/torusguard/references/csharp-security.md +41 -0
  406. package/skills/torusguard/payload/skills/torusguard/references/go-security.md +41 -0
  407. package/skills/torusguard/payload/skills/torusguard/references/java-security.md +40 -0
  408. package/skills/torusguard/payload/skills/torusguard/references/polyglot-security-matrix.md +25 -0
  409. package/skills/torusguard/payload/skills/torusguard/references/rust-security.md +40 -0
  410. package/.torusguard/scripts/__pycache__/diff_guard.cpython-311.pyc +0 -0
  411. package/skills/torusguard/__pycache__/bootstrap.cpython-311.pyc +0 -0
@@ -0,0 +1,37 @@
1
+ # TG-SSRF-004: Unbounded Outbound Request
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-SUPPLY-001: Missing or Ignored Dependency Lockfile
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,94 @@
1
+ # TG-SUPPLY-002: Vulnerable Dependency Review Missing
2
+
3
+ ## Severity
4
+ High by default. Escalate to Critical when dependencies with known, weaponized remote code execution (RCE) or authentication bypass CVEs are identified.
5
+
6
+ ## Applies To
7
+ - Node.js / JavaScript / TypeScript (`package.json`, `package-lock.json`, `yarn.lock`, `pnpm-lock.yaml`)
8
+ - Python (`requirements.txt`, `pyproject.toml`, `Pipfile.lock`, `poetry.lock`)
9
+
10
+ ## Why It Matters
11
+ Using third-party open-source packages with known security vulnerabilities exposes production web applications to automated supply-chain exploits, supply-chain poisoning, prototype pollution, cross-site scripting (XSS), and arbitrary code execution.
12
+
13
+ However, **automated bulk repair commands like `npm audit fix --force` introduce severe supply-chain regression hazards**:
14
+ - `npm audit fix --force` blindly upgrades packages across **major breaking version jumps** (e.g., Express 4 $\rightarrow$ 5, MongoDB Driver v2 $\rightarrow$ v6, Webpack 4 $\rightarrow$ 5).
15
+ - These breaking API changes break production routing, change database connection options, and crash running services.
16
+ - Remediation must be deliberate, selective, and verified through regression suites.
17
+
18
+ ## What TorusGuard Looks For
19
+ 1. Unpinned dependency versions or wildcards (`*`, `latest`) in manifests.
20
+ 2. Missing automated vulnerability auditing steps (`npm audit`, `pip-audit`) in CI/CD workflows.
21
+ 3. Automated fix scripts executing blind `--force` flags without test gates.
22
+ 4. Dependencies flagged with CVEs exceeding acceptable severity thresholds.
23
+
24
+ ## Unsafe Example
25
+ ```bash
26
+ # UNSAFE: Blind automated fix forcing breaking major version upgrades
27
+ npm audit fix --force
28
+ ```
29
+
30
+ ```json
31
+ // UNSAFE: package.json with floating wildcard versions
32
+ {
33
+ "dependencies": {
34
+ "express": "*",
35
+ "jsonwebtoken": "^8.0.0"
36
+ },
37
+ "scripts": {
38
+ "audit-fix": "npm audit fix --force"
39
+ }
40
+ }
41
+ ```
42
+
43
+ ## Safe Example
44
+ ```bash
45
+ # SAFE: Apply non-breaking minor and patch fixes only
46
+ npm audit fix
47
+
48
+ # For dependencies requiring major version bumps to patch CVEs:
49
+ # 1. Inspect breaking changes manually:
50
+ npm audit --json
51
+
52
+ # 2. Upgrade specific package selectively:
53
+ npm install jsonwebtoken@9.0.2
54
+
55
+ # 3. Execute regression test suite before merging:
56
+ npm test
57
+ ```
58
+
59
+ ```yaml
60
+ # SAFE: Continuous vulnerability scanning in CI workflow (.github/workflows/security.yml)
61
+ name: Dependency Security Audit
62
+ on: [push, pull_request]
63
+
64
+ jobs:
65
+ audit:
66
+ runs-on: ubuntu-latest
67
+ steps:
68
+ - uses: actions/checkout@v4
69
+ - name: Run Node Dependency Audit
70
+ run: npm audit --audit-level=high
71
+ - name: Run Python Dependency Audit
72
+ run: |
73
+ pip install pip-audit
74
+ pip-audit -r requirements.txt --strict
75
+ ```
76
+
77
+ ## Remediation
78
+ 1. **Never use `--force` in CI or production maintenance scripts:** Restrict automated remediation to `npm audit fix` (non-breaking minor/patch updates).
79
+ 2. **Selective Major Upgrades:** For vulnerabilities that require a major version jump, consult the upstream CHANGELOG, evaluate breaking API changes, and upgrade the single package explicitly.
80
+ 3. **Pin Exact Versions or Use Lockfiles:** Commit reproducible lockfiles (`package-lock.json`, `poetry.lock`, `requirements.txt`) to source control.
81
+ 4. **Automate in CI:** Integrate `npm audit` or `pip-audit` as a blocking pull request check for High and Critical severities.
82
+
83
+ ## Verification
84
+ - Run `npm audit` or `pip-audit` to confirm zero High/Critical unhandled CVEs.
85
+ - Confirm all existing unit and integration tests pass after any dependency update.
86
+ - Verify that `package-lock.json` changes reflect only intended, targeted packages.
87
+
88
+ ## False Positives and Exceptions
89
+ - Vulnerabilities located solely in development dependencies (`devDependencies`, e.g., local build tools, linters) that are never bundled into client or server production environments may be exempted with documented risk acceptance.
90
+
91
+ ## Related Rules
92
+ - `TG-SUPPLY-001`: Pinned Dependency Version Missing
93
+ - `TG-SUPPLY-003`: Container Build Secret Persistence
94
+ - `TG-SEC-001`: Hardcoded Secrets in Manifests
@@ -0,0 +1,37 @@
1
+ # TG-SUPPLY-003: Unsafe CI/CD Secret Exposure
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-SUPPLY-004: Unpinned CI Action
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-SUPPLY-005: Unsafe Dependency Install Script
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,61 @@
1
+ # TG-SUPPLY-006: Container Build Secret Persistence
2
+
3
+ ## Severity
4
+ High. Embedding credentials, tokens, or private SSH keys into intermediate container build layers exposes secrets in public registry images.
5
+
6
+ ## Applies To
7
+ - Dockerfiles, Containerfile, Docker Compose
8
+ - CI/CD Container Build Pipelines
9
+
10
+ ## Why It Matters
11
+ When `ARG`, `ENV`, or `COPY` directives are used to pass secrets into Docker builds:
12
+ 1. Every Docker layer is cached and preserved in the final image manifest.
13
+ 2. Even if a subsequent `RUN rm -rf /root/.ssh` is executed, the file remains fully recoverable using container layer extractors (`dive`, `docker history`).
14
+ 3. Deploying the image to public or shared registries inadvertently leaks production credentials.
15
+
16
+ ## What TorusGuard Looks For
17
+ 1. `ARG` or `ENV` variables with names matching `TOKEN`, `KEY`, `PASSWORD`, `SECRET`.
18
+ 2. Direct `COPY` of private SSH keys (`id_rsa`), `.env` files, or npm tokens (`.npmrc`) into build images.
19
+ 3. Multi-stage builds copying secret artifacts from builder stages without BuildKit secret mounts.
20
+
21
+ ## Unsafe Example
22
+ ```dockerfile
23
+ # UNSAFE: Passing GitHub token via build-arg leaves it in layer metadata
24
+ FROM node:20-alpine
25
+ ARG GITHUB_TOKEN
26
+ ENV GITHUB_TOKEN=$GITHUB_TOKEN
27
+
28
+ # Secrets remain in image history forever!
29
+ RUN npm install
30
+ ```
31
+
32
+ ## Safe Example
33
+ ```dockerfile
34
+ # SAFE: Using BuildKit secret mounts (never persisted to image layers)
35
+ # syntax=docker/dockerfile:1.4
36
+ FROM node:20-alpine AS builder
37
+
38
+ WORKDIR /app
39
+ COPY package*.json ./
40
+
41
+ # Secret is mounted ephemerally in RAM during the command and never written to disk
42
+ RUN --mount=type=secret,id=npmrc,target=/root/.npmrc \
43
+ npm ci --only=production
44
+
45
+ FROM node:20-alpine AS runner
46
+ WORKDIR /app
47
+ COPY --from=builder /app/node_modules ./node_modules
48
+ COPY . .
49
+
50
+ USER node
51
+ CMD ["node", "server.js"]
52
+ ```
53
+
54
+ ## Remediation
55
+ 1. **Use BuildKit Secret Mounts:** Replace `ARG` secrets with `RUN --mount=type=secret,id=my_secret`.
56
+ 2. **Multi-Stage Clean Separation:** Compile code in an unprivileged builder stage and copy strictly compiled runtime artifacts to the runner image.
57
+ 3. **Use `.dockerignore`:** Exclude `.env`, `.git`, `.npmrc`, and credentials from build context.
58
+
59
+ ## Related Rules
60
+ - `TG-SEC-001`: Hardcoded Secrets
61
+ - `TG-SUPPLY-002`: Vulnerable Dependency Review Missing
@@ -0,0 +1,37 @@
1
+ # TG-WEBHOOK-001: Missing Webhook Signature Verification
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-WEBHOOK-002: Replayable Webhook
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-WEBHOOK-003: Missing Webhook Idempotency
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-WEBHOOK-004: Unvalidated Webhook Event Type
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,82 @@
1
+ # TG-WS-001: Unauthenticated WebSocket Handshake
2
+
3
+ ## Severity
4
+ High. Accepting WebSocket upgrade handshakes without validating authentication cookies or Bearer tokens allows unauthenticated clients to establish persistent sockets and consume server resources.
5
+
6
+ ## Applies To
7
+ - `ws`, `Socket.io`, `fastapi.WebSocket`, `channels` (Django), `aiohttp`
8
+
9
+ ## Why It Matters
10
+ HTTP WebSocket upgrades (`Upgrade: websocket`) begin as standard HTTP requests. If authentication is omitted during the initial HTTP upgrade:
11
+ 1. Attackers can flood the server with unbounded persistent open TCP connections, exhausting socket file descriptors.
12
+ 2. If authorization is deferred to post-connect messages, unauthenticated clients can linger in memory indefinitely.
13
+ 3. Cross-site WebSocket hijacking (CSWSH) can occur if the `Origin` header is trusted blindly.
14
+
15
+ ## What TorusGuard Looks For
16
+ 1. WebSocket servers accepting the upgrade connection before validating session cookies, headers, or query tokens.
17
+ 2. Missing `Origin` header validation during handshake.
18
+ 3. Runtime probe: Attempting a WebSocket handshake without an `Authorization` header or session cookie; flagging if the connection status returns `101 Switching Protocols` instead of `401 Unauthorized`.
19
+
20
+ ## Unsafe Example
21
+ ```typescript
22
+ // UNSAFE: Accepting WebSocket upgrade without verifying session
23
+ import { WebSocketServer } from "ws";
24
+
25
+ const wss = new WebSocketServer({ port: 8080 });
26
+
27
+ wss.on("connection", (ws, req) => {
28
+ // Handshake already succeeded without verifying authentication!
29
+ ws.send("Welcome to real-time events");
30
+ });
31
+ ```
32
+
33
+ ## Safe Example
34
+ ```typescript
35
+ // SAFE: Validating authentication and origin during the HTTP upgrade
36
+ import http from "http";
37
+ import { WebSocketServer } from "ws";
38
+ import { verifyJwtToken } from "./auth";
39
+
40
+ const server = http.createServer();
41
+ const wss = new WebSocketServer({ noServer: true });
42
+
43
+ server.on("upgrade", (req, socket, head) => {
44
+ // 1. Verify Origin header
45
+ const origin = req.headers.origin;
46
+ if (origin !== "https://app.example.com") {
47
+ socket.write("HTTP/1.1 403 Forbidden\r\n\r\n");
48
+ socket.destroy();
49
+ return;
50
+ }
51
+
52
+ // 2. Authenticate token before completing WebSocket handshake
53
+ const token = req.headers["sec-websocket-protocol"] || req.headers.cookie;
54
+ const user = verifyJwtToken(token);
55
+ if (!user) {
56
+ socket.write("HTTP/1.1 401 Unauthorized\r\n\r\n");
57
+ socket.destroy();
58
+ return;
59
+ }
60
+
61
+ // 3. Complete upgrade only when authenticated
62
+ wss.handleUpgrade(req, socket, head, (ws) => {
63
+ wss.emit("connection", ws, req, user);
64
+ });
65
+ });
66
+ ```
67
+
68
+ ## Bounded Runtime Probe Protocol
69
+ When probing WebSocket endpoints under `/torusguard web-validate`:
70
+ 1. Dispatch an HTTP GET request with `Upgrade: websocket` and `Connection: Upgrade` headers **without authentication credentials**.
71
+ 2. Assert that the server returns `HTTP 401` or `HTTP 403` and terminates the socket.
72
+ 3. If the server returns `HTTP 101 Switching Protocols`, log a high-confidence finding for unauthenticated handshake.
73
+
74
+ ## Remediation
75
+ 1. **Authenticate on HTTP Upgrade:** Reject unauthenticated connections with standard HTTP 401/403 status codes before calling `handleUpgrade`.
76
+ 2. **Enforce Strict Origin Checking:** Validate that `req.headers.origin` matches your trusted application domain.
77
+ 3. **Set Connection Timeouts:** Automatically disconnect sockets that fail message-level handshakes within 10 seconds.
78
+
79
+ ## Related Rules
80
+ - `TG-WS-002`: Missing Channel-Level Authorization
81
+ - `TG-AUTH-004`: Insecure Session Cookie
82
+ - `TG-RATE-003`: Unbounded Resource Consumption
@@ -0,0 +1,37 @@
1
+ # TG-WS-002: Missing Channel-Level Authorization
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-WS-003: Unvalidated WebSocket Message
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001
@@ -0,0 +1,37 @@
1
+ # TG-WS-004: Unbounded WebSocket Connections
2
+
3
+ ## Severity
4
+ High by default. Raise to Critical when applicable.
5
+
6
+ ## Applies To
7
+ - Relevant endpoints and services
8
+
9
+ ## Why It Matters
10
+ Explaining the risk of this vulnerability.
11
+
12
+ ## What TorusGuard Looks For
13
+ - Specific code patterns or configurations
14
+
15
+ ## Unsafe Example
16
+ ```javascript
17
+ // Unsafe code example
18
+ ```
19
+
20
+ ## Safe Example
21
+ ```javascript
22
+ // Safe code example
23
+ ```
24
+
25
+ ## Remediation
26
+ 1. Step one
27
+ 2. Step two
28
+
29
+ ## Verification
30
+ - Test case 1
31
+ - Test case 2
32
+
33
+ ## False Positives and Exceptions
34
+ An exception requires documented review.
35
+
36
+ ## Related Rules
37
+ - TG-OTHER-001