vaspera 2.14.0 → 2.16.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 (265) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +15 -2
  3. package/dist/__tests__/certification/agent-certificate-e2e.test.d.ts +2 -0
  4. package/dist/__tests__/certification/agent-certificate-e2e.test.d.ts.map +1 -0
  5. package/dist/__tests__/certification/agent-certificate-e2e.test.js +90 -0
  6. package/dist/__tests__/certification/agent-certificate-e2e.test.js.map +1 -0
  7. package/dist/__tests__/certification/agent-certificate-map.test.d.ts +2 -0
  8. package/dist/__tests__/certification/agent-certificate-map.test.d.ts.map +1 -0
  9. package/dist/__tests__/certification/agent-certificate-map.test.js +107 -0
  10. package/dist/__tests__/certification/agent-certificate-map.test.js.map +1 -0
  11. package/dist/__tests__/certification/agent-certificate.test.d.ts +2 -0
  12. package/dist/__tests__/certification/agent-certificate.test.d.ts.map +1 -0
  13. package/dist/__tests__/certification/agent-certificate.test.js +78 -0
  14. package/dist/__tests__/certification/agent-certificate.test.js.map +1 -0
  15. package/dist/__tests__/certification/verify-endpoint.test.d.ts +2 -0
  16. package/dist/__tests__/certification/verify-endpoint.test.d.ts.map +1 -0
  17. package/dist/__tests__/certification/verify-endpoint.test.js +81 -0
  18. package/dist/__tests__/certification/verify-endpoint.test.js.map +1 -0
  19. package/dist/__tests__/compliance/ai-frameworks.test.d.ts +2 -0
  20. package/dist/__tests__/compliance/ai-frameworks.test.d.ts.map +1 -0
  21. package/dist/__tests__/compliance/ai-frameworks.test.js +87 -0
  22. package/dist/__tests__/compliance/ai-frameworks.test.js.map +1 -0
  23. package/dist/__tests__/eval/llm-analyzer.test.d.ts +2 -0
  24. package/dist/__tests__/eval/llm-analyzer.test.d.ts.map +1 -0
  25. package/dist/__tests__/eval/llm-analyzer.test.js +93 -0
  26. package/dist/__tests__/eval/llm-analyzer.test.js.map +1 -0
  27. package/dist/__tests__/eval/redteam-harness.test.d.ts +2 -0
  28. package/dist/__tests__/eval/redteam-harness.test.d.ts.map +1 -0
  29. package/dist/__tests__/eval/redteam-harness.test.js +136 -0
  30. package/dist/__tests__/eval/redteam-harness.test.js.map +1 -0
  31. package/dist/__tests__/evidence/evidence.test.d.ts +2 -0
  32. package/dist/__tests__/evidence/evidence.test.d.ts.map +1 -0
  33. package/dist/__tests__/evidence/evidence.test.js +240 -0
  34. package/dist/__tests__/evidence/evidence.test.js.map +1 -0
  35. package/dist/__tests__/history/decisions.test.d.ts +2 -0
  36. package/dist/__tests__/history/decisions.test.d.ts.map +1 -0
  37. package/dist/__tests__/history/decisions.test.js +54 -0
  38. package/dist/__tests__/history/decisions.test.js.map +1 -0
  39. package/dist/__tests__/http-auth.test.d.ts +2 -0
  40. package/dist/__tests__/http-auth.test.d.ts.map +1 -0
  41. package/dist/__tests__/http-auth.test.js +55 -0
  42. package/dist/__tests__/http-auth.test.js.map +1 -0
  43. package/dist/__tests__/http-policy.test.d.ts +2 -0
  44. package/dist/__tests__/http-policy.test.d.ts.map +1 -0
  45. package/dist/__tests__/http-policy.test.js +69 -0
  46. package/dist/__tests__/http-policy.test.js.map +1 -0
  47. package/dist/__tests__/http-server-transport.test.d.ts +2 -0
  48. package/dist/__tests__/http-server-transport.test.d.ts.map +1 -0
  49. package/dist/__tests__/http-server-transport.test.js +132 -0
  50. package/dist/__tests__/http-server-transport.test.js.map +1 -0
  51. package/dist/__tests__/integration/destructive-guards.test.d.ts +2 -0
  52. package/dist/__tests__/integration/destructive-guards.test.d.ts.map +1 -0
  53. package/dist/__tests__/integration/destructive-guards.test.js +49 -0
  54. package/dist/__tests__/integration/destructive-guards.test.js.map +1 -0
  55. package/dist/__tests__/logger-redaction.test.d.ts +2 -0
  56. package/dist/__tests__/logger-redaction.test.d.ts.map +1 -0
  57. package/dist/__tests__/logger-redaction.test.js +74 -0
  58. package/dist/__tests__/logger-redaction.test.js.map +1 -0
  59. package/dist/__tests__/manifest-schema.test.d.ts +2 -0
  60. package/dist/__tests__/manifest-schema.test.d.ts.map +1 -0
  61. package/dist/__tests__/manifest-schema.test.js +43 -0
  62. package/dist/__tests__/manifest-schema.test.js.map +1 -0
  63. package/dist/__tests__/scanners/builtin-rules.test.d.ts +2 -0
  64. package/dist/__tests__/scanners/builtin-rules.test.d.ts.map +1 -0
  65. package/dist/__tests__/scanners/builtin-rules.test.js +51 -0
  66. package/dist/__tests__/scanners/builtin-rules.test.js.map +1 -0
  67. package/dist/__tests__/scanners/runtime/golden-path-runner.test.js +13 -1
  68. package/dist/__tests__/scanners/runtime/golden-path-runner.test.js.map +1 -1
  69. package/dist/__tests__/tool-guard.test.d.ts +2 -0
  70. package/dist/__tests__/tool-guard.test.d.ts.map +1 -0
  71. package/dist/__tests__/tool-guard.test.js +97 -0
  72. package/dist/__tests__/tool-guard.test.js.map +1 -0
  73. package/dist/__tests__/util/contained-file.test.d.ts +2 -0
  74. package/dist/__tests__/util/contained-file.test.d.ts.map +1 -0
  75. package/dist/__tests__/util/contained-file.test.js +78 -0
  76. package/dist/__tests__/util/contained-file.test.js.map +1 -0
  77. package/dist/__tests__/util/subprocess.test.d.ts +2 -0
  78. package/dist/__tests__/util/subprocess.test.d.ts.map +1 -0
  79. package/dist/__tests__/util/subprocess.test.js +48 -0
  80. package/dist/__tests__/util/subprocess.test.js.map +1 -0
  81. package/dist/action/diff-mode.d.ts.map +1 -1
  82. package/dist/action/diff-mode.js +31 -12
  83. package/dist/action/diff-mode.js.map +1 -1
  84. package/dist/certification/agent-certificate-map.d.ts +51 -0
  85. package/dist/certification/agent-certificate-map.d.ts.map +1 -0
  86. package/dist/certification/agent-certificate-map.js +265 -0
  87. package/dist/certification/agent-certificate-map.js.map +1 -0
  88. package/dist/certification/agent-certificate-sample.d.ts +25 -0
  89. package/dist/certification/agent-certificate-sample.d.ts.map +1 -0
  90. package/dist/certification/agent-certificate-sample.js +207 -0
  91. package/dist/certification/agent-certificate-sample.js.map +1 -0
  92. package/dist/certification/agent-certificate.d.ts +1981 -0
  93. package/dist/certification/agent-certificate.d.ts.map +1 -0
  94. package/dist/certification/agent-certificate.js +309 -0
  95. package/dist/certification/agent-certificate.js.map +1 -0
  96. package/dist/certification/autofix.d.ts.map +1 -1
  97. package/dist/certification/autofix.js +5 -3
  98. package/dist/certification/autofix.js.map +1 -1
  99. package/dist/certification/store.d.ts.map +1 -1
  100. package/dist/certification/store.js +5 -2
  101. package/dist/certification/store.js.map +1 -1
  102. package/dist/certification/verify-endpoint.d.ts +48 -0
  103. package/dist/certification/verify-endpoint.d.ts.map +1 -0
  104. package/dist/certification/verify-endpoint.js +79 -0
  105. package/dist/certification/verify-endpoint.js.map +1 -0
  106. package/dist/compliance/index.d.ts +2 -0
  107. package/dist/compliance/index.d.ts.map +1 -1
  108. package/dist/compliance/index.js +4 -0
  109. package/dist/compliance/index.js.map +1 -1
  110. package/dist/compliance/iso42001.d.ts +21 -0
  111. package/dist/compliance/iso42001.d.ts.map +1 -0
  112. package/dist/compliance/iso42001.js +160 -0
  113. package/dist/compliance/iso42001.js.map +1 -0
  114. package/dist/compliance/mapper.d.ts.map +1 -1
  115. package/dist/compliance/mapper.js +12 -0
  116. package/dist/compliance/mapper.js.map +1 -1
  117. package/dist/compliance/nist-ai-rmf.d.ts +20 -0
  118. package/dist/compliance/nist-ai-rmf.d.ts.map +1 -0
  119. package/dist/compliance/nist-ai-rmf.js +140 -0
  120. package/dist/compliance/nist-ai-rmf.js.map +1 -0
  121. package/dist/config/flags.d.ts +4 -4
  122. package/dist/eval/fixtures.d.ts.map +1 -1
  123. package/dist/eval/fixtures.js +161 -119
  124. package/dist/eval/fixtures.js.map +1 -1
  125. package/dist/eval/fixtures.test.js +4 -2
  126. package/dist/eval/fixtures.test.js.map +1 -1
  127. package/dist/eval/llm-analyzer.d.ts +40 -0
  128. package/dist/eval/llm-analyzer.d.ts.map +1 -0
  129. package/dist/eval/llm-analyzer.js +154 -0
  130. package/dist/eval/llm-analyzer.js.map +1 -0
  131. package/dist/eval/redteam-harness.d.ts +95 -0
  132. package/dist/eval/redteam-harness.d.ts.map +1 -0
  133. package/dist/eval/redteam-harness.js +137 -0
  134. package/dist/eval/redteam-harness.js.map +1 -0
  135. package/dist/evidence/collector.d.ts.map +1 -1
  136. package/dist/evidence/collector.js +21 -1
  137. package/dist/evidence/collector.js.map +1 -1
  138. package/dist/evidence/store.d.ts.map +1 -1
  139. package/dist/evidence/store.js +29 -5
  140. package/dist/evidence/store.js.map +1 -1
  141. package/dist/evidence/types.d.ts +16 -9
  142. package/dist/evidence/types.d.ts.map +1 -1
  143. package/dist/history/decisions.d.ts +63 -0
  144. package/dist/history/decisions.d.ts.map +1 -0
  145. package/dist/history/decisions.js +60 -0
  146. package/dist/history/decisions.js.map +1 -0
  147. package/dist/history/index.d.ts +2 -0
  148. package/dist/history/index.d.ts.map +1 -1
  149. package/dist/history/index.js +2 -0
  150. package/dist/history/index.js.map +1 -1
  151. package/dist/history/types.d.ts +34 -5
  152. package/dist/history/types.d.ts.map +1 -1
  153. package/dist/history/types.js +2 -0
  154. package/dist/history/types.js.map +1 -1
  155. package/dist/http-auth.d.ts +22 -0
  156. package/dist/http-auth.d.ts.map +1 -0
  157. package/dist/http-auth.js +58 -0
  158. package/dist/http-auth.js.map +1 -0
  159. package/dist/http-policy.d.ts +30 -0
  160. package/dist/http-policy.d.ts.map +1 -0
  161. package/dist/http-policy.js +54 -0
  162. package/dist/http-policy.js.map +1 -0
  163. package/dist/http-server.js +195 -12
  164. package/dist/http-server.js.map +1 -1
  165. package/dist/index.d.ts.map +1 -1
  166. package/dist/index.js +257 -16
  167. package/dist/index.js.map +1 -1
  168. package/dist/logger.d.ts.map +1 -1
  169. package/dist/logger.js +56 -2
  170. package/dist/logger.js.map +1 -1
  171. package/dist/plugins/types.d.ts +2 -2
  172. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
  173. package/dist/scanners/agent/prompt-injection-fuzzer.js +26 -0
  174. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
  175. package/dist/scanners/agent/types.d.ts +10 -10
  176. package/dist/scanners/bandit.d.ts.map +1 -1
  177. package/dist/scanners/bandit.js +35 -29
  178. package/dist/scanners/bandit.js.map +1 -1
  179. package/dist/scanners/binary-analysis.d.ts.map +1 -1
  180. package/dist/scanners/binary-analysis.js +24 -49
  181. package/dist/scanners/binary-analysis.js.map +1 -1
  182. package/dist/scanners/brakeman.d.ts.map +1 -1
  183. package/dist/scanners/brakeman.js +19 -33
  184. package/dist/scanners/brakeman.js.map +1 -1
  185. package/dist/scanners/builtin-rules.d.ts +24 -0
  186. package/dist/scanners/builtin-rules.d.ts.map +1 -0
  187. package/dist/scanners/builtin-rules.js +175 -0
  188. package/dist/scanners/builtin-rules.js.map +1 -0
  189. package/dist/scanners/dast.d.ts.map +1 -1
  190. package/dist/scanners/dast.js +24 -34
  191. package/dist/scanners/dast.js.map +1 -1
  192. package/dist/scanners/deploy/types.d.ts +6 -6
  193. package/dist/scanners/eslint.d.ts.map +1 -1
  194. package/dist/scanners/eslint.js +15 -24
  195. package/dist/scanners/eslint.js.map +1 -1
  196. package/dist/scanners/gosec.d.ts.map +1 -1
  197. package/dist/scanners/gosec.js +14 -62
  198. package/dist/scanners/gosec.js.map +1 -1
  199. package/dist/scanners/index.d.ts.map +1 -1
  200. package/dist/scanners/index.js +38 -7
  201. package/dist/scanners/index.js.map +1 -1
  202. package/dist/scanners/memory-safety.d.ts.map +1 -1
  203. package/dist/scanners/memory-safety.js +27 -28
  204. package/dist/scanners/memory-safety.js.map +1 -1
  205. package/dist/scanners/openapi.d.ts.map +1 -1
  206. package/dist/scanners/openapi.js +14 -22
  207. package/dist/scanners/openapi.js.map +1 -1
  208. package/dist/scanners/race-condition.d.ts.map +1 -1
  209. package/dist/scanners/race-condition.js +17 -16
  210. package/dist/scanners/race-condition.js.map +1 -1
  211. package/dist/scanners/runtime/types.d.ts +4 -4
  212. package/dist/scanners/rust.d.ts.map +1 -1
  213. package/dist/scanners/rust.js +38 -37
  214. package/dist/scanners/rust.js.map +1 -1
  215. package/dist/scanners/scale/types.d.ts +16 -16
  216. package/dist/scanners/secrets.d.ts.map +1 -1
  217. package/dist/scanners/secrets.js +66 -78
  218. package/dist/scanners/secrets.js.map +1 -1
  219. package/dist/scanners/semgrep.d.ts +2 -0
  220. package/dist/scanners/semgrep.d.ts.map +1 -1
  221. package/dist/scanners/semgrep.js +12 -0
  222. package/dist/scanners/semgrep.js.map +1 -1
  223. package/dist/scanners/terraform.d.ts.map +1 -1
  224. package/dist/scanners/terraform.js +47 -40
  225. package/dist/scanners/terraform.js.map +1 -1
  226. package/dist/scanners/trivy.d.ts.map +1 -1
  227. package/dist/scanners/trivy.js +38 -30
  228. package/dist/scanners/trivy.js.map +1 -1
  229. package/dist/telemetry/install-id.d.ts +25 -0
  230. package/dist/telemetry/install-id.d.ts.map +1 -0
  231. package/dist/telemetry/install-id.js +49 -0
  232. package/dist/telemetry/install-id.js.map +1 -0
  233. package/dist/telemetry/usage.d.ts +19 -2
  234. package/dist/telemetry/usage.d.ts.map +1 -1
  235. package/dist/telemetry/usage.js +44 -8
  236. package/dist/telemetry/usage.js.map +1 -1
  237. package/dist/tool-guard.d.ts +40 -0
  238. package/dist/tool-guard.d.ts.map +1 -0
  239. package/dist/tool-guard.js +55 -0
  240. package/dist/tool-guard.js.map +1 -0
  241. package/dist/util/index.d.ts +2 -1
  242. package/dist/util/index.d.ts.map +1 -1
  243. package/dist/util/index.js +2 -1
  244. package/dist/util/index.js.map +1 -1
  245. package/dist/util/paths.d.ts +20 -3
  246. package/dist/util/paths.d.ts.map +1 -1
  247. package/dist/util/paths.js +84 -4
  248. package/dist/util/paths.js.map +1 -1
  249. package/dist/util/subprocess.d.ts +51 -0
  250. package/dist/util/subprocess.d.ts.map +1 -0
  251. package/dist/util/subprocess.js +77 -0
  252. package/dist/util/subprocess.js.map +1 -0
  253. package/package.json +12 -2
  254. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +0 -28
  255. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +0 -1
  256. package/dist/eval/fixtures/healthcare/audit-gaps.js +0 -90
  257. package/dist/eval/fixtures/healthcare/audit-gaps.js.map +0 -1
  258. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +0 -31
  259. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +0 -1
  260. package/dist/eval/fixtures/healthcare/consent-bypass.js +0 -61
  261. package/dist/eval/fixtures/healthcare/consent-bypass.js.map +0 -1
  262. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +0 -24
  263. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +0 -1
  264. package/dist/eval/fixtures/healthcare/phi-in-logs.js +0 -41
  265. package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +0 -1
@@ -21,31 +21,33 @@ export const sqlInjectionFixtures = [
21
21
  path: "db.ts",
22
22
  language: "typescript",
23
23
  content: `import { Pool } from 'pg';
24
+ import express from 'express';
24
25
 
25
26
  const pool = new Pool();
27
+ const app = express();
26
28
 
27
- // VULNERABLE: SQL injection via string concatenation
28
- export async function getUserByName(name: string) {
29
+ // VULNERABLE: request input concatenated into a SQL query
30
+ app.get('/users', (req, res) => {
31
+ const name = req.query.name;
29
32
  const query = "SELECT * FROM users WHERE name = '" + name + "'";
30
- return pool.query(query);
31
- }
33
+ pool.query(query).then((r) => res.json(r.rows));
34
+ });
32
35
 
33
- // SAFE: Parameterized query
34
- export async function getUserById(id: number) {
35
- const query = "SELECT * FROM users WHERE id = $1";
36
- return pool.query(query, [id]);
37
- }
36
+ // SAFE: parameterized query
37
+ app.get('/user', (req, res) => {
38
+ pool.query("SELECT * FROM users WHERE id = $1", [req.query.id]);
39
+ });
38
40
  `,
39
41
  },
40
42
  ],
41
43
  expectedFindings: [
42
44
  {
43
45
  file: "db.ts",
44
- line: 7,
46
+ line: 12,
45
47
  severity: "critical",
46
48
  category: "sql-injection",
47
49
  cweId: "CWE-89",
48
- description: "SQL injection via string concatenation",
50
+ description: "SQL injection via string concatenation of request input",
49
51
  isVulnerable: true,
50
52
  },
51
53
  ],
@@ -62,25 +64,29 @@ export async function getUserById(id: number) {
62
64
  path: "search.ts",
63
65
  language: "typescript",
64
66
  content: `import { db } from './connection';
67
+ import express from 'express';
68
+
69
+ const app = express();
65
70
 
66
- // VULNERABLE: Template literal injection
67
- export async function searchProducts(term: string) {
71
+ // VULNERABLE: template-literal injection from request input
72
+ app.get('/search', (req, res) => {
73
+ const term = req.query.term;
68
74
  const sql = \`SELECT * FROM products WHERE name LIKE '%\${term}%'\`;
69
- return db.query(sql);
70
- }
75
+ db.query(sql).then((r) => res.json(r));
76
+ });
71
77
 
72
- // VULNERABLE: Dynamic ORDER BY
73
- export async function listUsers(sortBy: string) {
74
- const sql = \`SELECT * FROM users ORDER BY \${sortBy}\`;
75
- return db.query(sql);
76
- }
78
+ // VULNERABLE: dynamic ORDER BY from request input
79
+ app.get('/list', (req, res) => {
80
+ const sql = \`SELECT * FROM users ORDER BY \${req.query.sortBy}\`;
81
+ db.query(sql);
82
+ });
77
83
  `,
78
84
  },
79
85
  ],
80
86
  expectedFindings: [
81
87
  {
82
88
  file: "search.ts",
83
- line: 5,
89
+ line: 9,
84
90
  severity: "critical",
85
91
  category: "sql-injection",
86
92
  cweId: "CWE-89",
@@ -89,7 +95,7 @@ export async function listUsers(sortBy: string) {
89
95
  },
90
96
  {
91
97
  file: "search.ts",
92
- line: 11,
98
+ line: 15,
93
99
  severity: "high",
94
100
  category: "sql-injection",
95
101
  cweId: "CWE-89",
@@ -165,46 +171,66 @@ export function SafeProfile({ bio }: Props) {
165
171
  {
166
172
  path: "comment.ts",
167
173
  language: "typescript",
168
- content: `// VULNERABLE: innerHTML with user input
169
- export function renderComment(userComment: string) {
170
- const container = document.getElementById('comments');
171
- if (container) {
172
- container.innerHTML = userComment;
173
- }
174
- }
174
+ content: `import express from 'express';
175
175
 
176
- // VULNERABLE: document.write
177
- export function writeMessage(message: string) {
178
- document.write('<div>' + message + '</div>');
179
- }
176
+ const app = express();
180
177
 
181
- // SAFE: textContent
182
- export function renderSafeComment(userComment: string) {
183
- const container = document.getElementById('comments');
184
- if (container) {
185
- container.textContent = userComment;
186
- }
187
- }
178
+ // VULNERABLE: Reflected XSS via res.send with unescaped req.query
179
+ app.get('/comment', (req, res) => {
180
+ const userComment = req.query.text;
181
+ res.send('<div>' + userComment + '</div>');
182
+ });
183
+
184
+ // VULNERABLE: Reflected XSS via res.write with unescaped req.query
185
+ app.get('/message', (req, res) => {
186
+ const message = req.query.msg;
187
+ res.write('<div>' + message + '</div>');
188
+ res.end();
189
+ });
190
+
191
+ // SAFE: JSON response, not HTML
192
+ app.get('/safe-comment', (req, res) => {
193
+ const userComment = req.query.text;
194
+ res.json({ comment: userComment });
195
+ });
188
196
  `,
189
197
  },
190
198
  ],
191
199
  expectedFindings: [
192
200
  {
193
201
  file: "comment.ts",
194
- line: 5,
202
+ line: 8,
195
203
  severity: "high",
196
204
  category: "xss",
197
205
  cweId: "CWE-79",
198
- description: "XSS via innerHTML",
206
+ description: "Reflected XSS via res.send with unescaped request input",
199
207
  isVulnerable: true,
200
208
  },
201
209
  {
202
210
  file: "comment.ts",
203
- line: 11,
211
+ line: 8,
212
+ severity: "high",
213
+ category: "xss",
214
+ cweId: "CWE-79",
215
+ description: "Reflected XSS: unsanitized request input written to HTTP response",
216
+ isVulnerable: true,
217
+ },
218
+ {
219
+ file: "comment.ts",
220
+ line: 14,
221
+ severity: "high",
222
+ category: "xss",
223
+ cweId: "CWE-79",
224
+ description: "Reflected XSS via res.write with unescaped request input",
225
+ isVulnerable: true,
226
+ },
227
+ {
228
+ file: "comment.ts",
229
+ line: 14,
204
230
  severity: "high",
205
231
  category: "xss",
206
232
  cweId: "CWE-79",
207
- description: "XSS via document.write",
233
+ description: "Reflected XSS: unsanitized request input streamed to HTTP response",
208
234
  isVulnerable: true,
209
235
  },
210
236
  ],
@@ -477,46 +503,49 @@ export const pathTraversalFixtures = [
477
503
  path: "files.ts",
478
504
  language: "typescript",
479
505
  content: `import { readFile } from 'fs/promises';
506
+ import { createReadStream } from 'fs';
480
507
  import { join } from 'path';
508
+ import express from 'express';
509
+
510
+ const app = express();
481
511
 
482
512
  // VULNERABLE: Direct user input in path
483
- export async function getFile(filename: string) {
484
- const content = await readFile(filename, 'utf-8');
485
- return content;
486
- }
513
+ app.get('/file', (req, res) => {
514
+ const filename = req.query.name as string;
515
+ readFile(filename, 'utf-8').then((content) => res.send(content));
516
+ });
487
517
 
488
- // VULNERABLE: Path traversal possible
489
- export async function getDocument(docName: string) {
490
- const path = './documents/' + docName;
491
- return readFile(path, 'utf-8');
492
- }
518
+ // VULNERABLE: Path traversal via join with user input
519
+ app.get('/document', (req, res) => {
520
+ const docName = req.query.doc as string;
521
+ const filePath = join('./documents', docName);
522
+ createReadStream(filePath).pipe(res);
523
+ });
493
524
 
494
- // SAFE: Basename extraction and validation
495
- export async function getFileSecure(filename: string) {
496
- const basename = require('path').basename(filename);
497
- const safePath = join('./uploads', basename);
498
- return readFile(safePath, 'utf-8');
499
- }
525
+ // SAFE: Fixed allowlist of known files, no user input in path
526
+ const ALLOWED_FILES: Record<string, string> = {
527
+ readme: './uploads/readme.txt',
528
+ license: './uploads/license.txt',
529
+ };
530
+ app.get('/upload', (req, res) => {
531
+ const key = req.query.name as string;
532
+ const safePath = ALLOWED_FILES[key];
533
+ if (!safePath) {
534
+ return res.status(404).send('Not found');
535
+ }
536
+ readFile(safePath, 'utf-8').then((content) => res.send(content));
537
+ });
500
538
  `,
501
539
  },
502
540
  ],
503
541
  expectedFindings: [
504
542
  {
505
543
  file: "files.ts",
506
- line: 6,
507
- severity: "high",
508
- category: "path-traversal",
509
- cweId: "CWE-22",
510
- description: "Path traversal via direct user input",
511
- isVulnerable: true,
512
- },
513
- {
514
- file: "files.ts",
515
- line: 12,
544
+ line: 17,
516
545
  severity: "high",
517
546
  category: "path-traversal",
518
547
  cweId: "CWE-22",
519
- description: "Path traversal via string concatenation",
548
+ description: "Path traversal via path.join with unvalidated request input",
520
549
  isVulnerable: true,
521
550
  },
522
551
  ],
@@ -537,25 +566,28 @@ export const commandInjectionFixtures = [
537
566
  {
538
567
  path: "utils/git.ts",
539
568
  language: "typescript",
540
- content: `import { exec } from 'child_process';
569
+ content: `import { exec, spawn } from 'child_process';
570
+ import express from 'express';
541
571
 
542
- // VULNERABLE: User input directly in exec
543
- export function cloneRepo(repoUrl: string) {
544
- exec(\`git clone \${repoUrl}\`);
545
- }
572
+ const app = express();
546
573
 
547
- // SAFE: Array-based spawn
548
- import { spawn } from 'child_process';
549
- export function cloneRepoSafe(repoUrl: string) {
550
- spawn('git', ['clone', repoUrl]);
551
- }
574
+ // VULNERABLE: request input concatenated into a shell command
575
+ app.get('/clone', (req, res) => {
576
+ const repoUrl = req.query.repo;
577
+ exec(\`git clone \${repoUrl}\`, (err) => res.sendStatus(err ? 500 : 200));
578
+ });
579
+
580
+ // SAFE: array-based spawn, no shell interpolation
581
+ app.get('/clone-safe', (req, res) => {
582
+ spawn('git', ['clone', String(req.query.repo)]);
583
+ });
552
584
  `,
553
585
  },
554
586
  ],
555
587
  expectedFindings: [
556
588
  {
557
589
  file: "utils/git.ts",
558
- line: 5,
590
+ line: 8,
559
591
  severity: "critical",
560
592
  category: "command-injection",
561
593
  cweId: "CWE-78",
@@ -567,36 +599,40 @@ export function cloneRepoSafe(repoUrl: string) {
567
599
  },
568
600
  {
569
601
  id: "cmd-002",
570
- name: "spawn with shell:true",
571
- description: "Command injection via spawn with shell option enabled",
602
+ name: "exec with request input",
603
+ description: "Command injection via child_process.exec with request input",
572
604
  category: "command-injection",
573
605
  source: "custom",
574
606
  files: [
575
607
  {
576
608
  path: "services/deploy.ts",
577
609
  language: "typescript",
578
- content: `import { spawn } from 'child_process';
610
+ content: `import { exec } from 'child_process';
611
+ import express from 'express';
579
612
 
580
- // VULNERABLE: shell: true with user input
581
- export function runScript(scriptName: string) {
582
- spawn(\`./scripts/\${scriptName}.sh\`, { shell: true });
583
- }
613
+ const app = express();
584
614
 
585
- // SAFE: No shell option
586
- export function runScriptSafe(scriptName: string) {
587
- spawn('./scripts/run.sh', [scriptName]);
588
- }
615
+ // VULNERABLE: request input flows into exec
616
+ app.post('/run', (req, res) => {
617
+ const scriptName = req.body.script;
618
+ exec('./scripts/' + scriptName + '.sh', (err) => res.sendStatus(err ? 500 : 200));
619
+ });
620
+
621
+ // SAFE: fixed command
622
+ app.post('/run-safe', (_req, res) => {
623
+ exec('./scripts/run.sh', () => res.sendStatus(200));
624
+ });
589
625
  `,
590
626
  },
591
627
  ],
592
628
  expectedFindings: [
593
629
  {
594
630
  file: "services/deploy.ts",
595
- line: 5,
631
+ line: 9,
596
632
  severity: "critical",
597
633
  category: "command-injection",
598
634
  cweId: "CWE-78",
599
- description: "shell: true enables command injection",
635
+ description: "Command injection via request input in exec",
600
636
  isVulnerable: true,
601
637
  },
602
638
  ],
@@ -617,28 +653,32 @@ export const ssrfFixtures = [
617
653
  {
618
654
  path: "api/proxy.ts",
619
655
  language: "typescript",
620
- content: `// VULNERABLE: Direct user URL in fetch
621
- export async function proxyRequest(url: string) {
622
- const response = await fetch(url);
623
- return response.json();
624
- }
656
+ content: `import express from 'express';
657
+
658
+ const app = express();
659
+
660
+ // VULNERABLE: request-controlled URL passed straight to fetch
661
+ app.get('/proxy', async (req, res) => {
662
+ const response = await fetch(req.query.url);
663
+ res.json(await response.json());
664
+ });
625
665
 
626
666
  // SAFE: URL allowlist
627
667
  const ALLOWED_HOSTS = ['api.example.com', 'cdn.example.com'];
628
- export async function proxyRequestSafe(url: string) {
629
- const parsed = new URL(url);
668
+ app.get('/proxy-safe', async (req, res) => {
669
+ const parsed = new URL(String(req.query.url));
630
670
  if (!ALLOWED_HOSTS.includes(parsed.host)) {
631
- throw new Error('Host not allowed');
671
+ return res.status(400).end();
632
672
  }
633
- return fetch(url);
634
- }
673
+ res.json(await (await fetch('https://api.example.com')).json());
674
+ });
635
675
  `,
636
676
  },
637
677
  ],
638
678
  expectedFindings: [
639
679
  {
640
680
  file: "api/proxy.ts",
641
- line: 3,
681
+ line: 7,
642
682
  severity: "high",
643
683
  category: "ssrf",
644
684
  cweId: "CWE-918",
@@ -659,30 +699,32 @@ export async function proxyRequestSafe(url: string) {
659
699
  path: "services/webhook.ts",
660
700
  language: "typescript",
661
701
  content: `import axios from 'axios';
702
+ import express from 'express';
662
703
 
663
- // VULNERABLE: Following redirects to internal networks
664
- export async function callWebhook(webhookUrl: string, payload: object) {
665
- const response = await axios.post(webhookUrl, payload, {
666
- maxRedirects: 5, // Can redirect to internal networks
667
- });
668
- return response.data;
669
- }
704
+ const app = express();
670
705
 
671
- // SAFE: Validate URL and disable redirects
672
- export async function callWebhookSafe(webhookUrl: string, payload: object) {
673
- const url = new URL(webhookUrl);
706
+ // VULNERABLE: request-controlled webhook URL
707
+ app.post('/webhook', async (req, res) => {
708
+ const webhookUrl = req.body.url;
709
+ const response = await axios.post(webhookUrl, req.body.payload);
710
+ res.json(response.data);
711
+ });
712
+
713
+ // SAFE: validate URL against internal ranges first
714
+ app.post('/webhook-safe', async (req, res) => {
715
+ const url = new URL(String(req.body.url));
674
716
  if (url.hostname === 'localhost' || url.hostname.startsWith('192.168.')) {
675
- throw new Error('Internal URLs not allowed');
717
+ return res.status(400).end();
676
718
  }
677
- return axios.post(webhookUrl, payload, { maxRedirects: 0 });
678
- }
719
+ res.json((await axios.post('https://hooks.example.com', req.body.payload)).data);
720
+ });
679
721
  `,
680
722
  },
681
723
  ],
682
724
  expectedFindings: [
683
725
  {
684
726
  file: "services/webhook.ts",
685
- line: 5,
727
+ line: 9,
686
728
  severity: "high",
687
729
  category: "ssrf",
688
730
  cweId: "CWE-918",
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/eval/fixtures.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixtures.js","sourceRoot":"","sources":["../../src/eval/fixtures.ts"],"names":[],"mappings":"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"}
@@ -71,10 +71,12 @@ describe("fixtures", () => {
71
71
  expect(reactFixture).toBeDefined();
72
72
  expect(reactFixture.files[0].language).toBe("tsx");
73
73
  });
74
- it("includes DOM manipulation test case", () => {
74
+ it("includes a reflected-output XSS test case", () => {
75
75
  const domFixture = xssFixtures.find((f) => f.id === "xss-002");
76
76
  expect(domFixture).toBeDefined();
77
- expect(domFixture.files[0].content).toContain("innerHTML");
77
+ // realistic reflected XSS: request input echoed into the response
78
+ expect(domFixture.files[0].content).toMatch(/res\.(send|write)/);
79
+ expect(domFixture.files[0].content).toContain("req.query");
78
80
  });
79
81
  });
80
82
  describe("secretsFixtures", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"fixtures.test.js","sourceRoot":"","sources":["../../src/eval/fixtures.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fixtures.test.js","sourceRoot":"","sources":["../../src/eval/fixtures.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * LLM security analyzer for the accuracy benchmark.
3
+ *
4
+ * Runs the LLM layer (Anthropic, optionally OpenAI for cross-model
5
+ * consensus) over a code sample and returns structured findings in the
6
+ * same shape the eval harness matches against ground truth. This lets
7
+ * the benchmark measure the *full pipeline*, not just the deterministic
8
+ * scanners — and it's where the logic/semantic classes (auth-bypass,
9
+ * RLS, deserialization) the scanners miss should get caught.
10
+ *
11
+ * Providers are loaded via dynamic import so neither SDK is a hard
12
+ * runtime dependency (openai is only needed for consensus).
13
+ *
14
+ * @module eval/llm-analyzer
15
+ */
16
+ import type { ActualFinding } from "./types.js";
17
+ export type LlmProvider = "anthropic" | "openai";
18
+ /** Whether a given provider can run (API key present). */
19
+ export declare function providerAvailable(provider: LlmProvider): boolean;
20
+ /** Analyze a single file with one provider. */
21
+ export declare function analyzeCode(file: string, code: string, provider: LlmProvider): Promise<ActualFinding[]>;
22
+ /**
23
+ * Two findings agree if they name the same file, the same category, and a
24
+ * line within tolerance. Category is the part after the `<provider>:`
25
+ * prefix in ruleId, so cross-provider findings compare correctly.
26
+ */
27
+ export declare function findingsAgree(a: ActualFinding, b: ActualFinding): boolean;
28
+ /** The findings from `primary` that at least one `other` finding agrees with. */
29
+ export declare function consensusOf(primary: ActualFinding[], other: ActualFinding[]): ActualFinding[];
30
+ /**
31
+ * Cross-model consensus: run both providers and keep findings both agree
32
+ * on (same file, category, and line within tolerance). Trades recall for
33
+ * confidence — every kept finding has two-model corroboration. That's the
34
+ * value proposition of multi-model consensus for certification.
35
+ */
36
+ export declare function analyzeWithConsensus(file: string, code: string): Promise<{
37
+ consensus: ActualFinding[];
38
+ byProvider: Record<string, ActualFinding[]>;
39
+ }>;
40
+ //# sourceMappingURL=llm-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm-analyzer.d.ts","sourceRoot":"","sources":["../../src/eval/llm-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,WAAW,GAAG,QAAQ,CAAC;AA4EjD,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAIhE;AA2DD,+CAA+C;AAC/C,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,aAAa,EAAE,CAAC,CAI1B;AAKD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAMzE;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CACzB,OAAO,EAAE,aAAa,EAAE,EACxB,KAAK,EAAE,aAAa,EAAE,GACrB,aAAa,EAAE,CAEjB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC;IAAE,SAAS,EAAE,aAAa,EAAE,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAA;CAAE,CAAC,CAOtF"}