vaspera 2.9.0 → 2.10.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 (166) hide show
  1. package/CHANGELOG.md +122 -7
  2. package/README.md +58 -1
  3. package/dist/__tests__/autofix/branch-manager.test.d.ts +2 -0
  4. package/dist/__tests__/autofix/branch-manager.test.d.ts.map +1 -0
  5. package/dist/__tests__/autofix/branch-manager.test.js +60 -0
  6. package/dist/__tests__/autofix/branch-manager.test.js.map +1 -0
  7. package/dist/__tests__/autofix/commit-generator.test.d.ts +2 -0
  8. package/dist/__tests__/autofix/commit-generator.test.d.ts.map +1 -0
  9. package/dist/__tests__/autofix/commit-generator.test.js +147 -0
  10. package/dist/__tests__/autofix/commit-generator.test.js.map +1 -0
  11. package/dist/__tests__/autofix/constitution.test.d.ts +9 -0
  12. package/dist/__tests__/autofix/constitution.test.d.ts.map +1 -0
  13. package/dist/__tests__/autofix/constitution.test.js +421 -0
  14. package/dist/__tests__/autofix/constitution.test.js.map +1 -0
  15. package/dist/__tests__/autofix/pr-generator.test.d.ts +2 -0
  16. package/dist/__tests__/autofix/pr-generator.test.d.ts.map +1 -0
  17. package/dist/__tests__/autofix/pr-generator.test.js +152 -0
  18. package/dist/__tests__/autofix/pr-generator.test.js.map +1 -0
  19. package/dist/__tests__/property-test-helpers.d.ts +87 -0
  20. package/dist/__tests__/property-test-helpers.d.ts.map +1 -0
  21. package/dist/__tests__/property-test-helpers.js +136 -0
  22. package/dist/__tests__/property-test-helpers.js.map +1 -0
  23. package/dist/__tests__/scanners/dast/index.test.d.ts +2 -0
  24. package/dist/__tests__/scanners/dast/index.test.d.ts.map +1 -0
  25. package/dist/__tests__/scanners/dast/index.test.js +183 -0
  26. package/dist/__tests__/scanners/dast/index.test.js.map +1 -0
  27. package/dist/__tests__/scanners/dast/nuclei.test.d.ts +2 -0
  28. package/dist/__tests__/scanners/dast/nuclei.test.d.ts.map +1 -0
  29. package/dist/__tests__/scanners/dast/nuclei.test.js +166 -0
  30. package/dist/__tests__/scanners/dast/nuclei.test.js.map +1 -0
  31. package/dist/__tests__/scanners/dast/zap.test.d.ts +2 -0
  32. package/dist/__tests__/scanners/dast/zap.test.d.ts.map +1 -0
  33. package/dist/__tests__/scanners/dast/zap.test.js +158 -0
  34. package/dist/__tests__/scanners/dast/zap.test.js.map +1 -0
  35. package/dist/__tests__/scanners/fp-feedback.test.d.ts +2 -0
  36. package/dist/__tests__/scanners/fp-feedback.test.d.ts.map +1 -0
  37. package/dist/__tests__/scanners/fp-feedback.test.js +202 -0
  38. package/dist/__tests__/scanners/fp-feedback.test.js.map +1 -0
  39. package/dist/__tests__/scanners/fp-filter.property.test.d.ts +9 -0
  40. package/dist/__tests__/scanners/fp-filter.property.test.d.ts.map +1 -0
  41. package/dist/__tests__/scanners/fp-filter.property.test.js +253 -0
  42. package/dist/__tests__/scanners/fp-filter.property.test.js.map +1 -0
  43. package/dist/__tests__/scanners/fp-filter.test.d.ts +2 -0
  44. package/dist/__tests__/scanners/fp-filter.test.d.ts.map +1 -0
  45. package/dist/__tests__/scanners/fp-filter.test.js +234 -0
  46. package/dist/__tests__/scanners/fp-filter.test.js.map +1 -0
  47. package/dist/__tests__/scanners/fp-tracker.test.d.ts +2 -0
  48. package/dist/__tests__/scanners/fp-tracker.test.d.ts.map +1 -0
  49. package/dist/__tests__/scanners/fp-tracker.test.js +262 -0
  50. package/dist/__tests__/scanners/fp-tracker.test.js.map +1 -0
  51. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.d.ts +10 -0
  52. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.d.ts.map +1 -0
  53. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.js +238 -0
  54. package/dist/__tests__/scanners/logic/endpoint-analyzer.property.test.js.map +1 -0
  55. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.d.ts +2 -0
  56. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.d.ts.map +1 -0
  57. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.js +55 -0
  58. package/dist/__tests__/scanners/logic/endpoint-analyzer.test.js.map +1 -0
  59. package/dist/__tests__/scanners/logic/index.test.d.ts +2 -0
  60. package/dist/__tests__/scanners/logic/index.test.d.ts.map +1 -0
  61. package/dist/__tests__/scanners/logic/index.test.js +165 -0
  62. package/dist/__tests__/scanners/logic/index.test.js.map +1 -0
  63. package/dist/__tests__/scanners/logic/types.test.d.ts +2 -0
  64. package/dist/__tests__/scanners/logic/types.test.d.ts.map +1 -0
  65. package/dist/__tests__/scanners/logic/types.test.js +85 -0
  66. package/dist/__tests__/scanners/logic/types.test.js.map +1 -0
  67. package/dist/action/pr-comment.test.js +4 -0
  68. package/dist/action/pr-comment.test.js.map +1 -1
  69. package/dist/action/sarif-upload.test.js +4 -0
  70. package/dist/action/sarif-upload.test.js.map +1 -1
  71. package/dist/autofix/branch-manager.d.ts +115 -0
  72. package/dist/autofix/branch-manager.d.ts.map +1 -0
  73. package/dist/autofix/branch-manager.js +308 -0
  74. package/dist/autofix/branch-manager.js.map +1 -0
  75. package/dist/autofix/commit-generator.d.ts +55 -0
  76. package/dist/autofix/commit-generator.d.ts.map +1 -0
  77. package/dist/autofix/commit-generator.js +277 -0
  78. package/dist/autofix/commit-generator.js.map +1 -0
  79. package/dist/autofix/constitution.d.ts +77 -0
  80. package/dist/autofix/constitution.d.ts.map +1 -0
  81. package/dist/autofix/constitution.js +261 -0
  82. package/dist/autofix/constitution.js.map +1 -0
  83. package/dist/autofix/constitution.schema.d.ts +441 -0
  84. package/dist/autofix/constitution.schema.d.ts.map +1 -0
  85. package/dist/autofix/constitution.schema.js +144 -0
  86. package/dist/autofix/constitution.schema.js.map +1 -0
  87. package/dist/autofix/index.d.ts +13 -0
  88. package/dist/autofix/index.d.ts.map +1 -0
  89. package/dist/autofix/index.js +15 -0
  90. package/dist/autofix/index.js.map +1 -0
  91. package/dist/autofix/pr-generator.d.ts +57 -0
  92. package/dist/autofix/pr-generator.d.ts.map +1 -0
  93. package/dist/autofix/pr-generator.js +597 -0
  94. package/dist/autofix/pr-generator.js.map +1 -0
  95. package/dist/autofix/types.d.ts +151 -0
  96. package/dist/autofix/types.d.ts.map +1 -0
  97. package/dist/autofix/types.js +22 -0
  98. package/dist/autofix/types.js.map +1 -0
  99. package/dist/eval/fixtures.d.ts +20 -0
  100. package/dist/eval/fixtures.d.ts.map +1 -1
  101. package/dist/eval/fixtures.js +430 -0
  102. package/dist/eval/fixtures.js.map +1 -1
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +84 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/scanners/cache.d.ts.map +1 -1
  107. package/dist/scanners/cache.js +4 -0
  108. package/dist/scanners/cache.js.map +1 -1
  109. package/dist/scanners/dast/index.d.ts +39 -0
  110. package/dist/scanners/dast/index.d.ts.map +1 -0
  111. package/dist/scanners/dast/index.js +259 -0
  112. package/dist/scanners/dast/index.js.map +1 -0
  113. package/dist/scanners/dast/nuclei.d.ts +26 -0
  114. package/dist/scanners/dast/nuclei.d.ts.map +1 -0
  115. package/dist/scanners/dast/nuclei.js +354 -0
  116. package/dist/scanners/dast/nuclei.js.map +1 -0
  117. package/dist/scanners/dast/types.d.ts +306 -0
  118. package/dist/scanners/dast/types.d.ts.map +1 -0
  119. package/dist/scanners/dast/types.js +52 -0
  120. package/dist/scanners/dast/types.js.map +1 -0
  121. package/dist/scanners/dast/zap.d.ts +26 -0
  122. package/dist/scanners/dast/zap.d.ts.map +1 -0
  123. package/dist/scanners/dast/zap.js +453 -0
  124. package/dist/scanners/dast/zap.js.map +1 -0
  125. package/dist/scanners/fp-feedback.d.ts +140 -0
  126. package/dist/scanners/fp-feedback.d.ts.map +1 -0
  127. package/dist/scanners/fp-feedback.js +292 -0
  128. package/dist/scanners/fp-feedback.js.map +1 -0
  129. package/dist/scanners/fp-filter.d.ts +94 -0
  130. package/dist/scanners/fp-filter.d.ts.map +1 -0
  131. package/dist/scanners/fp-filter.js +397 -0
  132. package/dist/scanners/fp-filter.js.map +1 -0
  133. package/dist/scanners/fp-tracker.d.ts +125 -0
  134. package/dist/scanners/fp-tracker.d.ts.map +1 -0
  135. package/dist/scanners/fp-tracker.js +330 -0
  136. package/dist/scanners/fp-tracker.js.map +1 -0
  137. package/dist/scanners/index.d.ts.map +1 -1
  138. package/dist/scanners/index.js +56 -0
  139. package/dist/scanners/index.js.map +1 -1
  140. package/dist/scanners/index.test.js +6 -6
  141. package/dist/scanners/index.test.js.map +1 -1
  142. package/dist/scanners/logic/auth-flow-analyzer.d.ts +18 -0
  143. package/dist/scanners/logic/auth-flow-analyzer.d.ts.map +1 -0
  144. package/dist/scanners/logic/auth-flow-analyzer.js +384 -0
  145. package/dist/scanners/logic/auth-flow-analyzer.js.map +1 -0
  146. package/dist/scanners/logic/endpoint-analyzer.d.ts +29 -0
  147. package/dist/scanners/logic/endpoint-analyzer.d.ts.map +1 -0
  148. package/dist/scanners/logic/endpoint-analyzer.js +528 -0
  149. package/dist/scanners/logic/endpoint-analyzer.js.map +1 -0
  150. package/dist/scanners/logic/index.d.ts +41 -0
  151. package/dist/scanners/logic/index.d.ts.map +1 -0
  152. package/dist/scanners/logic/index.js +268 -0
  153. package/dist/scanners/logic/index.js.map +1 -0
  154. package/dist/scanners/logic/types.d.ts +254 -0
  155. package/dist/scanners/logic/types.d.ts.map +1 -0
  156. package/dist/scanners/logic/types.js +142 -0
  157. package/dist/scanners/logic/types.js.map +1 -0
  158. package/dist/scanners/types.d.ts +1 -1
  159. package/dist/scanners/types.d.ts.map +1 -1
  160. package/dist/scanners/types.js +4 -0
  161. package/dist/scanners/types.js.map +1 -1
  162. package/dist/telemetry/usage.d.ts +1 -1
  163. package/dist/telemetry/usage.d.ts.map +1 -1
  164. package/dist/telemetry/usage.js +14 -6
  165. package/dist/telemetry/usage.js.map +1 -1
  166. package/package.json +6 -8
@@ -0,0 +1,354 @@
1
+ /**
2
+ * Nuclei Scanner Integration
3
+ *
4
+ * Integrates with ProjectDiscovery's Nuclei for dynamic
5
+ * application security testing using template-based scanning.
6
+ *
7
+ * @module scanners/dast/nuclei
8
+ */
9
+ import spawn from "cross-spawn";
10
+ import { logger } from "../../logger.js";
11
+ import { NUCLEI_SEVERITY_MAPPING } from "./types.js";
12
+ /**
13
+ * Check if Nuclei is available
14
+ */
15
+ export async function checkNucleiAvailable() {
16
+ return new Promise((resolve) => {
17
+ const child = spawn("nuclei", ["-version"], { timeout: 10000 });
18
+ let stdout = "";
19
+ let stderr = "";
20
+ child.stdout?.on("data", (data) => {
21
+ stdout += data.toString();
22
+ });
23
+ child.stderr?.on("data", (data) => {
24
+ stderr += data.toString();
25
+ });
26
+ child.on("close", (code) => {
27
+ if (code === 0) {
28
+ // Parse version from output (e.g., "Nuclei Engine Version: v3.1.0")
29
+ const versionMatch = (stdout + stderr).match(/v?\d+\.\d+\.\d+/);
30
+ const version = versionMatch ? versionMatch[0] : "unknown";
31
+ resolve({
32
+ scanner: "nuclei",
33
+ available: true,
34
+ version,
35
+ path: "nuclei",
36
+ features: {
37
+ passiveScan: true,
38
+ activeScan: true,
39
+ apiScan: true,
40
+ authentication: true,
41
+ },
42
+ });
43
+ }
44
+ else {
45
+ resolve({
46
+ scanner: "nuclei",
47
+ available: false,
48
+ error: "Nuclei not found. Install via: go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest",
49
+ });
50
+ }
51
+ });
52
+ child.on("error", () => {
53
+ resolve({
54
+ scanner: "nuclei",
55
+ available: false,
56
+ error: "Nuclei not found. Install via: go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest",
57
+ });
58
+ });
59
+ });
60
+ }
61
+ /**
62
+ * Build Nuclei command arguments
63
+ */
64
+ function buildNucleiArgs(target, policy) {
65
+ const args = [
66
+ "-u", target.url,
67
+ "-json", // JSON output
68
+ "-silent", // Minimal output
69
+ "-no-color", // No ANSI colors
70
+ ];
71
+ // Add severity filter based on risk threshold
72
+ if (policy.riskThreshold) {
73
+ const severityMap = {
74
+ high: "critical,high",
75
+ medium: "critical,high,medium",
76
+ low: "critical,high,medium,low",
77
+ informational: "critical,high,medium,low,info",
78
+ };
79
+ args.push("-severity", severityMap[policy.riskThreshold] || "critical,high,medium");
80
+ }
81
+ // Add specific templates if provided
82
+ if (policy.templates && policy.templates.length > 0) {
83
+ for (const template of policy.templates) {
84
+ args.push("-t", template);
85
+ }
86
+ }
87
+ // Add template tags
88
+ if (policy.templateTags && policy.templateTags.length > 0) {
89
+ args.push("-tags", policy.templateTags.join(","));
90
+ }
91
+ // Exclude tags
92
+ if (policy.excludeTags && policy.excludeTags.length > 0) {
93
+ args.push("-etags", policy.excludeTags.join(","));
94
+ }
95
+ // Passive-only mode (no active exploitation)
96
+ if (policy.passiveOnly) {
97
+ args.push("-passive");
98
+ }
99
+ // Rate limiting
100
+ if (policy.requestDelay && policy.requestDelay > 0) {
101
+ // Nuclei uses rate-limit as requests per second
102
+ const rps = Math.floor(1000 / policy.requestDelay);
103
+ args.push("-rate-limit", String(Math.max(1, rps)));
104
+ }
105
+ // Concurrency
106
+ if (policy.threads) {
107
+ args.push("-concurrency", String(policy.threads));
108
+ }
109
+ // Add custom headers
110
+ if (target.headers) {
111
+ for (const [key, value] of Object.entries(target.headers)) {
112
+ args.push("-header", `${key}: ${value}`);
113
+ }
114
+ }
115
+ // Add authentication header
116
+ if (target.authentication) {
117
+ const auth = target.authentication;
118
+ switch (auth.type) {
119
+ case "bearer":
120
+ if (auth.credentials.token) {
121
+ args.push("-header", `Authorization: Bearer ${auth.credentials.token}`);
122
+ }
123
+ break;
124
+ case "basic":
125
+ if (auth.credentials.username && auth.credentials.password) {
126
+ const encoded = Buffer.from(`${auth.credentials.username}:${auth.credentials.password}`).toString("base64");
127
+ args.push("-header", `Authorization: Basic ${encoded}`);
128
+ }
129
+ break;
130
+ case "api-key":
131
+ if (auth.credentials.apiKey && auth.credentials.apiKeyHeader) {
132
+ args.push("-header", `${auth.credentials.apiKeyHeader}: ${auth.credentials.apiKey}`);
133
+ }
134
+ break;
135
+ case "cookie":
136
+ if (auth.credentials.cookie) {
137
+ args.push("-header", `Cookie: ${auth.credentials.cookie}`);
138
+ }
139
+ break;
140
+ }
141
+ }
142
+ return args;
143
+ }
144
+ /**
145
+ * Parse Nuclei JSON line output to DASTFinding
146
+ */
147
+ export function parseNucleiResult(result) {
148
+ const severity = NUCLEI_SEVERITY_MAPPING[result.info.severity] || "info";
149
+ // Extract CWE and CVE IDs
150
+ const cweIds = result.info.classification?.["cwe-id"]?.map((id) => id.startsWith("CWE-") ? id : `CWE-${id}`);
151
+ const cveIds = result.info.classification?.["cve-id"];
152
+ // Build references array
153
+ const references = [];
154
+ if (result.info.reference) {
155
+ references.push(...result.info.reference);
156
+ }
157
+ if (result["template-url"]) {
158
+ references.push(result["template-url"]);
159
+ }
160
+ return {
161
+ scanner: "nuclei",
162
+ ruleId: `nuclei-${result["template-id"]}`,
163
+ name: result.info.name,
164
+ description: result.info.description || `${result.info.name} detected`,
165
+ severity,
166
+ confidence: getConfidenceFromSeverity(result.info.severity),
167
+ url: result.matched || result.host,
168
+ method: extractMethod(result.request),
169
+ evidence: result["extracted-results"]?.join("\n"),
170
+ cweIds,
171
+ cveIds,
172
+ references,
173
+ tags: result.info.tags,
174
+ timestamp: result.timestamp || new Date().toISOString(),
175
+ rawOutput: result,
176
+ };
177
+ }
178
+ /**
179
+ * Extract HTTP method from curl command or request
180
+ */
181
+ function extractMethod(request) {
182
+ if (!request)
183
+ return undefined;
184
+ const methodMatch = request.match(/^(GET|POST|PUT|DELETE|PATCH|HEAD|OPTIONS)\s/);
185
+ return methodMatch ? methodMatch[1] : undefined;
186
+ }
187
+ /**
188
+ * Get confidence score based on severity
189
+ */
190
+ function getConfidenceFromSeverity(severity) {
191
+ switch (severity.toLowerCase()) {
192
+ case "critical":
193
+ return 95;
194
+ case "high":
195
+ return 90;
196
+ case "medium":
197
+ return 80;
198
+ case "low":
199
+ return 70;
200
+ default:
201
+ return 60;
202
+ }
203
+ }
204
+ /**
205
+ * Run Nuclei scan
206
+ */
207
+ export async function runNuclei(target, policy = {}) {
208
+ const startTime = new Date();
209
+ const mergedPolicy = { ...{ passiveOnly: true, maxDuration: 300, riskThreshold: "medium" }, ...policy };
210
+ logger.info("nuclei.scan_start", {
211
+ target: target.url,
212
+ passiveOnly: mergedPolicy.passiveOnly,
213
+ });
214
+ // Check availability
215
+ const availability = await checkNucleiAvailable();
216
+ if (!availability.available) {
217
+ return {
218
+ scanner: "nuclei",
219
+ target,
220
+ findings: [],
221
+ duration: Date.now() - startTime.getTime(),
222
+ success: false,
223
+ error: availability.error || "Nuclei not available",
224
+ stats: {
225
+ requestCount: 0,
226
+ urlsDiscovered: 0,
227
+ uniqueFindings: 0,
228
+ bySeverity: {},
229
+ },
230
+ startTime: startTime.toISOString(),
231
+ endTime: new Date().toISOString(),
232
+ policy: mergedPolicy,
233
+ };
234
+ }
235
+ return new Promise((resolve) => {
236
+ const args = buildNucleiArgs(target, mergedPolicy);
237
+ logger.debug("nuclei.command", { args: args.join(" ") });
238
+ const child = spawn("nuclei", args, {
239
+ timeout: (mergedPolicy.maxDuration || 300) * 1000,
240
+ });
241
+ let stdout = "";
242
+ let stderr = "";
243
+ child.stdout?.on("data", (data) => {
244
+ stdout += data.toString();
245
+ });
246
+ child.stderr?.on("data", (data) => {
247
+ stderr += data.toString();
248
+ });
249
+ child.on("close", (code) => {
250
+ const endTime = new Date();
251
+ const findings = [];
252
+ // Parse JSON lines output
253
+ const lines = stdout.split("\n").filter(Boolean);
254
+ for (const line of lines) {
255
+ try {
256
+ const result = JSON.parse(line);
257
+ findings.push(parseNucleiResult(result));
258
+ }
259
+ catch {
260
+ // Skip non-JSON lines
261
+ logger.debug("nuclei.parse_skip", { line: line.slice(0, 100) });
262
+ }
263
+ }
264
+ // Calculate stats
265
+ const bySeverity = {};
266
+ for (const finding of findings) {
267
+ bySeverity[finding.severity] = (bySeverity[finding.severity] || 0) + 1;
268
+ }
269
+ const success = code === 0 || findings.length > 0;
270
+ const result = {
271
+ scanner: "nuclei",
272
+ target,
273
+ findings,
274
+ duration: endTime.getTime() - startTime.getTime(),
275
+ success,
276
+ error: !success && stderr ? stderr.slice(0, 500) : undefined,
277
+ stats: {
278
+ requestCount: 0, // Not available from Nuclei output
279
+ urlsDiscovered: new Set(findings.map((f) => f.url)).size,
280
+ uniqueFindings: findings.length,
281
+ bySeverity,
282
+ },
283
+ version: availability.version,
284
+ startTime: startTime.toISOString(),
285
+ endTime: endTime.toISOString(),
286
+ policy: mergedPolicy,
287
+ };
288
+ logger.info("nuclei.scan_complete", {
289
+ findings: findings.length,
290
+ duration: result.duration,
291
+ success,
292
+ });
293
+ resolve(result);
294
+ });
295
+ child.on("error", (error) => {
296
+ const endTime = new Date();
297
+ resolve({
298
+ scanner: "nuclei",
299
+ target,
300
+ findings: [],
301
+ duration: endTime.getTime() - startTime.getTime(),
302
+ success: false,
303
+ error: String(error),
304
+ stats: {
305
+ requestCount: 0,
306
+ urlsDiscovered: 0,
307
+ uniqueFindings: 0,
308
+ bySeverity: {},
309
+ },
310
+ version: availability.version,
311
+ startTime: startTime.toISOString(),
312
+ endTime: endTime.toISOString(),
313
+ policy: mergedPolicy,
314
+ });
315
+ });
316
+ });
317
+ }
318
+ /**
319
+ * Get Nuclei installation instructions
320
+ */
321
+ export function getNucleiInstallInstructions() {
322
+ return `
323
+ # Nuclei Installation
324
+
325
+ ## Go (Recommended)
326
+ \`\`\`bash
327
+ go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
328
+ \`\`\`
329
+
330
+ ## Homebrew (macOS)
331
+ \`\`\`bash
332
+ brew install nuclei
333
+ \`\`\`
334
+
335
+ ## Docker
336
+ \`\`\`bash
337
+ docker pull projectdiscovery/nuclei:latest
338
+ \`\`\`
339
+
340
+ ## Binary Download
341
+ Download from https://github.com/projectdiscovery/nuclei/releases
342
+
343
+ ## Update Templates
344
+ \`\`\`bash
345
+ nuclei -update-templates
346
+ \`\`\`
347
+
348
+ ## Verify Installation
349
+ \`\`\`bash
350
+ nuclei -version
351
+ \`\`\`
352
+ `;
353
+ }
354
+ //# sourceMappingURL=nuclei.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nuclei.js","sourceRoot":"","sources":["../../../src/scanners/dast/nuclei.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * DAST Scanner Types
3
+ *
4
+ * Types for Dynamic Application Security Testing integrations
5
+ * with OWASP ZAP and Nuclei.
6
+ *
7
+ * @module scanners/dast/types
8
+ */
9
+ import type { Severity } from "../../certification/types.js";
10
+ /**
11
+ * DAST scanner types
12
+ */
13
+ export type DASTScanner = "zap" | "nuclei";
14
+ /**
15
+ * Authentication types for DAST scans
16
+ */
17
+ export type AuthType = "none" | "basic" | "bearer" | "cookie" | "oauth2" | "api-key";
18
+ /**
19
+ * Target for DAST scanning
20
+ */
21
+ export interface DASTTarget {
22
+ /** Base URL to scan */
23
+ url: string;
24
+ /** Optional name for the target */
25
+ name?: string;
26
+ /** Authentication configuration */
27
+ authentication?: DASTAuthentication;
28
+ /** Custom headers to include */
29
+ headers?: Record<string, string>;
30
+ /** URL patterns to include in scan scope */
31
+ scope?: string[];
32
+ /** URL patterns to exclude from scan */
33
+ exclude?: string[];
34
+ /** OpenAPI/Swagger spec URL for API scanning */
35
+ openApiUrl?: string;
36
+ /** GraphQL endpoint for GraphQL scanning */
37
+ graphqlUrl?: string;
38
+ }
39
+ /**
40
+ * Authentication configuration
41
+ */
42
+ export interface DASTAuthentication {
43
+ /** Authentication type */
44
+ type: AuthType;
45
+ /** Credentials based on auth type */
46
+ credentials: {
47
+ /** Username for basic auth */
48
+ username?: string;
49
+ /** Password for basic auth */
50
+ password?: string;
51
+ /** Bearer token */
52
+ token?: string;
53
+ /** Cookie string */
54
+ cookie?: string;
55
+ /** API key */
56
+ apiKey?: string;
57
+ /** API key header name */
58
+ apiKeyHeader?: string;
59
+ /** OAuth2 client ID */
60
+ clientId?: string;
61
+ /** OAuth2 client secret */
62
+ clientSecret?: string;
63
+ /** OAuth2 token URL */
64
+ tokenUrl?: string;
65
+ };
66
+ }
67
+ /**
68
+ * Scan policy/configuration
69
+ */
70
+ export interface DASTPolicy {
71
+ /** Only run passive scans (no active attacks) */
72
+ passiveOnly?: boolean;
73
+ /** Risk threshold to report */
74
+ riskThreshold?: "high" | "medium" | "low" | "informational";
75
+ /** Maximum scan duration in seconds */
76
+ maxDuration?: number;
77
+ /** Specific Nuclei template paths or tags */
78
+ templates?: string[];
79
+ /** Nuclei template tags to include */
80
+ templateTags?: string[];
81
+ /** Nuclei template tags to exclude */
82
+ excludeTags?: string[];
83
+ /** ZAP scan policy name */
84
+ zapPolicy?: string;
85
+ /** Enable AJAX spider for JavaScript-heavy apps */
86
+ ajaxSpider?: boolean;
87
+ /** Maximum depth for spidering */
88
+ maxDepth?: number;
89
+ /** Maximum children per node for spidering */
90
+ maxChildren?: number;
91
+ /** Delay between requests in milliseconds */
92
+ requestDelay?: number;
93
+ /** Number of concurrent threads */
94
+ threads?: number;
95
+ }
96
+ /**
97
+ * Default DAST policy
98
+ */
99
+ export declare const DEFAULT_DAST_POLICY: DASTPolicy;
100
+ /**
101
+ * A finding from a DAST scanner
102
+ */
103
+ export interface DASTFinding {
104
+ /** Which scanner found this */
105
+ scanner: DASTScanner;
106
+ /** Rule/template ID */
107
+ ruleId: string;
108
+ /** Human-readable name */
109
+ name: string;
110
+ /** Description of the vulnerability */
111
+ description: string;
112
+ /** Severity level */
113
+ severity: Severity;
114
+ /** Confidence level (0-100) */
115
+ confidence: number;
116
+ /** Affected URL */
117
+ url: string;
118
+ /** HTTP method */
119
+ method?: string;
120
+ /** Attack parameter/input */
121
+ parameter?: string;
122
+ /** Evidence/proof of vulnerability */
123
+ evidence?: string;
124
+ /** Attack payload used */
125
+ attack?: string;
126
+ /** CWE IDs */
127
+ cweIds?: string[];
128
+ /** CVE IDs */
129
+ cveIds?: string[];
130
+ /** Reference URLs */
131
+ references?: string[];
132
+ /** Suggested solution */
133
+ solution?: string;
134
+ /** Raw scanner output */
135
+ rawOutput?: Record<string, unknown>;
136
+ /** Tags/labels */
137
+ tags?: string[];
138
+ /** Timestamp when found */
139
+ timestamp: string;
140
+ }
141
+ /**
142
+ * Result from running a DAST scanner
143
+ */
144
+ export interface DASTScanResult {
145
+ /** Scanner used */
146
+ scanner: DASTScanner;
147
+ /** Target that was scanned */
148
+ target: DASTTarget;
149
+ /** Findings discovered */
150
+ findings: DASTFinding[];
151
+ /** Scan duration in milliseconds */
152
+ duration: number;
153
+ /** Whether scan completed successfully */
154
+ success: boolean;
155
+ /** Error message if failed */
156
+ error?: string;
157
+ /** Scan statistics */
158
+ stats: {
159
+ /** Total requests made */
160
+ requestCount: number;
161
+ /** URLs discovered */
162
+ urlsDiscovered: number;
163
+ /** Unique findings */
164
+ uniqueFindings: number;
165
+ /** Findings by severity */
166
+ bySeverity: Partial<Record<Severity, number>>;
167
+ };
168
+ /** Scanner version */
169
+ version?: string;
170
+ /** Scan start time */
171
+ startTime: string;
172
+ /** Scan end time */
173
+ endTime: string;
174
+ /** Policy used */
175
+ policy: DASTPolicy;
176
+ }
177
+ /**
178
+ * Aggregated results from multiple DAST scanners
179
+ */
180
+ export interface AggregatedDASTResult {
181
+ /** Timestamp */
182
+ timestamp: string;
183
+ /** Target scanned */
184
+ target: DASTTarget;
185
+ /** Results from each scanner */
186
+ scanners: DASTScanResult[];
187
+ /** Total findings across all scanners */
188
+ totalFindings: number;
189
+ /** Deduplicated findings */
190
+ uniqueFindings: DASTFinding[];
191
+ /** Findings by severity */
192
+ bySeverity: Partial<Record<Severity, number>>;
193
+ /** Findings by scanner */
194
+ byScanner: Record<DASTScanner, number>;
195
+ /** Total scan duration */
196
+ totalDuration: number;
197
+ /** Whether all scanners succeeded */
198
+ allSucceeded: boolean;
199
+ /** Scanners that failed */
200
+ failedScanners: DASTScanner[];
201
+ }
202
+ /**
203
+ * DAST scanner availability status
204
+ */
205
+ export interface DASTAvailability {
206
+ scanner: DASTScanner;
207
+ available: boolean;
208
+ version?: string;
209
+ path?: string;
210
+ error?: string;
211
+ features?: {
212
+ passiveScan: boolean;
213
+ activeScan: boolean;
214
+ apiScan: boolean;
215
+ authentication: boolean;
216
+ };
217
+ }
218
+ /**
219
+ * Options for running DAST scans
220
+ */
221
+ export interface DASTScanOptions {
222
+ /** Scanners to run */
223
+ scanners?: DASTScanner[];
224
+ /** Scan policy */
225
+ policy?: DASTPolicy;
226
+ /** Output format */
227
+ outputFormat?: "json" | "sarif" | "html";
228
+ /** Save report to file */
229
+ reportPath?: string;
230
+ /** Verbose output */
231
+ verbose?: boolean;
232
+ /** Confirmation that scan is authorized */
233
+ authorized: boolean;
234
+ }
235
+ /**
236
+ * ZAP-specific alert structure
237
+ */
238
+ export interface ZAPAlert {
239
+ sourceid: string;
240
+ other: string;
241
+ method: string;
242
+ evidence: string;
243
+ pluginId: string;
244
+ cweid: string;
245
+ confidence: string;
246
+ wascid: string;
247
+ description: string;
248
+ messageId: string;
249
+ inputVector: string;
250
+ url: string;
251
+ tags: Record<string, string>;
252
+ reference: string;
253
+ solution: string;
254
+ alert: string;
255
+ param: string;
256
+ attack: string;
257
+ name: string;
258
+ risk: string;
259
+ id: string;
260
+ alertRef: string;
261
+ }
262
+ /**
263
+ * Nuclei-specific result structure
264
+ */
265
+ export interface NucleiResult {
266
+ template: string;
267
+ "template-url"?: string;
268
+ "template-id": string;
269
+ "template-path"?: string;
270
+ info: {
271
+ name: string;
272
+ author: string[];
273
+ tags: string[];
274
+ description?: string;
275
+ reference?: string[];
276
+ severity: string;
277
+ metadata?: Record<string, unknown>;
278
+ classification?: {
279
+ "cve-id"?: string[];
280
+ "cwe-id"?: string[];
281
+ };
282
+ };
283
+ type: string;
284
+ host: string;
285
+ matched: string;
286
+ "extracted-results"?: string[];
287
+ ip?: string;
288
+ timestamp: string;
289
+ matcher?: string;
290
+ "curl-command"?: string;
291
+ request?: string;
292
+ response?: string;
293
+ }
294
+ /**
295
+ * Map ZAP risk levels to severity
296
+ */
297
+ export declare const ZAP_RISK_MAPPING: Record<string, Severity>;
298
+ /**
299
+ * Map ZAP confidence levels to numeric values
300
+ */
301
+ export declare const ZAP_CONFIDENCE_MAPPING: Record<string, number>;
302
+ /**
303
+ * Map Nuclei severity to vaspera severity
304
+ */
305
+ export declare const NUCLEI_SEVERITY_MAPPING: Record<string, Severity>;
306
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/scanners/dast/types.ts"],"names":[],"mappings":"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"}