torusguard 1.3.0 → 1.3.2

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 (378) hide show
  1. package/.torusguard/.manifest.json +113 -9
  2. package/.torusguard/rules/README.md +93 -62
  3. package/.torusguard/rules/TG-AUTH-001-weak-password-storage.md +103 -0
  4. package/.torusguard/rules/TG-AUTH-002-client-only-authorization.md +85 -0
  5. package/.torusguard/rules/TG-AUTH-003-missing-object-authorization.md +85 -0
  6. package/.torusguard/rules/TG-AUTH-004-insecure-session-cookie.md +96 -0
  7. package/.torusguard/rules/TG-AUTH-005-unsafe-password-reset.md +104 -0
  8. package/.torusguard/rules/TG-CLIENT-001-public-production-source-maps.md +102 -0
  9. package/.torusguard/rules/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  10. package/.torusguard/rules/TG-DB-001-frontend-database-query.md +83 -0
  11. package/.torusguard/rules/TG-DB-002-privileged-database-credential.md +86 -0
  12. package/.torusguard/rules/TG-DB-003-frontend-admin-sdk.md +91 -0
  13. package/.torusguard/rules/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  14. package/.torusguard/rules/TG-INPUT-001-missing-server-validation.md +98 -0
  15. package/.torusguard/rules/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  16. package/.torusguard/rules/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  17. package/.torusguard/rules/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  18. package/.torusguard/rules/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  19. package/.torusguard/rules/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  20. package/.torusguard/rules/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  21. package/.torusguard/rules/TG-PLATFORM-002-missing-security-headers.md +95 -0
  22. package/.torusguard/rules/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  23. package/.torusguard/rules/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  24. package/.torusguard/rules/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  25. package/.torusguard/rules/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  26. package/.torusguard/rules/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  27. package/.torusguard/rules/TG-SEC-001-hardcoded-secrets.md +83 -0
  28. package/.torusguard/rules/TG-SEC-002-public-environment-secrets.md +83 -0
  29. package/.torusguard/rules/TG-SEC-003-tracked-env-file.md +79 -0
  30. package/.torusguard/rules/TG-SEC-004-sensitive-logging.md +83 -0
  31. package/.torusguard/rules/active/TG-AUTH-001-weak-password-storage.md +103 -0
  32. package/.torusguard/rules/active/TG-AUTH-002-client-only-authorization.md +85 -0
  33. package/.torusguard/rules/active/TG-AUTH-003-missing-object-authorization.md +85 -0
  34. package/.torusguard/rules/active/TG-AUTH-004-insecure-session-cookie.md +96 -0
  35. package/.torusguard/rules/active/TG-AUTH-005-unsafe-password-reset.md +104 -0
  36. package/.torusguard/rules/active/TG-CLIENT-001-public-production-source-maps.md +102 -0
  37. package/.torusguard/rules/active/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  38. package/.torusguard/rules/active/TG-DB-001-frontend-database-query.md +83 -0
  39. package/.torusguard/rules/active/TG-DB-002-privileged-database-credential.md +86 -0
  40. package/.torusguard/rules/active/TG-DB-003-frontend-admin-sdk.md +91 -0
  41. package/.torusguard/rules/active/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  42. package/.torusguard/rules/active/TG-INPUT-001-missing-server-validation.md +98 -0
  43. package/.torusguard/rules/active/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  44. package/.torusguard/rules/active/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  45. package/.torusguard/rules/active/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  46. package/.torusguard/rules/active/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  47. package/.torusguard/rules/active/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  48. package/.torusguard/rules/active/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  49. package/.torusguard/rules/active/TG-PLATFORM-002-missing-security-headers.md +95 -0
  50. package/.torusguard/rules/active/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  51. package/.torusguard/rules/active/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  52. package/.torusguard/rules/active/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  53. package/.torusguard/rules/active/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  54. package/.torusguard/rules/active/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  55. package/.torusguard/rules/active/TG-SEC-001-hardcoded-secrets.md +83 -0
  56. package/.torusguard/rules/active/TG-SEC-002-public-environment-secrets.md +83 -0
  57. package/.torusguard/rules/active/TG-SEC-003-tracked-env-file.md +79 -0
  58. package/.torusguard/rules/active/TG-SEC-004-sensitive-logging.md +83 -0
  59. package/.torusguard/rules/agent/TG-AGENT-001-prompt-injection-system-context.md +56 -0
  60. package/.torusguard/rules/agent/TG-AGENT-002-unsafe-tool-dispatch-unsandboxed-execution.md +68 -0
  61. package/.torusguard/rules/agent/TG-AGENT-003-broad-mcp-tool-scoping.md +53 -0
  62. package/.torusguard/rules/agent/TG-AGENT-004-persistent-memory-cross-session-leakage.md +67 -0
  63. package/.torusguard/rules/authorization/TG-AUTH-006-mass-assignment.md +70 -0
  64. package/.torusguard/rules/authorization/TG-AUTH-007-missing-property-level-authorization.md +71 -0
  65. package/.torusguard/rules/authorization/TG-AUTH-008-untrusted-role-header-injection.md +112 -0
  66. package/.torusguard/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +37 -0
  67. package/.torusguard/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +37 -0
  68. package/.torusguard/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +37 -0
  69. package/.torusguard/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +37 -0
  70. package/.torusguard/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +37 -0
  71. package/.torusguard/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +37 -0
  72. package/.torusguard/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +37 -0
  73. package/.torusguard/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +37 -0
  74. package/.torusguard/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +37 -0
  75. package/.torusguard/rules/edge/TG-EDGE-001-serverless-global-state-leak.md +83 -0
  76. package/.torusguard/rules/edge/TG-EDGE-003-aws-lambda-ephemeral-cold-start.md +76 -0
  77. package/.torusguard/rules/graphql/TG-GQL-001-missing-query-depth-or-complexity-limits.md +64 -0
  78. package/.torusguard/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +37 -0
  79. package/.torusguard/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +37 -0
  80. package/.torusguard/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +37 -0
  81. package/.torusguard/rules/secrets/TG-SEC-005-secret-in-git-history.md +37 -0
  82. package/.torusguard/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +37 -0
  83. package/.torusguard/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +37 -0
  84. package/.torusguard/rules/ssrf/TG-SSRF-001-user-controlled-server-side-url-fetch.md +68 -0
  85. package/.torusguard/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +37 -0
  86. package/.torusguard/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +37 -0
  87. package/.torusguard/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +37 -0
  88. package/.torusguard/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +37 -0
  89. package/.torusguard/rules/supply-chain/TG-SUPPLY-002-vulnerable-dependency-review-missing.md +94 -0
  90. package/.torusguard/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +37 -0
  91. package/.torusguard/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +37 -0
  92. package/.torusguard/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +37 -0
  93. package/.torusguard/rules/supply-chain/TG-SUPPLY-006-container-build-secret-persistence.md +61 -0
  94. package/.torusguard/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +37 -0
  95. package/.torusguard/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +37 -0
  96. package/.torusguard/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +37 -0
  97. package/.torusguard/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +37 -0
  98. package/.torusguard/rules/websocket/TG-WS-001-unauthenticated-websocket-handshake.md +82 -0
  99. package/.torusguard/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +37 -0
  100. package/.torusguard/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +37 -0
  101. package/.torusguard/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +37 -0
  102. package/.torusguard/runs/report-latest.html +62 -20
  103. package/.torusguard/runs/run-20260908-112648-audit/findings.json +1520 -0
  104. package/.torusguard/runs/run-20260908-112648-audit/findings.md +560 -0
  105. package/.torusguard/runs/run-20260908-112648-audit/manifest.json +12 -0
  106. package/.torusguard/runs/run-20260908-112648-audit/summary.md +5 -0
  107. package/.torusguard/runs/run-20260908-112722-audit/findings.json +1520 -0
  108. package/.torusguard/runs/run-20260908-112722-audit/findings.md +560 -0
  109. package/.torusguard/runs/run-20260908-112722-audit/manifest.json +12 -0
  110. package/.torusguard/runs/run-20260908-112722-audit/summary.md +5 -0
  111. package/.torusguard/runs/run-20260908-113004-audit/findings.json +1520 -0
  112. package/.torusguard/runs/run-20260908-113004-audit/findings.md +560 -0
  113. package/.torusguard/runs/run-20260908-113004-audit/manifest.json +12 -0
  114. package/.torusguard/runs/run-20260908-113004-audit/summary.md +5 -0
  115. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  116. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  117. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  118. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  119. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  120. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  121. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  122. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  123. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  124. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-334-cb819d/metadata.json +15 -0
  125. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-334-cb819d/minimal_patch_plan.md +21 -0
  126. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-334-cb819d/patch.diff +9 -0
  127. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  128. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  129. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  130. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  131. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  132. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  133. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  134. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  135. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  136. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  137. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  138. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  139. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-232-1b45d1/metadata.json +15 -0
  140. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-232-1b45d1/minimal_patch_plan.md +21 -0
  141. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-002-232-1b45d1/patch.diff +9 -0
  142. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  143. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  144. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  145. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  146. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  147. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  148. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  149. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  150. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  151. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  152. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  153. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  154. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  155. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  156. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  157. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  158. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  159. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  160. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  161. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  162. package/.torusguard/runs/run-20260908-113127-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  163. package/.torusguard/runs/run-20260908-113127-audit/findings.json +1520 -0
  164. package/.torusguard/runs/run-20260908-113127-audit/findings.md +560 -0
  165. package/.torusguard/runs/run-20260908-113127-audit/manifest.json +13 -0
  166. package/.torusguard/runs/run-20260908-113127-audit/remediation.md +262 -0
  167. package/.torusguard/runs/run-20260908-113127-audit/summary.md +5 -0
  168. package/.torusguard/runs/run-20260908-115240-audit/apply_plan.md +6 -0
  169. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-115-9a059e/metadata.json +15 -0
  170. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-115-9a059e/minimal_patch_plan.md +21 -0
  171. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-115-9a059e/patch.diff +9 -0
  172. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-119-61557c/metadata.json +15 -0
  173. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-119-61557c/minimal_patch_plan.md +21 -0
  174. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-119-61557c/patch.diff +9 -0
  175. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-265-996ca3/metadata.json +15 -0
  176. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-265-996ca3/minimal_patch_plan.md +21 -0
  177. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-265-996ca3/patch.diff +9 -0
  178. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-334-cb819d/metadata.json +15 -0
  179. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-334-cb819d/minimal_patch_plan.md +21 -0
  180. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-334-cb819d/patch.diff +9 -0
  181. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-503-d11cf8/metadata.json +15 -0
  182. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-503-d11cf8/minimal_patch_plan.md +21 -0
  183. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-503-d11cf8/patch.diff +9 -0
  184. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-79-91f41f/metadata.json +15 -0
  185. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-79-91f41f/minimal_patch_plan.md +21 -0
  186. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-db-004-79-91f41f/patch.diff +9 -0
  187. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-107-516a40/metadata.json +15 -0
  188. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-107-516a40/minimal_patch_plan.md +21 -0
  189. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-107-516a40/patch.diff +9 -0
  190. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-128-7809a1/metadata.json +15 -0
  191. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-128-7809a1/minimal_patch_plan.md +21 -0
  192. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-128-7809a1/patch.diff +9 -0
  193. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-232-1b45d1/metadata.json +15 -0
  194. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-232-1b45d1/minimal_patch_plan.md +21 -0
  195. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-002-232-1b45d1/patch.diff +9 -0
  196. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-003-53-d167b4/metadata.json +15 -0
  197. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-003-53-d167b4/minimal_patch_plan.md +21 -0
  198. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-input-003-53-d167b4/patch.diff +9 -0
  199. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-platform-001-168-5027cb/metadata.json +15 -0
  200. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-platform-001-168-5027cb/minimal_patch_plan.md +21 -0
  201. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-platform-001-168-5027cb/patch.diff +9 -0
  202. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-209-4f6424/metadata.json +15 -0
  203. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-209-4f6424/minimal_patch_plan.md +21 -0
  204. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-209-4f6424/patch.diff +9 -0
  205. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-257-89bf34/metadata.json +15 -0
  206. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-257-89bf34/minimal_patch_plan.md +21 -0
  207. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-257-89bf34/patch.diff +9 -0
  208. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-341-ce228c/metadata.json +15 -0
  209. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-341-ce228c/minimal_patch_plan.md +21 -0
  210. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-341-ce228c/patch.diff +9 -0
  211. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-355-7b190b/metadata.json +15 -0
  212. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-355-7b190b/minimal_patch_plan.md +21 -0
  213. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-355-7b190b/patch.diff +9 -0
  214. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-64-5af31a/metadata.json +15 -0
  215. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-64-5af31a/minimal_patch_plan.md +21 -0
  216. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-64-5af31a/patch.diff +9 -0
  217. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-9-f51467/metadata.json +15 -0
  218. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-9-f51467/minimal_patch_plan.md +21 -0
  219. package/.torusguard/runs/run-20260908-115240-audit/bundles/bnd-tg-sec-001-9-f51467/patch.diff +9 -0
  220. package/.torusguard/runs/run-20260908-115240-audit/diff_summary.md +221 -0
  221. package/.torusguard/runs/run-20260908-115240-audit/findings.json +1553 -0
  222. package/.torusguard/runs/run-20260908-115240-audit/findings.md +572 -0
  223. package/.torusguard/runs/run-20260908-115240-audit/manifest.json +14 -0
  224. package/.torusguard/runs/run-20260908-115240-audit/recheck.md +91 -0
  225. package/.torusguard/runs/run-20260908-115240-audit/remediation.md +278 -0
  226. package/.torusguard/runs/run-20260908-115240-audit/summary.md +5 -0
  227. package/.torusguard/scripts/__pycache__/audit_runner.cpython-311.pyc +0 -0
  228. package/.torusguard/scripts/__pycache__/finding_scorer.cpython-311.pyc +0 -0
  229. package/.torusguard/scripts/__pycache__/memory_engine.cpython-311.pyc +0 -0
  230. package/.torusguard/scripts/__pycache__/monorepo_detector.cpython-311.pyc +0 -0
  231. package/.torusguard/scripts/__pycache__/run_manager.cpython-311.pyc +0 -0
  232. package/.torusguard/scripts/__pycache__/stack_detect.cpython-311.pyc +0 -0
  233. package/.torusguard/scripts/apply_runner.py +339 -0
  234. package/.torusguard/scripts/audit_runner.py +550 -0
  235. package/.torusguard/scripts/diff_guard.py +52 -4
  236. package/.torusguard/scripts/finding_scorer.py +58 -0
  237. package/.torusguard/scripts/harden_runner.py +375 -0
  238. package/.torusguard/scripts/html_reporter.py +25 -10
  239. package/.torusguard/scripts/manifest_builder.py +2 -0
  240. package/.torusguard/scripts/memory_engine.py +4 -0
  241. package/.torusguard/scripts/recheck_runner.py +221 -0
  242. package/.torusguard/scripts/recipes_runner.py +130 -0
  243. package/.torusguard/scripts/run_manager.py +17 -5
  244. package/.torusguard/skills/torusguard/SKILL.md +42 -42
  245. package/.torusguard/skills/torusguard/bootstrap.py +149 -70
  246. package/.torusguard/snapshots/run-20260908-115240-audit/examples/vulnerable-react-express/client/src/App.jsx.bak +63 -0
  247. package/.torusguard/snapshots/run-20260908-115240-audit/examples/vulnerable-react-express/server/index.js.bak +82 -0
  248. package/.torusguard/snapshots/run-20260908-115240-audit/harness/engine/fixture_manager.py.bak +245 -0
  249. package/.torusguard/snapshots/run-20260908-115240-audit/harness/master_validation.py.bak +698 -0
  250. package/.torusguard/snapshots/run-20260908-115240-audit/harness/runner.py.bak +551 -0
  251. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_e2e.py.bak +498 -0
  252. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_qa_v0_6_0.py.bak +572 -0
  253. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v0_6_1_scale.py.bak +371 -0
  254. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v0_6_2_modern_stacks.py.bak +462 -0
  255. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v0_6_3_hardening.py.bak +444 -0
  256. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v1_0_0_memory.py.bak +302 -0
  257. package/.torusguard/snapshots/run-20260908-115240-audit/harness/validate_v1_1_0_advanced_memory.py.bak +342 -0
  258. package/.torusguard/snapshots/run-20260908-115240-audit/skills/torusguard/payload/scripts/harden_runner.py.bak +353 -0
  259. package/.torusguard/snapshots/run-20260908-115240-audit/tests/test_v0_6_0_governed_remediation.py.bak +353 -0
  260. package/README.md +70 -33
  261. package/bin/torusguard.js +92 -22
  262. package/package.json +1 -1
  263. package/skills/torusguard/SKILL.md +42 -42
  264. package/skills/torusguard/bootstrap.py +147 -68
  265. package/skills/torusguard/payload/.manifest.json +113 -9
  266. package/skills/torusguard/payload/rules/README.md +93 -62
  267. package/skills/torusguard/payload/rules/TG-AUTH-001-weak-password-storage.md +103 -0
  268. package/skills/torusguard/payload/rules/TG-AUTH-002-client-only-authorization.md +85 -0
  269. package/skills/torusguard/payload/rules/TG-AUTH-003-missing-object-authorization.md +85 -0
  270. package/skills/torusguard/payload/rules/TG-AUTH-004-insecure-session-cookie.md +96 -0
  271. package/skills/torusguard/payload/rules/TG-AUTH-005-unsafe-password-reset.md +104 -0
  272. package/skills/torusguard/payload/rules/TG-CLIENT-001-public-production-source-maps.md +102 -0
  273. package/skills/torusguard/payload/rules/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  274. package/skills/torusguard/payload/rules/TG-DB-001-frontend-database-query.md +83 -0
  275. package/skills/torusguard/payload/rules/TG-DB-002-privileged-database-credential.md +86 -0
  276. package/skills/torusguard/payload/rules/TG-DB-003-frontend-admin-sdk.md +91 -0
  277. package/skills/torusguard/payload/rules/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  278. package/skills/torusguard/payload/rules/TG-INPUT-001-missing-server-validation.md +98 -0
  279. package/skills/torusguard/payload/rules/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  280. package/skills/torusguard/payload/rules/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  281. package/skills/torusguard/payload/rules/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  282. package/skills/torusguard/payload/rules/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  283. package/skills/torusguard/payload/rules/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  284. package/skills/torusguard/payload/rules/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  285. package/skills/torusguard/payload/rules/TG-PLATFORM-002-missing-security-headers.md +95 -0
  286. package/skills/torusguard/payload/rules/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  287. package/skills/torusguard/payload/rules/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  288. package/skills/torusguard/payload/rules/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  289. package/skills/torusguard/payload/rules/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  290. package/skills/torusguard/payload/rules/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  291. package/skills/torusguard/payload/rules/TG-SEC-001-hardcoded-secrets.md +83 -0
  292. package/skills/torusguard/payload/rules/TG-SEC-002-public-environment-secrets.md +83 -0
  293. package/skills/torusguard/payload/rules/TG-SEC-003-tracked-env-file.md +79 -0
  294. package/skills/torusguard/payload/rules/TG-SEC-004-sensitive-logging.md +83 -0
  295. package/skills/torusguard/payload/rules/active/TG-AUTH-001-weak-password-storage.md +103 -0
  296. package/skills/torusguard/payload/rules/active/TG-AUTH-002-client-only-authorization.md +85 -0
  297. package/skills/torusguard/payload/rules/active/TG-AUTH-003-missing-object-authorization.md +85 -0
  298. package/skills/torusguard/payload/rules/active/TG-AUTH-004-insecure-session-cookie.md +96 -0
  299. package/skills/torusguard/payload/rules/active/TG-AUTH-005-unsafe-password-reset.md +104 -0
  300. package/skills/torusguard/payload/rules/active/TG-CLIENT-001-public-production-source-maps.md +102 -0
  301. package/skills/torusguard/payload/rules/active/TG-CLIENT-002-sensitive-client-bundle-content.md +102 -0
  302. package/skills/torusguard/payload/rules/active/TG-DB-001-frontend-database-query.md +83 -0
  303. package/skills/torusguard/payload/rules/active/TG-DB-002-privileged-database-credential.md +86 -0
  304. package/skills/torusguard/payload/rules/active/TG-DB-003-frontend-admin-sdk.md +91 -0
  305. package/skills/torusguard/payload/rules/active/TG-DB-004-missing-tenant-query-isolation.md +103 -0
  306. package/skills/torusguard/payload/rules/active/TG-INPUT-001-missing-server-validation.md +98 -0
  307. package/skills/torusguard/payload/rules/active/TG-INPUT-002-raw-sql-concatenation.md +94 -0
  308. package/skills/torusguard/payload/rules/active/TG-INPUT-003-unsafe-html-or-code-execution.md +102 -0
  309. package/skills/torusguard/payload/rules/active/TG-INPUT-004-unrestricted-file-upload.md +92 -0
  310. package/skills/torusguard/payload/rules/active/TG-INPUT-005-unsafe-template-rendering-and-escaping.md +102 -0
  311. package/skills/torusguard/payload/rules/active/TG-INPUT-006-unsafe-file-path-traversal.md +131 -0
  312. package/skills/torusguard/payload/rules/active/TG-PLATFORM-001-wildcard-cors-with-credentials.md +101 -0
  313. package/skills/torusguard/payload/rules/active/TG-PLATFORM-002-missing-security-headers.md +95 -0
  314. package/skills/torusguard/payload/rules/active/TG-PLATFORM-003-production-stack-trace-exposure.md +94 -0
  315. package/skills/torusguard/payload/rules/active/TG-PLATFORM-004-missing-request-size-limits.md +102 -0
  316. package/skills/torusguard/payload/rules/active/TG-RATE-001-unlimited-auth-endpoint.md +112 -0
  317. package/skills/torusguard/payload/rules/active/TG-RATE-002-unlimited-public-write-endpoint.md +109 -0
  318. package/skills/torusguard/payload/rules/active/TG-RATE-003-unbounded-resource-consumption.md +105 -0
  319. package/skills/torusguard/payload/rules/active/TG-SEC-001-hardcoded-secrets.md +83 -0
  320. package/skills/torusguard/payload/rules/active/TG-SEC-002-public-environment-secrets.md +83 -0
  321. package/skills/torusguard/payload/rules/active/TG-SEC-003-tracked-env-file.md +79 -0
  322. package/skills/torusguard/payload/rules/active/TG-SEC-004-sensitive-logging.md +83 -0
  323. package/skills/torusguard/payload/rules/agent/TG-AGENT-001-prompt-injection-system-context.md +56 -0
  324. package/skills/torusguard/payload/rules/agent/TG-AGENT-002-unsafe-tool-dispatch-unsandboxed-execution.md +68 -0
  325. package/skills/torusguard/payload/rules/agent/TG-AGENT-003-broad-mcp-tool-scoping.md +53 -0
  326. package/skills/torusguard/payload/rules/agent/TG-AGENT-004-persistent-memory-cross-session-leakage.md +67 -0
  327. package/skills/torusguard/payload/rules/authorization/TG-AUTH-006-mass-assignment.md +70 -0
  328. package/skills/torusguard/payload/rules/authorization/TG-AUTH-007-missing-property-level-authorization.md +71 -0
  329. package/skills/torusguard/payload/rules/authorization/TG-AUTH-008-untrusted-role-header-injection.md +112 -0
  330. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-001-client-controlled-sensitive-business-value.md +37 -0
  331. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-002-replayable-one-time-operation.md +37 -0
  332. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-003-missing-workflow-state-validation.md +37 -0
  333. package/skills/torusguard/payload/rules/business-logic/TG-BIZ-004-unrestricted-sensitive-business-flow.md +37 -0
  334. package/skills/torusguard/payload/rules/cache/TG-CACHE-001-sensitive-response-publicly-cacheable.md +37 -0
  335. package/skills/torusguard/payload/rules/cache/TG-CACHE-002-missing-user-cache-isolation.md +37 -0
  336. package/skills/torusguard/payload/rules/cache/TG-CACHE-003-sensitive-data-in-url.md +37 -0
  337. package/skills/torusguard/payload/rules/csrf/TG-CSRF-001-missing-csrf-protection.md +37 -0
  338. package/skills/torusguard/payload/rules/csrf/TG-CSRF-002-unsafe-credentialed-cross-origin-request.md +37 -0
  339. package/skills/torusguard/payload/rules/edge/TG-EDGE-001-serverless-global-state-leak.md +83 -0
  340. package/skills/torusguard/payload/rules/edge/TG-EDGE-003-aws-lambda-ephemeral-cold-start.md +76 -0
  341. package/skills/torusguard/payload/rules/graphql/TG-GQL-001-missing-query-depth-or-complexity-limits.md +64 -0
  342. package/skills/torusguard/payload/rules/graphql/TG-GQL-002-resolver-missing-authorization.md +37 -0
  343. package/skills/torusguard/payload/rules/graphql/TG-GQL-003-unbounded-graphql-pagination-or-batching.md +37 -0
  344. package/skills/torusguard/payload/rules/graphql/TG-GQL-004-unnecessary-production-introspection.md +37 -0
  345. package/skills/torusguard/payload/rules/secrets/TG-SEC-005-secret-in-git-history.md +37 -0
  346. package/skills/torusguard/payload/rules/secrets/TG-SEC-006-secret-in-build-artifact.md +37 -0
  347. package/skills/torusguard/payload/rules/secrets/TG-SEC-007-secret-in-test-or-example-fixture.md +37 -0
  348. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-001-user-controlled-server-side-url-fetch.md +68 -0
  349. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-002-missing-internal-network-protection.md +37 -0
  350. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-003-unsafe-redirect-following.md +37 -0
  351. package/skills/torusguard/payload/rules/ssrf/TG-SSRF-004-unbounded-outbound-request.md +37 -0
  352. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-001-missing-or-ignored-dependency-lockfile.md +37 -0
  353. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-002-vulnerable-dependency-review-missing.md +94 -0
  354. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-003-unsafe-ci-cd-secret-exposure.md +37 -0
  355. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-004-unpinned-ci-action.md +37 -0
  356. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-005-unsafe-dependency-install-script.md +37 -0
  357. package/skills/torusguard/payload/rules/supply-chain/TG-SUPPLY-006-container-build-secret-persistence.md +61 -0
  358. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-001-missing-webhook-signature-verification.md +37 -0
  359. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-002-replayable-webhook.md +37 -0
  360. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-003-missing-webhook-idempotency.md +37 -0
  361. package/skills/torusguard/payload/rules/webhook/TG-WEBHOOK-004-unvalidated-webhook-event-type.md +37 -0
  362. package/skills/torusguard/payload/rules/websocket/TG-WS-001-unauthenticated-websocket-handshake.md +82 -0
  363. package/skills/torusguard/payload/rules/websocket/TG-WS-002-missing-channel-level-authorization.md +37 -0
  364. package/skills/torusguard/payload/rules/websocket/TG-WS-003-unvalidated-websocket-message.md +37 -0
  365. package/skills/torusguard/payload/rules/websocket/TG-WS-004-unbounded-websocket-connections.md +37 -0
  366. package/skills/torusguard/payload/scripts/apply_runner.py +339 -0
  367. package/skills/torusguard/payload/scripts/audit_runner.py +550 -0
  368. package/skills/torusguard/payload/scripts/diff_guard.py +52 -4
  369. package/skills/torusguard/payload/scripts/finding_scorer.py +58 -0
  370. package/skills/torusguard/payload/scripts/harden_runner.py +375 -0
  371. package/skills/torusguard/payload/scripts/html_reporter.py +25 -10
  372. package/skills/torusguard/payload/scripts/manifest_builder.py +2 -0
  373. package/skills/torusguard/payload/scripts/memory_engine.py +4 -0
  374. package/skills/torusguard/payload/scripts/recheck_runner.py +221 -0
  375. package/skills/torusguard/payload/scripts/recipes_runner.py +130 -0
  376. package/skills/torusguard/payload/scripts/run_manager.py +17 -5
  377. package/skills/torusguard/payload/skills/torusguard/SKILL.md +42 -42
  378. package/skills/torusguard/payload/skills/torusguard/bootstrap.py +147 -68
@@ -0,0 +1,37 @@
1
+ # TG-CACHE-001: Sensitive Response Publicly Cacheable
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-CACHE-002: Missing User Cache Isolation
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-CACHE-003: Sensitive Data in URL
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-CSRF-001: Missing CSRF Protection
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-CSRF-002: Unsafe Credentialed Cross-Origin 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,83 @@
1
+ # TG-EDGE-001: Serverless & Edge Global State Memory Leakage
2
+
3
+ ## Severity
4
+ High. Global state persistence across warm container or edge worker invocations can lead to cross-request tenant pollution and unauthorized credential disclosure.
5
+
6
+ ## Applies To
7
+ - Cloudflare Workers
8
+ - Vercel Edge Functions (Next.js Edge Runtime)
9
+ - AWS Lambda / Netlify Functions
10
+
11
+ ## Why It Matters
12
+ In serverless and edge computing architectures:
13
+ 1. **Container / Isolate Reuse:** Serverless instances (V8 isolates or MicroVMs) stay warm across sequential invocations to optimize startup latency.
14
+ 2. **State Leakage Hazard:** Global variables, module-scoped arrays, singletons, or uncleaned caches persist between subsequent client requests handled by the same warm worker.
15
+ 3. **Cross-Tenant Contamination:** If User A's authentication token, tenant ID, or profile data is assigned to a module-level variable, a subsequent request from User B can accidentally read User A's data without authenticating.
16
+
17
+ ## What TorusGuard Looks For
18
+ 1. Module-scoped or global mutable variables (`let`, `var`, global `Map`, `dict`) storing user-specific context, request headers, or auth tokens.
19
+ 2. Singleton database connection pools or client sessions retaining user-specific session state across handler calls.
20
+ 3. Lack of explicit request-scoped context initialization.
21
+
22
+ ## Unsafe Example
23
+ ```typescript
24
+ // UNSAFE: Module-scoped state persists across warm Cloudflare Worker invocations
25
+ let currentSessionUser: { id: string; role: string } | null = null;
26
+
27
+ export default {
28
+ async fetch(request: Request, env: Env): Promise<Response> {
29
+ const token = request.headers.get("Authorization");
30
+ if (token) {
31
+ // Leaks to subsequent requests if not explicitly cleared on every path!
32
+ currentSessionUser = await verifyUser(token);
33
+ }
34
+
35
+ // Danger: If next request lacks Authorization header, currentSessionUser remains set!
36
+ return new Response(JSON.stringify({ user: currentSessionUser }));
37
+ }
38
+ };
39
+ ```
40
+
41
+ ## Safe Example
42
+ ```typescript
43
+ // SAFE: Strictly request-scoped context; zero mutable global state
44
+ interface RequestContext {
45
+ user: { id: string; role: string } | null;
46
+ requestId: string;
47
+ }
48
+
49
+ export default {
50
+ async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
51
+ // Context is created fresh per invocation inside the handler scope
52
+ const reqContext: RequestContext = {
53
+ user: null,
54
+ requestId: crypto.randomUUID(),
55
+ };
56
+
57
+ const token = request.headers.get("Authorization");
58
+ if (token) {
59
+ reqContext.user = await verifyUser(token, env.JWT_SECRET);
60
+ }
61
+
62
+ if (!reqContext.user) {
63
+ return new Response(JSON.stringify({ error: "Unauthorized" }), { status: 401 });
64
+ }
65
+
66
+ return new Response(JSON.stringify({ user: reqContext.user }));
67
+ }
68
+ };
69
+ ```
70
+
71
+ ## Remediation
72
+ 1. **Enforce Request-Scoped State:** Always declare mutable variables, session holders, and tenant identifiers inside the handler function scope.
73
+ 2. **Treat Global Scope as Immutable:** Limit module-level variables strictly to immutable configuration constants, static schemas, or stateless utility functions.
74
+ 3. **Isolate Database Clients:** Ensure database connections or ORM instances created globally do not cache user-specific transaction boundaries or credentials.
75
+
76
+ ## Verification
77
+ - Unit test sequential simulated requests against the worker ensuring User A's context never appears in an unauthenticated User B invocation.
78
+ - Assert that static linters flag module-scoped mutable assignments in edge handler files.
79
+
80
+ ## Related Rules
81
+ - `TG-EDGE-003`: AWS Lambda Ephemeral Execution & Cold Start Security
82
+ - `TG-AUTH-002`: Client-Side Only Authorization
83
+ - `TG-DB-004`: Missing Tenant Query Isolation
@@ -0,0 +1,76 @@
1
+ # TG-EDGE-003: AWS Lambda Ephemeral Execution & Cold Start Security
2
+
3
+ ## Severity
4
+ Medium by default. Escalate to High if IAM credentials or temporary execution tokens are leaked or indefinitely reused across invocations.
5
+
6
+ ## Applies To
7
+ - AWS Lambda (Python, Node.js)
8
+ - Serverless Framework / AWS SAM / AWS CDK
9
+
10
+ ## Why It Matters
11
+ AWS Lambda execution environments are frequently reused across invocations. While initializing heavy clients (such as AWS SDK or database pools) outside the handler improves cold start latency:
12
+ 1. **Stale Credentials & Leaked Tokens:** Temporary STS session tokens or database auth credentials initialized during cold start can expire or persist between distinct tenants.
13
+ 2. **Ephemeral Disk Residue (`/tmp`):** The `/tmp` storage directory is preserved across warm invocations of the same execution environment. Writing unencrypted sensitive files, tokens, or customer exports to `/tmp` can expose data to subsequent requests.
14
+ 3. **Execution Timeouts:** Unbounded subrequests without client-side timeouts can consume maximum execution seconds, triggering Denial-of-Wallet.
15
+
16
+ ## What TorusGuard Looks For
17
+ 1. Writing unencrypted sensitive data or credentials directly to `/tmp` without explicit deletion in a `finally` block.
18
+ 2. Global caching of dynamic, tenant-specific STS or database credentials outside the handler.
19
+ 3. Outbound network calls inside Lambda handlers lacking explicit connection and read timeouts.
20
+
21
+ ## Unsafe Example
22
+ ```python
23
+ # UNSAFE: Writing sensitive customer export to /tmp without cleanup
24
+ import os
25
+ import boto3
26
+
27
+ def lambda_handler(event, context):
28
+ user_id = event["userId"]
29
+ temp_path = f"/tmp/export_{user_id}.json"
30
+
31
+ # Writes sensitive data to /tmp; persists across warm invocations!
32
+ with open(temp_path, "w") as f:
33
+ f.write(event["sensitiveUserData"])
34
+
35
+ upload_to_s3(temp_path)
36
+ # Missing cleanup: subsequent invocations can access this file!
37
+ return {"status": "ok"}
38
+ ```
39
+
40
+ ## Safe Example
41
+ ```python
42
+ # SAFE: Ephemeral cleanup guaranteed via try/finally and unique temp storage
43
+ import os
44
+ import tempfile
45
+ import boto3
46
+
47
+ def lambda_handler(event, context):
48
+ user_id = event.get("userId")
49
+ if not user_id:
50
+ return {"statusCode": 400, "body": "Missing userId"}
51
+
52
+ # Use secure tempfile with guaranteed cleanup
53
+ with tempfile.NamedTemporaryFile(mode="w+", delete=False) as temp_file:
54
+ try:
55
+ temp_file.write(event["sensitiveUserData"])
56
+ temp_file.flush()
57
+ upload_to_s3(temp_file.name)
58
+ finally:
59
+ if os.path.exists(temp_file.name):
60
+ os.remove(temp_file.name)
61
+
62
+ return {"statusCode": 200, "body": "Export completed safely"}
63
+ ```
64
+
65
+ ## Remediation
66
+ 1. **Always clean up `/tmp` files:** Use `tempfile.NamedTemporaryFile` with a `finally` block or context manager that guarantees file removal.
67
+ 2. **Avoid Global Caching of Tenant Context:** Initialize IAM STS assume-role credentials per request within the handler.
68
+ 3. **Configure Timeouts:** Set client connection and read timeouts on all outbound HTTP and AWS SDK clients.
69
+
70
+ ## Verification
71
+ - Assert that all `/tmp` file writes are wrapped in cleanup blocks.
72
+ - Test that consecutive invocations with different tenant payloads do not find pre-existing files in `/tmp`.
73
+
74
+ ## Related Rules
75
+ - `TG-EDGE-001`: Serverless & Edge Global State Memory Leakage
76
+ - `TG-SEC-001`: Hardcoded Secrets
@@ -0,0 +1,64 @@
1
+ # TG-GQL-001: Missing Query Depth or Complexity Limits
2
+
3
+ ## Severity
4
+ High. Unbounded GraphQL queries allow nested recursive queries (e.g., author $\rightarrow$ books $\rightarrow$ author) that trigger server denial-of-service, CPU saturation, and exponential database query loads.
5
+
6
+ ## Applies To
7
+ - Apollo Server, Yoga, GraphQL.js, Strawberry, Graphene (Python), TypeGraphQL
8
+
9
+ ## Why It Matters
10
+ GraphQL allows client-controlled response structures. Without depth limiting or cost analysis:
11
+ 1. An attacker can submit deeply nested circular queries ($> 100$ levels) that monopolize Node.js or Python event loops.
12
+ 2. Batching multiple expensive queries in a single HTTP request bypasses naive rate limiters.
13
+ 3. Automated scanners can trigger denial-of-service unless runtime introspection probes are bounded to harmless depth thresholds.
14
+
15
+ ## What TorusGuard Looks For
16
+ 1. GraphQL server setup lacking query depth validation rules (e.g., `graphql-depth-limit`).
17
+ 2. Missing complexity/cost calculation plugins (`graphql-query-complexity`).
18
+ 3. Runtime probe: Executing a harmless 3-level bounded query canary; flagging if queries deeper than allowed thresholds execute without validation errors.
19
+
20
+ ## Unsafe Example
21
+ ```typescript
22
+ // UNSAFE: Apollo Server without query depth or complexity validation
23
+ import { ApolloServer } from "@apollo/server";
24
+
25
+ const server = new ApolloServer({
26
+ typeDefs,
27
+ resolvers,
28
+ // No depth limit or complexity plugins configured!
29
+ });
30
+ ```
31
+
32
+ ## Safe Example
33
+ ```typescript
34
+ // SAFE: Query depth validation capped at 6 levels and complexity cost limits
35
+ import { ApolloServer } from "@apollo/server";
36
+ import depthLimit from "graphql-depth-limit";
37
+ import { createComplexityLimitRule } from "graphql-validation-complexity";
38
+
39
+ const server = new ApolloServer({
40
+ typeDefs,
41
+ resolvers,
42
+ validationRules: [
43
+ depthLimit(6), // Maximum query nesting depth
44
+ createComplexityLimitRule(1000, {
45
+ onCost: (cost) => console.log(`GraphQL Query Cost: ${cost}`),
46
+ }),
47
+ ],
48
+ });
49
+ ```
50
+
51
+ ## Bounded Runtime Probe Protocol
52
+ When probing GraphQL endpoints under `/torusguard web-validate`:
53
+ 1. Submit a **bounded 3-level canary query** (e.g., `{ __typename, schema: __schema { types { name } } }`).
54
+ 2. Submit a single test query exceeding max depth (e.g., 7 levels) with a strict request budget of 1 request.
55
+ 3. Assert that the server responds with an HTTP 400 or GraphQL `GRAPHQL_VALIDATION_FAILED` error rather than evaluating resolvers.
56
+
57
+ ## Remediation
58
+ 1. **Enforce Depth Limiting:** Install `graphql-depth-limit` and cap maximum depth (typically 5–7 levels).
59
+ 2. **Implement Query Cost Analysis:** Assign complexity points per field and reject queries exceeding cost thresholds.
60
+ 3. **Disable Production Introspection:** Set `introspection: false` in production environments.
61
+
62
+ ## Related Rules
63
+ - `TG-GQL-004`: Unnecessary Production Introspection
64
+ - `TG-RATE-003`: Unbounded Resource Consumption
@@ -0,0 +1,37 @@
1
+ # TG-GQL-002: Resolver Missing 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-GQL-003: Unbounded GraphQL Pagination or Batching
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-GQL-004: Unnecessary Production Introspection
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-SEC-005: Secret in Git History
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-SEC-006: Secret in Build Artifact
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-SEC-007: Secret in Test or Example Fixture
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