vaspera 2.12.0 → 2.13.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.
- package/CHANGELOG.md +46 -0
- package/dist/__tests__/siem-integration.test.d.ts +7 -0
- package/dist/__tests__/siem-integration.test.d.ts.map +1 -0
- package/dist/__tests__/siem-integration.test.js +285 -0
- package/dist/__tests__/siem-integration.test.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +296 -16
- package/dist/index.js.map +1 -1
- package/dist/persistence/__tests__/json-fallback.test.d.ts +5 -0
- package/dist/persistence/__tests__/json-fallback.test.d.ts.map +1 -0
- package/dist/persistence/__tests__/json-fallback.test.js +249 -0
- package/dist/persistence/__tests__/json-fallback.test.js.map +1 -0
- package/dist/persistence/__tests__/persistence.test.js.map +1 -1
- package/dist/persistence/db.d.ts +15 -0
- package/dist/persistence/db.d.ts.map +1 -1
- package/dist/persistence/db.js +59 -10
- package/dist/persistence/db.js.map +1 -1
- package/dist/persistence/index.d.ts +13 -4
- package/dist/persistence/index.d.ts.map +1 -1
- package/dist/persistence/index.js +139 -14
- package/dist/persistence/index.js.map +1 -1
- package/dist/persistence/json-fallback.d.ts +52 -0
- package/dist/persistence/json-fallback.d.ts.map +1 -0
- package/dist/persistence/json-fallback.js +283 -0
- package/dist/persistence/json-fallback.js.map +1 -0
- package/dist/scanners/ai-code/index.d.ts.map +1 -1
- package/dist/scanners/ai-code/index.js +90 -2
- package/dist/scanners/ai-code/index.js.map +1 -1
- package/dist/scanners/ai-code/types.d.ts +12 -0
- package/dist/scanners/ai-code/types.d.ts.map +1 -1
- package/dist/scanners/eslint.d.ts.map +1 -1
- package/dist/scanners/eslint.js +45 -3
- package/dist/scanners/eslint.js.map +1 -1
- package/dist/scanners/scale/bottleneck-detector.d.ts +13 -2
- package/dist/scanners/scale/bottleneck-detector.d.ts.map +1 -1
- package/dist/scanners/scale/bottleneck-detector.js +199 -72
- package/dist/scanners/scale/bottleneck-detector.js.map +1 -1
- package/dist/scanners/types.d.ts +18 -1
- package/dist/scanners/types.d.ts.map +1 -1
- package/dist/scanners/types.js.map +1 -1
- package/dist/scanners/typescript.d.ts.map +1 -1
- package/dist/scanners/typescript.js +36 -4
- package/dist/scanners/typescript.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,51 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.13.0] - 2026-06-04
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
#### False Positive Feedback System
|
|
8
|
+
- New `feedback_submit` tool to mark findings as true/false positives
|
|
9
|
+
- New `feedback_report` tool to view FP rates by scanner and rule
|
|
10
|
+
- New `feedback_suppressions` tool to get rule suppression suggestions based on feedback
|
|
11
|
+
- Feedback stored in `.vaspera/fp-feedback.json` with full audit trail
|
|
12
|
+
|
|
13
|
+
#### Diff-Aware CI Scanning
|
|
14
|
+
- New `certification_scan_diff` tool scans only changed files (git diff)
|
|
15
|
+
- Estimates scan time savings vs full scan
|
|
16
|
+
- Auto-detects security-critical files that always get scanned
|
|
17
|
+
|
|
18
|
+
#### Standalone Autofix Preview
|
|
19
|
+
- `autofix_preview` now works without certification_id
|
|
20
|
+
- Provide file + pattern_id to preview fixes directly
|
|
21
|
+
- Use `autofix_list_patterns` to see available fix patterns
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
#### Persistence DB Fallback
|
|
26
|
+
- Added JSON file fallback when SQLite is unavailable
|
|
27
|
+
- New `src/persistence/json-fallback.ts` with atomic writes
|
|
28
|
+
- Graceful degradation: warns but continues operating
|
|
29
|
+
|
|
30
|
+
#### scale_bottlenecks False Positives
|
|
31
|
+
- Added semantic analysis for workflow/pipeline patterns
|
|
32
|
+
- Confidence scoring (60-100) based on context
|
|
33
|
+
- Sequential workflows no longer flagged as N+1 queries
|
|
34
|
+
|
|
35
|
+
#### ai_code_verify Diagnostics
|
|
36
|
+
- Returns detailed diagnostics when 0 files found
|
|
37
|
+
- Shows which extensions were searched
|
|
38
|
+
- Reports which exclude patterns matched
|
|
39
|
+
- Suggests alternative file extensions
|
|
40
|
+
|
|
41
|
+
#### Scanner Error Messages
|
|
42
|
+
- Added `ScannerErrorDetails` with actionable suggestions
|
|
43
|
+
- tsc/eslint now report phase (init/scan/parse) and fix steps
|
|
44
|
+
- Full error output available for debugging
|
|
45
|
+
|
|
46
|
+
### Changed
|
|
47
|
+
- MCP tools increased from 103 to 108
|
|
48
|
+
|
|
3
49
|
## 2.10.0
|
|
4
50
|
|
|
5
51
|
### Minor Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siem-integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/siem-integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SIEM Integration Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests for SIEM event formatting and client registry.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect, beforeEach, afterEach } from "vitest";
|
|
7
|
+
import { formatAsCEF, formatAsJSON, formatForSplunk, formatForSentinel, formatForDatadog, mapSeverity, severityToCEF, createFindingEvent, createScanEvent, createCertificationEvent, getSIEMRegistry, closeSIEMRegistry, createSplunkClient, createDatadogClient, } from "../integrations/siem/index.js";
|
|
8
|
+
describe("SIEM Integration", () => {
|
|
9
|
+
describe("Severity Mapping", () => {
|
|
10
|
+
it("maps Vaspera severities to SIEM severities", () => {
|
|
11
|
+
expect(mapSeverity("critical")).toBe("critical");
|
|
12
|
+
expect(mapSeverity("high")).toBe("high");
|
|
13
|
+
expect(mapSeverity("medium")).toBe("medium");
|
|
14
|
+
expect(mapSeverity("low")).toBe("low");
|
|
15
|
+
expect(mapSeverity("info")).toBe("informational");
|
|
16
|
+
});
|
|
17
|
+
it("maps SIEM severity to CEF numeric values", () => {
|
|
18
|
+
expect(severityToCEF("critical")).toBe(10);
|
|
19
|
+
expect(severityToCEF("high")).toBe(8);
|
|
20
|
+
expect(severityToCEF("medium")).toBe(5);
|
|
21
|
+
expect(severityToCEF("low")).toBe(3);
|
|
22
|
+
expect(severityToCEF("informational")).toBe(1);
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe("Event Creation", () => {
|
|
26
|
+
it("creates finding events", () => {
|
|
27
|
+
const event = createFindingEvent("/test/project", "finding.new", {
|
|
28
|
+
findingId: "finding-001",
|
|
29
|
+
severity: "high",
|
|
30
|
+
category: "sql-injection",
|
|
31
|
+
file: "src/api.ts",
|
|
32
|
+
line: 42,
|
|
33
|
+
scanner: "semgrep",
|
|
34
|
+
ruleId: "sql-injection-001",
|
|
35
|
+
cweIds: ["CWE-89"],
|
|
36
|
+
description: "SQL injection vulnerability",
|
|
37
|
+
}, "cert-001");
|
|
38
|
+
expect(event.eventType).toBe("finding.new");
|
|
39
|
+
expect(event.severity).toBe("high");
|
|
40
|
+
expect(event.project).toBe("/test/project");
|
|
41
|
+
expect(event.certificationId).toBe("cert-001");
|
|
42
|
+
expect(event.source).toBe("vaspera");
|
|
43
|
+
expect(event.message).toContain("sql-injection");
|
|
44
|
+
expect(event.message).toContain("src/api.ts:42");
|
|
45
|
+
});
|
|
46
|
+
it("creates scan events", () => {
|
|
47
|
+
const event = createScanEvent("/test/project", "scan.completed", {
|
|
48
|
+
scanners: ["semgrep", "gitleaks"],
|
|
49
|
+
findingsCount: 5,
|
|
50
|
+
bySeverity: { critical: 1, high: 2, medium: 2, low: 0, info: 0 },
|
|
51
|
+
durationMs: 5000,
|
|
52
|
+
}, "cert-001");
|
|
53
|
+
expect(event.eventType).toBe("scan.completed");
|
|
54
|
+
expect(event.severity).toBe("critical");
|
|
55
|
+
expect(event.message).toContain("5 findings");
|
|
56
|
+
expect(event.message).toContain("1 critical");
|
|
57
|
+
});
|
|
58
|
+
it("creates certification events", () => {
|
|
59
|
+
const event = createCertificationEvent("/test/project", "certification.completed", {
|
|
60
|
+
certificationId: "cert-001",
|
|
61
|
+
level: "GOLD",
|
|
62
|
+
score: 85,
|
|
63
|
+
findingsCount: 5,
|
|
64
|
+
durationMs: 30000,
|
|
65
|
+
});
|
|
66
|
+
expect(event.eventType).toBe("certification.completed");
|
|
67
|
+
expect(event.severity).toBe("informational");
|
|
68
|
+
expect(event.message).toContain("GOLD");
|
|
69
|
+
expect(event.message).toContain("85");
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe("CEF Formatting", () => {
|
|
73
|
+
it("formats events as CEF", () => {
|
|
74
|
+
const event = {
|
|
75
|
+
timestamp: "2024-01-01T00:00:00.000Z",
|
|
76
|
+
eventType: "finding.new",
|
|
77
|
+
severity: "high",
|
|
78
|
+
project: "/test/project",
|
|
79
|
+
certificationId: "cert-001",
|
|
80
|
+
message: "SQL injection detected",
|
|
81
|
+
source: "vaspera",
|
|
82
|
+
data: {
|
|
83
|
+
findingId: "finding-001",
|
|
84
|
+
category: "sql-injection",
|
|
85
|
+
file: "src/api.ts",
|
|
86
|
+
line: 42,
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
const cef = formatAsCEF(event);
|
|
90
|
+
expect(cef).toContain("CEF:0");
|
|
91
|
+
expect(cef).toContain("Vaspera");
|
|
92
|
+
expect(cef).toContain("Hardening MCP");
|
|
93
|
+
expect(cef).toContain("VASP-001");
|
|
94
|
+
expect(cef).toContain("New Security Finding");
|
|
95
|
+
expect(cef).toContain("|8|");
|
|
96
|
+
});
|
|
97
|
+
it("escapes special characters in CEF", () => {
|
|
98
|
+
const event = {
|
|
99
|
+
timestamp: "2024-01-01T00:00:00.000Z",
|
|
100
|
+
eventType: "finding.new",
|
|
101
|
+
severity: "medium",
|
|
102
|
+
project: "/test/project",
|
|
103
|
+
message: "Message with | pipe and = equals",
|
|
104
|
+
source: "vaspera",
|
|
105
|
+
data: {},
|
|
106
|
+
};
|
|
107
|
+
const cef = formatAsCEF(event);
|
|
108
|
+
expect(cef).toContain("\\|");
|
|
109
|
+
expect(cef).toContain("\\=");
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
describe("JSON Formatting", () => {
|
|
113
|
+
it("formats events as JSON", () => {
|
|
114
|
+
const event = {
|
|
115
|
+
timestamp: "2024-01-01T00:00:00.000Z",
|
|
116
|
+
eventType: "finding.new",
|
|
117
|
+
severity: "high",
|
|
118
|
+
project: "/test/project",
|
|
119
|
+
message: "SQL injection detected",
|
|
120
|
+
source: "vaspera",
|
|
121
|
+
data: { findingId: "finding-001" },
|
|
122
|
+
};
|
|
123
|
+
const json = formatAsJSON(event);
|
|
124
|
+
expect(json).toHaveProperty("@timestamp", "2024-01-01T00:00:00.000Z");
|
|
125
|
+
expect(json).toHaveProperty("event");
|
|
126
|
+
expect(json.event.action).toBe("finding.new");
|
|
127
|
+
expect(json.event.severity).toBe(8);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
describe("Splunk Formatting", () => {
|
|
131
|
+
it("formats events for Splunk HEC", () => {
|
|
132
|
+
const event = {
|
|
133
|
+
timestamp: "2024-01-01T00:00:00.000Z",
|
|
134
|
+
eventType: "scan.completed",
|
|
135
|
+
severity: "informational",
|
|
136
|
+
project: "/test/project",
|
|
137
|
+
message: "Scan completed",
|
|
138
|
+
source: "vaspera",
|
|
139
|
+
data: {},
|
|
140
|
+
};
|
|
141
|
+
const splunk = formatForSplunk(event, {
|
|
142
|
+
index: "security",
|
|
143
|
+
source: "vaspera:test",
|
|
144
|
+
host: "test-host",
|
|
145
|
+
});
|
|
146
|
+
expect(splunk).toHaveProperty("time");
|
|
147
|
+
expect(splunk).toHaveProperty("host", "test-host");
|
|
148
|
+
expect(splunk).toHaveProperty("source", "vaspera:test");
|
|
149
|
+
expect(splunk).toHaveProperty("index", "security");
|
|
150
|
+
expect(splunk).toHaveProperty("event");
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
describe("Sentinel Formatting", () => {
|
|
154
|
+
it("formats events for Microsoft Sentinel", () => {
|
|
155
|
+
const event = {
|
|
156
|
+
timestamp: "2024-01-01T00:00:00.000Z",
|
|
157
|
+
eventType: "finding.new",
|
|
158
|
+
severity: "critical",
|
|
159
|
+
project: "/test/project",
|
|
160
|
+
certificationId: "cert-001",
|
|
161
|
+
message: "Critical finding",
|
|
162
|
+
source: "vaspera",
|
|
163
|
+
data: { category: "secrets" },
|
|
164
|
+
};
|
|
165
|
+
const sentinel = formatForSentinel(event);
|
|
166
|
+
expect(sentinel).toHaveProperty("TimeGenerated", "2024-01-01T00:00:00.000Z");
|
|
167
|
+
expect(sentinel).toHaveProperty("EventType_s", "finding.new");
|
|
168
|
+
expect(sentinel).toHaveProperty("Severity_s", "critical");
|
|
169
|
+
expect(sentinel).toHaveProperty("Project_s", "/test/project");
|
|
170
|
+
expect(sentinel).toHaveProperty("CertificationId_g", "cert-001");
|
|
171
|
+
});
|
|
172
|
+
});
|
|
173
|
+
describe("Datadog Formatting", () => {
|
|
174
|
+
it("formats events for Datadog", () => {
|
|
175
|
+
const event = {
|
|
176
|
+
timestamp: "2024-01-01T00:00:00.000Z",
|
|
177
|
+
eventType: "finding.new",
|
|
178
|
+
severity: "high",
|
|
179
|
+
project: "/test/project",
|
|
180
|
+
message: "High severity finding",
|
|
181
|
+
source: "vaspera",
|
|
182
|
+
data: {},
|
|
183
|
+
};
|
|
184
|
+
const datadog = formatForDatadog(event, {
|
|
185
|
+
service: "my-service",
|
|
186
|
+
env: "production",
|
|
187
|
+
tags: ["team:security"],
|
|
188
|
+
});
|
|
189
|
+
expect(datadog).toHaveProperty("ddsource", "vaspera");
|
|
190
|
+
expect(datadog).toHaveProperty("service", "my-service");
|
|
191
|
+
expect(datadog).toHaveProperty("status", "error");
|
|
192
|
+
expect(datadog.ddtags).toContain("project:/test/project");
|
|
193
|
+
expect(datadog.ddtags).toContain("env:production");
|
|
194
|
+
expect(datadog.ddtags).toContain("team:security");
|
|
195
|
+
});
|
|
196
|
+
it("maps severity to Datadog status", () => {
|
|
197
|
+
const criticalEvent = {
|
|
198
|
+
timestamp: new Date().toISOString(),
|
|
199
|
+
eventType: "finding.new",
|
|
200
|
+
severity: "critical",
|
|
201
|
+
project: "/test",
|
|
202
|
+
message: "Critical",
|
|
203
|
+
source: "vaspera",
|
|
204
|
+
data: {},
|
|
205
|
+
};
|
|
206
|
+
const lowEvent = {
|
|
207
|
+
timestamp: new Date().toISOString(),
|
|
208
|
+
eventType: "finding.new",
|
|
209
|
+
severity: "low",
|
|
210
|
+
project: "/test",
|
|
211
|
+
message: "Low",
|
|
212
|
+
source: "vaspera",
|
|
213
|
+
data: {},
|
|
214
|
+
};
|
|
215
|
+
const critical = formatForDatadog(criticalEvent);
|
|
216
|
+
const low = formatForDatadog(lowEvent);
|
|
217
|
+
expect(critical.status).toBe("emergency");
|
|
218
|
+
expect(low.status).toBe("info");
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
describe("SIEM Registry", () => {
|
|
222
|
+
beforeEach(async () => {
|
|
223
|
+
await closeSIEMRegistry();
|
|
224
|
+
});
|
|
225
|
+
afterEach(async () => {
|
|
226
|
+
await closeSIEMRegistry();
|
|
227
|
+
});
|
|
228
|
+
it("registers and retrieves clients", () => {
|
|
229
|
+
const registry = getSIEMRegistry();
|
|
230
|
+
const client = createSplunkClient({
|
|
231
|
+
endpoint: "https://splunk.example.com:8088",
|
|
232
|
+
token: "test-token",
|
|
233
|
+
index: "security",
|
|
234
|
+
});
|
|
235
|
+
registry.register("test-splunk", client);
|
|
236
|
+
const retrieved = registry.get("test-splunk");
|
|
237
|
+
expect(retrieved).toBeDefined();
|
|
238
|
+
expect(retrieved?.provider).toBe("splunk");
|
|
239
|
+
});
|
|
240
|
+
it("lists all registered clients", () => {
|
|
241
|
+
const registry = getSIEMRegistry();
|
|
242
|
+
registry.register("splunk-1", createSplunkClient({ endpoint: "https://splunk.example.com", token: "t1" }));
|
|
243
|
+
registry.register("datadog-1", createDatadogClient({ apiKey: "api-key-1" }));
|
|
244
|
+
const list = registry.list();
|
|
245
|
+
expect(list).toHaveLength(2);
|
|
246
|
+
expect(list.find((c) => c.name === "splunk-1")?.provider).toBe("splunk");
|
|
247
|
+
expect(list.find((c) => c.name === "datadog-1")?.provider).toBe("datadog");
|
|
248
|
+
});
|
|
249
|
+
it("unregisters clients", async () => {
|
|
250
|
+
const registry = getSIEMRegistry();
|
|
251
|
+
registry.register("test", createSplunkClient({ endpoint: "https://splunk.example.com", token: "t" }));
|
|
252
|
+
expect(registry.get("test")).toBeDefined();
|
|
253
|
+
await registry.unregister("test");
|
|
254
|
+
expect(registry.get("test")).toBeUndefined();
|
|
255
|
+
});
|
|
256
|
+
it("closes all clients", async () => {
|
|
257
|
+
const registry = getSIEMRegistry();
|
|
258
|
+
registry.register("s1", createSplunkClient({ endpoint: "https://splunk.example.com", token: "t1" }));
|
|
259
|
+
registry.register("d1", createDatadogClient({ apiKey: "api-key-1" }));
|
|
260
|
+
expect(registry.list()).toHaveLength(2);
|
|
261
|
+
await registry.closeAll();
|
|
262
|
+
expect(registry.list()).toHaveLength(0);
|
|
263
|
+
});
|
|
264
|
+
});
|
|
265
|
+
describe("Event Type Mapping", () => {
|
|
266
|
+
it("generates correct signature IDs for event types", () => {
|
|
267
|
+
const findingEvent = createFindingEvent("/test", "finding.new", {
|
|
268
|
+
findingId: "f1",
|
|
269
|
+
severity: "high",
|
|
270
|
+
category: "test",
|
|
271
|
+
});
|
|
272
|
+
const cef = formatAsCEF(findingEvent);
|
|
273
|
+
expect(cef).toContain("VASP-001");
|
|
274
|
+
const scanEvent = createScanEvent("/test", "scan.completed", {
|
|
275
|
+
scanners: ["test"],
|
|
276
|
+
findingsCount: 0,
|
|
277
|
+
bySeverity: { critical: 0, high: 0, medium: 0, low: 0, info: 0 },
|
|
278
|
+
durationMs: 100,
|
|
279
|
+
});
|
|
280
|
+
const scanCef = formatAsCEF(scanEvent);
|
|
281
|
+
expect(scanCef).toContain("VASP-011");
|
|
282
|
+
});
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
//# sourceMappingURL=siem-integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"siem-integration.test.js","sourceRoot":"","sources":["../../src/__tests__/siem-integration.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAoTpE;;GAEG;AACH,iBAAS,YAAY,CAAC,IAAI,EAAE,MAAM;;;;;EAIjC;AAED;;GAEG;AACH,iBAAS,YAAY,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;;;;;;EAK/D;AAED;;GAEG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,MAAM;;;;;EAIrC;AA+CD,QAAA,MAAM,MAAM,WAGV,CAAC;AAyqOH,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC"}
|