vaspera 2.13.0 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (300) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +15 -2
  3. package/dist/__tests__/antagonist-integration.test.d.ts +6 -0
  4. package/dist/__tests__/antagonist-integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/antagonist-integration.test.js +239 -0
  6. package/dist/__tests__/antagonist-integration.test.js.map +1 -0
  7. package/dist/__tests__/certification/agent-certificate-e2e.test.d.ts +2 -0
  8. package/dist/__tests__/certification/agent-certificate-e2e.test.d.ts.map +1 -0
  9. package/dist/__tests__/certification/agent-certificate-e2e.test.js +90 -0
  10. package/dist/__tests__/certification/agent-certificate-e2e.test.js.map +1 -0
  11. package/dist/__tests__/certification/agent-certificate-map.test.d.ts +2 -0
  12. package/dist/__tests__/certification/agent-certificate-map.test.d.ts.map +1 -0
  13. package/dist/__tests__/certification/agent-certificate-map.test.js +107 -0
  14. package/dist/__tests__/certification/agent-certificate-map.test.js.map +1 -0
  15. package/dist/__tests__/certification/agent-certificate.test.d.ts +2 -0
  16. package/dist/__tests__/certification/agent-certificate.test.d.ts.map +1 -0
  17. package/dist/__tests__/certification/agent-certificate.test.js +78 -0
  18. package/dist/__tests__/certification/agent-certificate.test.js.map +1 -0
  19. package/dist/__tests__/certification/verify-endpoint.test.d.ts +2 -0
  20. package/dist/__tests__/certification/verify-endpoint.test.d.ts.map +1 -0
  21. package/dist/__tests__/certification/verify-endpoint.test.js +81 -0
  22. package/dist/__tests__/certification/verify-endpoint.test.js.map +1 -0
  23. package/dist/__tests__/compliance/ai-frameworks.test.d.ts +2 -0
  24. package/dist/__tests__/compliance/ai-frameworks.test.d.ts.map +1 -0
  25. package/dist/__tests__/compliance/ai-frameworks.test.js +87 -0
  26. package/dist/__tests__/compliance/ai-frameworks.test.js.map +1 -0
  27. package/dist/__tests__/eval/llm-analyzer.test.d.ts +2 -0
  28. package/dist/__tests__/eval/llm-analyzer.test.d.ts.map +1 -0
  29. package/dist/__tests__/eval/llm-analyzer.test.js +93 -0
  30. package/dist/__tests__/eval/llm-analyzer.test.js.map +1 -0
  31. package/dist/__tests__/eval/redteam-harness.test.d.ts +2 -0
  32. package/dist/__tests__/eval/redteam-harness.test.d.ts.map +1 -0
  33. package/dist/__tests__/eval/redteam-harness.test.js +136 -0
  34. package/dist/__tests__/eval/redteam-harness.test.js.map +1 -0
  35. package/dist/__tests__/evidence/evidence.test.d.ts +2 -0
  36. package/dist/__tests__/evidence/evidence.test.d.ts.map +1 -0
  37. package/dist/__tests__/evidence/evidence.test.js +240 -0
  38. package/dist/__tests__/evidence/evidence.test.js.map +1 -0
  39. package/dist/__tests__/history/decisions.test.d.ts +2 -0
  40. package/dist/__tests__/history/decisions.test.d.ts.map +1 -0
  41. package/dist/__tests__/history/decisions.test.js +54 -0
  42. package/dist/__tests__/history/decisions.test.js.map +1 -0
  43. package/dist/__tests__/http-auth.test.d.ts +2 -0
  44. package/dist/__tests__/http-auth.test.d.ts.map +1 -0
  45. package/dist/__tests__/http-auth.test.js +55 -0
  46. package/dist/__tests__/http-auth.test.js.map +1 -0
  47. package/dist/__tests__/http-policy.test.d.ts +2 -0
  48. package/dist/__tests__/http-policy.test.d.ts.map +1 -0
  49. package/dist/__tests__/http-policy.test.js +69 -0
  50. package/dist/__tests__/http-policy.test.js.map +1 -0
  51. package/dist/__tests__/http-server-transport.test.d.ts +2 -0
  52. package/dist/__tests__/http-server-transport.test.d.ts.map +1 -0
  53. package/dist/__tests__/http-server-transport.test.js +132 -0
  54. package/dist/__tests__/http-server-transport.test.js.map +1 -0
  55. package/dist/__tests__/integration/destructive-guards.test.d.ts +2 -0
  56. package/dist/__tests__/integration/destructive-guards.test.d.ts.map +1 -0
  57. package/dist/__tests__/integration/destructive-guards.test.js +49 -0
  58. package/dist/__tests__/integration/destructive-guards.test.js.map +1 -0
  59. package/dist/__tests__/logger-redaction.test.d.ts +2 -0
  60. package/dist/__tests__/logger-redaction.test.d.ts.map +1 -0
  61. package/dist/__tests__/logger-redaction.test.js +74 -0
  62. package/dist/__tests__/logger-redaction.test.js.map +1 -0
  63. package/dist/__tests__/manifest-schema.test.d.ts +2 -0
  64. package/dist/__tests__/manifest-schema.test.d.ts.map +1 -0
  65. package/dist/__tests__/manifest-schema.test.js +43 -0
  66. package/dist/__tests__/manifest-schema.test.js.map +1 -0
  67. package/dist/__tests__/scanners/builtin-rules.test.d.ts +2 -0
  68. package/dist/__tests__/scanners/builtin-rules.test.d.ts.map +1 -0
  69. package/dist/__tests__/scanners/builtin-rules.test.js +51 -0
  70. package/dist/__tests__/scanners/builtin-rules.test.js.map +1 -0
  71. package/dist/__tests__/scanners/runtime/golden-path-runner.test.js +13 -1
  72. package/dist/__tests__/scanners/runtime/golden-path-runner.test.js.map +1 -1
  73. package/dist/__tests__/tool-guard.test.d.ts +2 -0
  74. package/dist/__tests__/tool-guard.test.d.ts.map +1 -0
  75. package/dist/__tests__/tool-guard.test.js +97 -0
  76. package/dist/__tests__/tool-guard.test.js.map +1 -0
  77. package/dist/__tests__/util/contained-file.test.d.ts +2 -0
  78. package/dist/__tests__/util/contained-file.test.d.ts.map +1 -0
  79. package/dist/__tests__/util/contained-file.test.js +78 -0
  80. package/dist/__tests__/util/contained-file.test.js.map +1 -0
  81. package/dist/__tests__/util/subprocess.test.d.ts +2 -0
  82. package/dist/__tests__/util/subprocess.test.d.ts.map +1 -0
  83. package/dist/__tests__/util/subprocess.test.js +48 -0
  84. package/dist/__tests__/util/subprocess.test.js.map +1 -0
  85. package/dist/action/diff-mode.d.ts.map +1 -1
  86. package/dist/action/diff-mode.js +31 -12
  87. package/dist/action/diff-mode.js.map +1 -1
  88. package/dist/agents/antagonist/challenger.d.ts +46 -0
  89. package/dist/agents/antagonist/challenger.d.ts.map +1 -0
  90. package/dist/agents/antagonist/challenger.js +257 -0
  91. package/dist/agents/antagonist/challenger.js.map +1 -0
  92. package/dist/agents/antagonist/index.d.ts +31 -0
  93. package/dist/agents/antagonist/index.d.ts.map +1 -0
  94. package/dist/agents/antagonist/index.js +175 -0
  95. package/dist/agents/antagonist/index.js.map +1 -0
  96. package/dist/agents/antagonist/prioritizer.d.ts +27 -0
  97. package/dist/agents/antagonist/prioritizer.d.ts.map +1 -0
  98. package/dist/agents/antagonist/prioritizer.js +181 -0
  99. package/dist/agents/antagonist/prioritizer.js.map +1 -0
  100. package/dist/agents/antagonist/prompts.d.ts +12 -0
  101. package/dist/agents/antagonist/prompts.d.ts.map +1 -0
  102. package/dist/agents/antagonist/prompts.js +155 -0
  103. package/dist/agents/antagonist/prompts.js.map +1 -0
  104. package/dist/agents/antagonist/synthesizer.d.ts +34 -0
  105. package/dist/agents/antagonist/synthesizer.d.ts.map +1 -0
  106. package/dist/agents/antagonist/synthesizer.js +451 -0
  107. package/dist/agents/antagonist/synthesizer.js.map +1 -0
  108. package/dist/agents/antagonist/types.d.ts +145 -0
  109. package/dist/agents/antagonist/types.d.ts.map +1 -0
  110. package/dist/agents/antagonist/types.js +63 -0
  111. package/dist/agents/antagonist/types.js.map +1 -0
  112. package/dist/agents/index.d.ts +1 -0
  113. package/dist/agents/index.d.ts.map +1 -1
  114. package/dist/agents/index.js +2 -0
  115. package/dist/agents/index.js.map +1 -1
  116. package/dist/certification/agent-certificate-map.d.ts +51 -0
  117. package/dist/certification/agent-certificate-map.d.ts.map +1 -0
  118. package/dist/certification/agent-certificate-map.js +265 -0
  119. package/dist/certification/agent-certificate-map.js.map +1 -0
  120. package/dist/certification/agent-certificate-sample.d.ts +25 -0
  121. package/dist/certification/agent-certificate-sample.d.ts.map +1 -0
  122. package/dist/certification/agent-certificate-sample.js +207 -0
  123. package/dist/certification/agent-certificate-sample.js.map +1 -0
  124. package/dist/certification/agent-certificate.d.ts +1981 -0
  125. package/dist/certification/agent-certificate.d.ts.map +1 -0
  126. package/dist/certification/agent-certificate.js +309 -0
  127. package/dist/certification/agent-certificate.js.map +1 -0
  128. package/dist/certification/autofix.d.ts.map +1 -1
  129. package/dist/certification/autofix.js +5 -3
  130. package/dist/certification/autofix.js.map +1 -1
  131. package/dist/certification/consensus.test.js +2 -0
  132. package/dist/certification/consensus.test.js.map +1 -1
  133. package/dist/certification/store.d.ts.map +1 -1
  134. package/dist/certification/store.js +11 -3
  135. package/dist/certification/store.js.map +1 -1
  136. package/dist/certification/types.d.ts +1 -1
  137. package/dist/certification/types.d.ts.map +1 -1
  138. package/dist/certification/types.js +2 -0
  139. package/dist/certification/types.js.map +1 -1
  140. package/dist/certification/verify-endpoint.d.ts +48 -0
  141. package/dist/certification/verify-endpoint.d.ts.map +1 -0
  142. package/dist/certification/verify-endpoint.js +79 -0
  143. package/dist/certification/verify-endpoint.js.map +1 -0
  144. package/dist/compliance/index.d.ts +2 -0
  145. package/dist/compliance/index.d.ts.map +1 -1
  146. package/dist/compliance/index.js +4 -0
  147. package/dist/compliance/index.js.map +1 -1
  148. package/dist/compliance/iso42001.d.ts +21 -0
  149. package/dist/compliance/iso42001.d.ts.map +1 -0
  150. package/dist/compliance/iso42001.js +160 -0
  151. package/dist/compliance/iso42001.js.map +1 -0
  152. package/dist/compliance/mapper.d.ts.map +1 -1
  153. package/dist/compliance/mapper.js +12 -0
  154. package/dist/compliance/mapper.js.map +1 -1
  155. package/dist/compliance/nist-ai-rmf.d.ts +20 -0
  156. package/dist/compliance/nist-ai-rmf.d.ts.map +1 -0
  157. package/dist/compliance/nist-ai-rmf.js +140 -0
  158. package/dist/compliance/nist-ai-rmf.js.map +1 -0
  159. package/dist/config/flags.d.ts +4 -4
  160. package/dist/eval/fixtures.d.ts.map +1 -1
  161. package/dist/eval/fixtures.js +161 -119
  162. package/dist/eval/fixtures.js.map +1 -1
  163. package/dist/eval/fixtures.test.js +4 -2
  164. package/dist/eval/fixtures.test.js.map +1 -1
  165. package/dist/eval/llm-analyzer.d.ts +40 -0
  166. package/dist/eval/llm-analyzer.d.ts.map +1 -0
  167. package/dist/eval/llm-analyzer.js +154 -0
  168. package/dist/eval/llm-analyzer.js.map +1 -0
  169. package/dist/eval/redteam-harness.d.ts +95 -0
  170. package/dist/eval/redteam-harness.d.ts.map +1 -0
  171. package/dist/eval/redteam-harness.js +137 -0
  172. package/dist/eval/redteam-harness.js.map +1 -0
  173. package/dist/evidence/collector.d.ts.map +1 -1
  174. package/dist/evidence/collector.js +21 -1
  175. package/dist/evidence/collector.js.map +1 -1
  176. package/dist/evidence/store.d.ts.map +1 -1
  177. package/dist/evidence/store.js +29 -5
  178. package/dist/evidence/store.js.map +1 -1
  179. package/dist/evidence/types.d.ts +16 -9
  180. package/dist/evidence/types.d.ts.map +1 -1
  181. package/dist/history/decisions.d.ts +63 -0
  182. package/dist/history/decisions.d.ts.map +1 -0
  183. package/dist/history/decisions.js +60 -0
  184. package/dist/history/decisions.js.map +1 -0
  185. package/dist/history/index.d.ts +2 -0
  186. package/dist/history/index.d.ts.map +1 -1
  187. package/dist/history/index.js +2 -0
  188. package/dist/history/index.js.map +1 -1
  189. package/dist/history/types.d.ts +34 -5
  190. package/dist/history/types.d.ts.map +1 -1
  191. package/dist/history/types.js +2 -0
  192. package/dist/history/types.js.map +1 -1
  193. package/dist/http-auth.d.ts +22 -0
  194. package/dist/http-auth.d.ts.map +1 -0
  195. package/dist/http-auth.js +58 -0
  196. package/dist/http-auth.js.map +1 -0
  197. package/dist/http-policy.d.ts +30 -0
  198. package/dist/http-policy.d.ts.map +1 -0
  199. package/dist/http-policy.js +54 -0
  200. package/dist/http-policy.js.map +1 -0
  201. package/dist/http-server.js +195 -12
  202. package/dist/http-server.js.map +1 -1
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +411 -15
  205. package/dist/index.js.map +1 -1
  206. package/dist/logger.d.ts.map +1 -1
  207. package/dist/logger.js +56 -2
  208. package/dist/logger.js.map +1 -1
  209. package/dist/plugins/types.d.ts +2 -2
  210. package/dist/sbom/provenance.test.js +2 -2
  211. package/dist/sbom/provenance.test.js.map +1 -1
  212. package/dist/sbom/signing.d.ts.map +1 -1
  213. package/dist/sbom/signing.js +5 -3
  214. package/dist/sbom/signing.js.map +1 -1
  215. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
  216. package/dist/scanners/agent/prompt-injection-fuzzer.js +26 -0
  217. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
  218. package/dist/scanners/agent/types.d.ts +10 -10
  219. package/dist/scanners/bandit.d.ts.map +1 -1
  220. package/dist/scanners/bandit.js +35 -29
  221. package/dist/scanners/bandit.js.map +1 -1
  222. package/dist/scanners/binary-analysis.d.ts.map +1 -1
  223. package/dist/scanners/binary-analysis.js +24 -49
  224. package/dist/scanners/binary-analysis.js.map +1 -1
  225. package/dist/scanners/brakeman.d.ts.map +1 -1
  226. package/dist/scanners/brakeman.js +19 -33
  227. package/dist/scanners/brakeman.js.map +1 -1
  228. package/dist/scanners/builtin-rules.d.ts +24 -0
  229. package/dist/scanners/builtin-rules.d.ts.map +1 -0
  230. package/dist/scanners/builtin-rules.js +175 -0
  231. package/dist/scanners/builtin-rules.js.map +1 -0
  232. package/dist/scanners/dast.d.ts.map +1 -1
  233. package/dist/scanners/dast.js +24 -34
  234. package/dist/scanners/dast.js.map +1 -1
  235. package/dist/scanners/deploy/types.d.ts +6 -6
  236. package/dist/scanners/eslint.d.ts.map +1 -1
  237. package/dist/scanners/eslint.js +15 -24
  238. package/dist/scanners/eslint.js.map +1 -1
  239. package/dist/scanners/gosec.d.ts.map +1 -1
  240. package/dist/scanners/gosec.js +14 -62
  241. package/dist/scanners/gosec.js.map +1 -1
  242. package/dist/scanners/index.d.ts.map +1 -1
  243. package/dist/scanners/index.js +38 -7
  244. package/dist/scanners/index.js.map +1 -1
  245. package/dist/scanners/memory-safety.d.ts.map +1 -1
  246. package/dist/scanners/memory-safety.js +27 -28
  247. package/dist/scanners/memory-safety.js.map +1 -1
  248. package/dist/scanners/openapi.d.ts.map +1 -1
  249. package/dist/scanners/openapi.js +14 -22
  250. package/dist/scanners/openapi.js.map +1 -1
  251. package/dist/scanners/race-condition.d.ts.map +1 -1
  252. package/dist/scanners/race-condition.js +17 -16
  253. package/dist/scanners/race-condition.js.map +1 -1
  254. package/dist/scanners/runtime/types.d.ts +4 -4
  255. package/dist/scanners/rust.d.ts.map +1 -1
  256. package/dist/scanners/rust.js +38 -37
  257. package/dist/scanners/rust.js.map +1 -1
  258. package/dist/scanners/scale/types.d.ts +16 -16
  259. package/dist/scanners/secrets.d.ts.map +1 -1
  260. package/dist/scanners/secrets.js +66 -78
  261. package/dist/scanners/secrets.js.map +1 -1
  262. package/dist/scanners/semgrep.d.ts +2 -0
  263. package/dist/scanners/semgrep.d.ts.map +1 -1
  264. package/dist/scanners/semgrep.js +12 -0
  265. package/dist/scanners/semgrep.js.map +1 -1
  266. package/dist/scanners/terraform.d.ts.map +1 -1
  267. package/dist/scanners/terraform.js +47 -40
  268. package/dist/scanners/terraform.js.map +1 -1
  269. package/dist/scanners/trivy.d.ts.map +1 -1
  270. package/dist/scanners/trivy.js +38 -30
  271. package/dist/scanners/trivy.js.map +1 -1
  272. package/dist/tool-guard.d.ts +40 -0
  273. package/dist/tool-guard.d.ts.map +1 -0
  274. package/dist/tool-guard.js +55 -0
  275. package/dist/tool-guard.js.map +1 -0
  276. package/dist/util/index.d.ts +2 -1
  277. package/dist/util/index.d.ts.map +1 -1
  278. package/dist/util/index.js +2 -1
  279. package/dist/util/index.js.map +1 -1
  280. package/dist/util/paths.d.ts +20 -3
  281. package/dist/util/paths.d.ts.map +1 -1
  282. package/dist/util/paths.js +84 -4
  283. package/dist/util/paths.js.map +1 -1
  284. package/dist/util/subprocess.d.ts +51 -0
  285. package/dist/util/subprocess.d.ts.map +1 -0
  286. package/dist/util/subprocess.js +77 -0
  287. package/dist/util/subprocess.js.map +1 -0
  288. package/package.json +12 -2
  289. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +0 -28
  290. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +0 -1
  291. package/dist/eval/fixtures/healthcare/audit-gaps.js +0 -90
  292. package/dist/eval/fixtures/healthcare/audit-gaps.js.map +0 -1
  293. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +0 -31
  294. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +0 -1
  295. package/dist/eval/fixtures/healthcare/consent-bypass.js +0 -61
  296. package/dist/eval/fixtures/healthcare/consent-bypass.js.map +0 -1
  297. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +0 -24
  298. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +0 -1
  299. package/dist/eval/fixtures/healthcare/phi-in-logs.js +0 -41
  300. package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +0 -1
@@ -6,26 +6,22 @@
6
6
  *
7
7
  * @module scanners/dast
8
8
  */
9
- import { exec } from "child_process";
10
- import { promisify } from "util";
11
- const execAsync = promisify(exec);
9
+ import { runCommand, probeBinary } from "../util/subprocess.js";
10
+ import { parseJson } from "../util/json.js";
12
11
  export async function checkNucleiAvailable() {
13
- try {
14
- const { stdout } = await execAsync("nuclei -version", { timeout: 10000 });
15
- const version = stdout.match(/v[\d.]+/)?.[0] || stdout.trim();
12
+ const output = await probeBinary("nuclei", ["-version"], 10000);
13
+ if (output !== null) {
16
14
  return {
17
15
  scanner: "nuclei",
18
16
  available: true,
19
- version,
20
- };
21
- }
22
- catch {
23
- return {
24
- scanner: "nuclei",
25
- available: false,
26
- error: "Nuclei not found. Install from: https://github.com/projectdiscovery/nuclei",
17
+ version: output.match(/v[\d.]+/)?.[0] || output,
27
18
  };
28
19
  }
20
+ return {
21
+ scanner: "nuclei",
22
+ available: false,
23
+ error: "Nuclei not found. Install from: https://github.com/projectdiscovery/nuclei",
24
+ };
29
25
  }
30
26
  function mapSeverity(severity) {
31
27
  switch (severity.toLowerCase()) {
@@ -54,60 +50,54 @@ export async function runNuclei(targetUrl, options) {
54
50
  error: availability.error,
55
51
  };
56
52
  }
57
- // Build command
58
- let command = `nuclei -u "${targetUrl}" -jsonl -silent`;
53
+ const args = ["-u", targetUrl, "-jsonl", "-silent"];
59
54
  // Add template filters
60
55
  if (options?.templates && options.templates.length > 0) {
61
- command += ` -t ${options.templates.join(",")}`;
56
+ args.push("-t", options.templates.join(","));
62
57
  }
63
58
  else {
64
59
  // Default to common security templates
65
- command += " -tags cve,exposure,misconfiguration,default-login";
60
+ args.push("-tags", "cve,exposure,misconfiguration,default-login");
66
61
  }
67
62
  if (options?.severity && options.severity.length > 0) {
68
- command += ` -severity ${options.severity.join(",")}`;
63
+ args.push("-severity", options.severity.join(","));
69
64
  }
70
65
  else {
71
66
  // Default to medium and above
72
- command += " -severity medium,high,critical";
67
+ args.push("-severity", "medium,high,critical");
73
68
  }
74
69
  if (options?.tags && options.tags.length > 0) {
75
- command += ` -tags ${options.tags.join(",")}`;
70
+ args.push("-tags", options.tags.join(","));
76
71
  }
77
72
  if (options?.excludeTags && options.excludeTags.length > 0) {
78
- command += ` -etags ${options.excludeTags.join(",")}`;
73
+ args.push("-etags", options.excludeTags.join(","));
79
74
  }
80
75
  if (options?.rateLimit) {
81
- command += ` -rl ${options.rateLimit}`;
76
+ args.push("-rl", String(options.rateLimit));
82
77
  }
83
78
  else {
84
- command += " -rl 50"; // Default rate limit
79
+ args.push("-rl", "50"); // Default rate limit
85
80
  }
86
81
  if (options?.concurrency) {
87
- command += ` -c ${options.concurrency}`;
82
+ args.push("-c", String(options.concurrency));
88
83
  }
89
84
  if (options?.headers) {
90
85
  for (const [key, value] of Object.entries(options.headers)) {
91
- command += ` -H "${key}: ${value}"`;
86
+ args.push("-H", `${key}: ${value}`);
92
87
  }
93
88
  }
94
89
  if (options?.followRedirects === false) {
95
- command += " -no-redirect";
90
+ args.push("-no-redirect");
96
91
  }
97
- const { stdout, stderr } = await execAsync(command, {
92
+ const { stdout } = await runCommand("nuclei", args, {
98
93
  timeout: options?.timeout || 300000, // 5 minutes default
99
94
  maxBuffer: 50 * 1024 * 1024,
100
- }).catch((error) => {
101
- if (error.stdout) {
102
- return { stdout: error.stdout, stderr: error.stderr || "" };
103
- }
104
- throw error;
105
95
  });
106
96
  const findings = [];
107
97
  const lines = stdout.split("\n").filter((l) => l.trim());
108
98
  for (const line of lines) {
109
99
  try {
110
- const result = JSON.parse(line);
100
+ const result = parseJson(line, "nuclei output line");
111
101
  findings.push({
112
102
  scanner: "nuclei",
113
103
  ruleId: `nuclei:${result["template-id"]}`,
@@ -1 +1 @@
1
- {"version":3,"file":"dast.js","sourceRoot":"","sources":["../../src/scanners/dast.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dast.js","sourceRoot":"","sources":["../../src/scanners/dast.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkC5C,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM;SAChD,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,QAAQ;QACjB,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,4EAA4E;KACpF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,QAAQ,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/B,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB,KAAK,MAAM;YACT,OAAO,MAAM,CAAC;QAChB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,KAAK,CAAC;QACf;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAcD,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,SAAiB,EACjB,OAAqB;IAErB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,MAAM,oBAAoB,EAAE,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;YAC5B,OAAO;gBACL,OAAO,EAAE,QAAQ;gBACjB,QAAQ,EAAE,EAAE;gBACZ,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;gBAChC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,YAAY,CAAC,KAAK;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEpD,uBAAuB;QACvB,IAAI,OAAO,EAAE,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,uCAAuC;YACvC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,6CAA6C,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,OAAO,EAAE,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,8BAA8B;YAC9B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;QACjD,CAAC;QAED,IAAI,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,OAAO,EAAE,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB;QAC/C,CAAC;QAED,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,eAAe,KAAK,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC5B,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE;YAClD,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,oBAAoB;YACzD,SAAS,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;SAC5B,CAAC,CAAC;QAEH,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,SAAS,CAAe,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBACnE,QAAQ,CAAC,IAAI,CAAC;oBACZ,OAAO,EAAE,QAAiB;oBAC1B,MAAM,EAAE,UAAU,MAAM,CAAC,aAAa,CAAC,EAAE;oBACzC,IAAI,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI;oBACnC,IAAI,EAAE,CAAC;oBACP,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;oBAC5E,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC3C,UAAU,EAAE,GAAG;oBACf,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;oBAC9C,QAAQ,EAAE;wBACR,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC;wBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;wBACzB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;wBACtB,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;wBACjC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,CAAC;wBAC9C,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,EAAE,KAAK;wBAClD,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC;wBACnC,gBAAgB,EAAE,MAAM,CAAC,mBAAmB,CAAC;qBAC9C;iBACF,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,sBAAsB;YACxB,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,YAAY,CAAC,OAAO;SAC9B,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;YAChC,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;SAChE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAiB,EACjB,OAAqB;IAErB,OAAO,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB;IAEjB,OAAO,SAAS,CAAC,SAAS,EAAE;QAC1B,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;QAC9B,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,CAAC;QAC1C,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;AACL,CAAC;AAgBD,MAAM,UAAU,kBAAkB,CAChC,SAAiB,EACjB,MAAqB;IAErB,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,MAAM;QACzE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM;QACjE,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,MAAM;QACrE,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,MAAM;KAChE,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,YAAY,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC;IAChD,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;IACpD,KAAK,CAAC,IAAI,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9C,KAAK,CAAC,IAAI,CAAC,mBAAmB,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,CAAC;IAC1D,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,EAAE,WAAiC,CAAC;YACxE,IAAI,WAAW,EAAE,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACxB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;YACD,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,EAAE,UAAkC,CAAC;YACxE,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;gBACzB,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -117,9 +117,9 @@ export declare const SmokeTestSchema: z.ZodObject<{
117
117
  path?: string | undefined;
118
118
  }>, "many">>;
119
119
  }, "strip", z.ZodTypeAny, {
120
+ method: "GET" | "POST" | "PUT" | "DELETE";
120
121
  name: string;
121
122
  timeout: number;
122
- method: "GET" | "POST" | "PUT" | "DELETE";
123
123
  endpoint: string;
124
124
  expectedStatus: number;
125
125
  headers?: Record<string, string> | undefined;
@@ -133,10 +133,10 @@ export declare const SmokeTestSchema: z.ZodObject<{
133
133
  }, {
134
134
  name: string;
135
135
  endpoint: string;
136
+ method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
136
137
  timeout?: number | undefined;
137
138
  headers?: Record<string, string> | undefined;
138
139
  body?: Record<string, unknown> | undefined;
139
- method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
140
140
  expectedStatus?: number | undefined;
141
141
  assertions?: {
142
142
  value: string | number;
@@ -177,9 +177,9 @@ export declare const DeployConfigSchema: z.ZodObject<{
177
177
  path?: string | undefined;
178
178
  }>, "many">>;
179
179
  }, "strip", z.ZodTypeAny, {
180
+ method: "GET" | "POST" | "PUT" | "DELETE";
180
181
  name: string;
181
182
  timeout: number;
182
- method: "GET" | "POST" | "PUT" | "DELETE";
183
183
  endpoint: string;
184
184
  expectedStatus: number;
185
185
  headers?: Record<string, string> | undefined;
@@ -193,10 +193,10 @@ export declare const DeployConfigSchema: z.ZodObject<{
193
193
  }, {
194
194
  name: string;
195
195
  endpoint: string;
196
+ method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
196
197
  timeout?: number | undefined;
197
198
  headers?: Record<string, string> | undefined;
198
199
  body?: Record<string, unknown> | undefined;
199
- method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
200
200
  expectedStatus?: number | undefined;
201
201
  assertions?: {
202
202
  value: string | number;
@@ -279,9 +279,9 @@ export declare const DeployConfigSchema: z.ZodObject<{
279
279
  } | undefined;
280
280
  } | undefined;
281
281
  smokeTests?: {
282
+ method: "GET" | "POST" | "PUT" | "DELETE";
282
283
  name: string;
283
284
  timeout: number;
284
- method: "GET" | "POST" | "PUT" | "DELETE";
285
285
  endpoint: string;
286
286
  expectedStatus: number;
287
287
  headers?: Record<string, string> | undefined;
@@ -318,10 +318,10 @@ export declare const DeployConfigSchema: z.ZodObject<{
318
318
  smokeTests?: {
319
319
  name: string;
320
320
  endpoint: string;
321
+ method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
321
322
  timeout?: number | undefined;
322
323
  headers?: Record<string, string> | undefined;
323
324
  body?: Record<string, unknown> | undefined;
324
- method?: "GET" | "POST" | "PUT" | "DELETE" | undefined;
325
325
  expectedStatus?: number | undefined;
326
326
  assertions?: {
327
327
  value: string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../src/scanners/eslint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAwB,aAAa,EAAE,mBAAmB,EAAuB,MAAM,YAAY,CAAC;AAqEhH;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAiBzE;AAmDD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GACA,OAAO,CAAC,aAAa,CAAC,CA0JxB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE"}
1
+ {"version":3,"file":"eslint.d.ts","sourceRoot":"","sources":["../../src/scanners/eslint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAwB,aAAa,EAAE,mBAAmB,EAAuB,MAAM,YAAY,CAAC;AAmEhH;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAczE;AAmDD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GACA,OAAO,CAAC,aAAa,CAAC,CAqJxB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAExE"}
@@ -5,10 +5,10 @@
5
5
  *
6
6
  * @module scanners/eslint
7
7
  */
8
- import { exec } from "child_process";
9
- import { promisify } from "util";
10
8
  import { access } from "fs/promises";
11
9
  import { join } from "path";
10
+ import { runCommand, probeBinary } from "../util/subprocess.js";
11
+ import { parseJson } from "../util/json.js";
12
12
  function buildErrorDetails(phase, message, suggestions = [], fullOutput) {
13
13
  return {
14
14
  message,
@@ -17,7 +17,6 @@ function buildErrorDetails(phase, message, suggestions = [], fullOutput) {
17
17
  fullOutput,
18
18
  };
19
19
  }
20
- const execAsync = promisify(exec);
21
20
  /**
22
21
  * Security-related ESLint rules to flag
23
22
  */
@@ -45,22 +44,19 @@ const SECURITY_RULES = new Set([
45
44
  * Check if ESLint is available
46
45
  */
47
46
  export async function checkEslintAvailable() {
48
- try {
49
- const { stdout } = await execAsync("npx eslint --version", { timeout: 10000 });
50
- const version = stdout.trim();
47
+ const version = await probeBinary("npx", ["eslint", "--version"], 10000);
48
+ if (version !== null) {
51
49
  return {
52
50
  scanner: "eslint",
53
51
  available: true,
54
52
  version,
55
53
  };
56
54
  }
57
- catch (error) {
58
- return {
59
- scanner: "eslint",
60
- available: false,
61
- error: error instanceof Error ? error.message : "ESLint not found",
62
- };
63
- }
55
+ return {
56
+ scanner: "eslint",
57
+ available: false,
58
+ error: "ESLint not found",
59
+ };
64
60
  }
65
61
  /**
66
62
  * Map ESLint severity to vaspera severity
@@ -149,26 +145,21 @@ export async function runEslint(projectPath, options) {
149
145
  // Build command
150
146
  const extensions = options?.extensions || [".js", ".jsx", ".ts", ".tsx"];
151
147
  const extArg = extensions.map((e) => e.replace(".", "")).join(",");
152
- let command = `npx eslint "${projectPath}" --ext ${extArg} --format json`;
148
+ const args = ["eslint", projectPath, "--ext", extArg, "--format", "json"];
153
149
  if (options?.fix) {
154
- command += " --fix";
150
+ args.push("--fix");
155
151
  }
156
- // Run ESLint
157
- const { stdout, stderr } = await execAsync(command, {
152
+ // ESLint exits with code 1 if there are errors; runCommand tolerates
153
+ // non-zero exits that still produced stdout.
154
+ const { stdout, stderr } = await runCommand("npx", args, {
158
155
  timeout: options?.timeout || 120000,
159
156
  maxBuffer: 10 * 1024 * 1024, // 10MB
160
157
  cwd: projectPath,
161
- }).catch((error) => {
162
- // ESLint exits with code 1 if there are errors
163
- if (error.stdout) {
164
- return { stdout: error.stdout, stderr: error.stderr || "" };
165
- }
166
- throw error;
167
158
  });
168
159
  // Parse JSON output
169
160
  let output;
170
161
  try {
171
- output = JSON.parse(stdout);
162
+ output = parseJson(stdout, "eslint output");
172
163
  }
173
164
  catch {
174
165
  const combinedOutput = `stdout: ${stdout.slice(0, 2000)}\nstderr: ${stderr?.slice(0, 500) || ""}`;
@@ -1 +1 @@
1
- {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../src/scanners/eslint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eslint.js","sourceRoot":"","sources":["../../src/scanners/eslint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gosec.d.ts","sourceRoot":"","sources":["../../src/scanners/gosec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAwB,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AA6E3F;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAiBxE;AASD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,aAAa,CAAC,CAoFxB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAWpE"}
1
+ {"version":3,"file":"gosec.d.ts","sourceRoot":"","sources":["../../src/scanners/gosec.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAwB,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAgC3F;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAcxE;AASD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GACA,OAAO,CAAC,aAAa,CAAC,CA0ExB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAYpE"}
@@ -5,64 +5,26 @@
5
5
  *
6
6
  * @module scanners/gosec
7
7
  */
8
- import { exec, spawn } from "child_process";
9
- import { promisify } from "util";
8
+ import { runCommand, probeBinary } from "../util/subprocess.js";
9
+ import { parseJson } from "../util/json.js";
10
10
  import { SEVERITY_MAPPINGS } from "./types.js";
11
- const execAsync = promisify(exec);
12
- /**
13
- * Run a command with spawn and return stdout/stderr
14
- */
15
- function runSpawn(command, args, options) {
16
- return new Promise((resolve, reject) => {
17
- const child = spawn(command, args, {
18
- cwd: options.cwd,
19
- timeout: options.timeout,
20
- });
21
- let stdout = "";
22
- let stderr = "";
23
- child.stdout.on("data", (data) => {
24
- stdout += data.toString();
25
- });
26
- child.stderr.on("data", (data) => {
27
- stderr += data.toString();
28
- });
29
- child.on("close", (code) => {
30
- // gosec exits with code 1 if issues are found, which is expected
31
- if (code === 0 || (code === 1 && stdout)) {
32
- resolve({ stdout, stderr });
33
- }
34
- else {
35
- const error = new Error(`gosec exited with code ${code}`);
36
- error.stdout = stdout;
37
- error.stderr = stderr;
38
- reject(error);
39
- }
40
- });
41
- child.on("error", (err) => {
42
- reject(err);
43
- });
44
- });
45
- }
46
11
  /**
47
12
  * Check if gosec is available
48
13
  */
49
14
  export async function checkGosecAvailable() {
50
- try {
51
- const { stdout } = await execAsync("gosec --version", { timeout: 5000 });
52
- const version = stdout.trim();
15
+ const version = await probeBinary("gosec");
16
+ if (version !== null) {
53
17
  return {
54
18
  scanner: "gosec",
55
19
  available: true,
56
20
  version,
57
21
  };
58
22
  }
59
- catch (error) {
60
- return {
61
- scanner: "gosec",
62
- available: false,
63
- error: error instanceof Error ? error.message : "gosec not found",
64
- };
65
- }
23
+ return {
24
+ scanner: "gosec",
25
+ available: false,
26
+ error: "gosec not found",
27
+ };
66
28
  }
67
29
  /**
68
30
  * Convert gosec severity to vaspera severity
@@ -87,7 +49,6 @@ export async function runGosec(projectPath, options) {
87
49
  error: "gosec is not installed. Install with: go install github.com/securego/gosec/v2/cmd/gosec@latest",
88
50
  };
89
51
  }
90
- // Build command args (array to prevent command injection)
91
52
  const args = ["-fmt=json"];
92
53
  if (options?.exclude && options.exclude.length > 0) {
93
54
  args.push(`-exclude=${options.exclude.join(",")}`);
@@ -97,22 +58,13 @@ export async function runGosec(projectPath, options) {
97
58
  }
98
59
  // Add the target path (./... scans all packages)
99
60
  args.push("./...");
100
- // Run gosec with spawn (safer than exec with string)
101
- const { stdout, stderr } = await runSpawn("gosec", args, {
61
+ // gosec exits with code 1 if issues are found; runCommand tolerates
62
+ // non-zero exits that still produced stdout.
63
+ const { stdout } = await runCommand("gosec", args, {
102
64
  timeout: options?.timeout || 120000,
103
65
  cwd: projectPath,
104
- }).catch((error) => {
105
- // gosec exits with code 1 if issues are found
106
- if (error.stdout) {
107
- return {
108
- stdout: error.stdout,
109
- stderr: error.stderr || "",
110
- };
111
- }
112
- throw error;
113
66
  });
114
- // Parse JSON output
115
- const output = JSON.parse(stdout);
67
+ const output = parseJson(stdout, "gosec output");
116
68
  // Convert to DeterministicFindings
117
69
  const findings = output.Issues.map((issue) => ({
118
70
  scanner: "gosec",
@@ -156,7 +108,7 @@ export async function runGosec(projectPath, options) {
156
108
  export async function detectGo(projectPath) {
157
109
  try {
158
110
  // Check for common Go files
159
- const { stdout } = await execAsync(`find "${projectPath}" -maxdepth 3 -name "*.go" -o -name "go.mod" | head -1`, { timeout: 5000 });
111
+ const { stdout } = await runCommand("find", [projectPath, "-maxdepth", "3", "-name", "*.go", "-o", "-name", "go.mod"], { timeout: 5000 });
160
112
  return stdout.trim().length > 0;
161
113
  }
162
114
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"gosec.js","sourceRoot":"","sources":["../../src/scanners/gosec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"gosec.js","sourceRoot":"","sources":["../../src/scanners/gosec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/scanners/index.ts"],"names":[],"mappings":"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"}
@@ -47,9 +47,7 @@ import { runDetection as runDetectionEngine } from "./detection/index.js";
47
47
  import { logger } from "../logger.js";
48
48
  import { access } from "fs/promises";
49
49
  import { join } from "path";
50
- import { exec } from "child_process";
51
- import { promisify } from "util";
52
- const execAsync = promisify(exec);
50
+ import { runCommand } from "../util/subprocess.js";
53
51
  /**
54
52
  * Run all enabled scanners and aggregate results
55
53
  */
@@ -225,7 +223,25 @@ export async function detectJavaScript(projectPath) {
225
223
  catch {
226
224
  // Check for JS/TS files
227
225
  try {
228
- const { stdout } = await execAsync(`find "${projectPath}" -maxdepth 3 \\( -name "*.js" -o -name "*.ts" -o -name "*.jsx" -o -name "*.tsx" \\) | head -1`, { timeout: 5000 });
226
+ const { stdout } = await runCommand("find", [
227
+ projectPath,
228
+ "-maxdepth",
229
+ "3",
230
+ "(",
231
+ "-name",
232
+ "*.js",
233
+ "-o",
234
+ "-name",
235
+ "*.ts",
236
+ "-o",
237
+ "-name",
238
+ "*.jsx",
239
+ "-o",
240
+ "-name",
241
+ "*.tsx",
242
+ ")",
243
+ "-print",
244
+ ], { timeout: 5000 });
229
245
  return stdout.trim().length > 0;
230
246
  }
231
247
  catch {
@@ -249,7 +265,7 @@ export async function detectRuby(projectPath) {
249
265
  catch {
250
266
  // Check for .rb files
251
267
  try {
252
- const { stdout } = await execAsync(`find "${projectPath}" -maxdepth 3 -name "*.rb" | head -1`, { timeout: 5000 });
268
+ const { stdout } = await runCommand("find", [projectPath, "-maxdepth", "3", "-name", "*.rb", "-print"], { timeout: 5000 });
253
269
  return stdout.trim().length > 0;
254
270
  }
255
271
  catch {
@@ -279,7 +295,7 @@ export async function detectJava(projectPath) {
279
295
  catch {
280
296
  // Check for .java files
281
297
  try {
282
- const { stdout } = await execAsync(`find "${projectPath}" -maxdepth 3 -name "*.java" | head -1`, { timeout: 5000 });
298
+ const { stdout } = await runCommand("find", [projectPath, "-maxdepth", "3", "-name", "*.java", "-print"], { timeout: 5000 });
283
299
  return stdout.trim().length > 0;
284
300
  }
285
301
  catch {
@@ -294,7 +310,22 @@ export async function detectJava(projectPath) {
294
310
  */
295
311
  export async function detectDocker(projectPath) {
296
312
  try {
297
- const { stdout } = await execAsync(`find "${projectPath}" -maxdepth 2 \\( -name "Dockerfile*" -o -name "docker-compose*.yml" -o -name "docker-compose*.yaml" \\) | head -1`, { timeout: 5000 });
313
+ const { stdout } = await runCommand("find", [
314
+ projectPath,
315
+ "-maxdepth",
316
+ "2",
317
+ "(",
318
+ "-name",
319
+ "Dockerfile*",
320
+ "-o",
321
+ "-name",
322
+ "docker-compose*.yml",
323
+ "-o",
324
+ "-name",
325
+ "docker-compose*.yaml",
326
+ ")",
327
+ "-print",
328
+ ], { timeout: 5000 });
298
329
  return stdout.trim().length > 0;
299
330
  }
300
331
  catch {