vaspera 2.8.0 → 2.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) hide show
  1. package/CHANGELOG.md +109 -7
  2. package/README.md +111 -7
  3. package/dist/__tests__/agents/adversary/tactics/api.test.d.ts +5 -0
  4. package/dist/__tests__/agents/adversary/tactics/api.test.d.ts.map +1 -0
  5. package/dist/__tests__/agents/adversary/tactics/api.test.js +369 -0
  6. package/dist/__tests__/agents/adversary/tactics/api.test.js.map +1 -0
  7. package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts +5 -0
  8. package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts.map +1 -0
  9. package/dist/__tests__/agents/adversary/tactics/llm.test.js +409 -0
  10. package/dist/__tests__/agents/adversary/tactics/llm.test.js.map +1 -0
  11. package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts +7 -0
  12. package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts.map +1 -0
  13. package/dist/__tests__/agents/adversary/tactics/registry.test.js +74 -0
  14. package/dist/__tests__/agents/adversary/tactics/registry.test.js.map +1 -0
  15. package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts +7 -0
  16. package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts.map +1 -0
  17. package/dist/__tests__/agents/adversary/tactics/web-app.test.js +374 -0
  18. package/dist/__tests__/agents/adversary/tactics/web-app.test.js.map +1 -0
  19. package/dist/__tests__/compliance-bundle.test.d.ts +9 -0
  20. package/dist/__tests__/compliance-bundle.test.d.ts.map +1 -0
  21. package/dist/__tests__/compliance-bundle.test.js +344 -0
  22. package/dist/__tests__/compliance-bundle.test.js.map +1 -0
  23. package/dist/__tests__/healthcare-compliance.test.d.ts +9 -0
  24. package/dist/__tests__/healthcare-compliance.test.d.ts.map +1 -0
  25. package/dist/__tests__/healthcare-compliance.test.js +233 -0
  26. package/dist/__tests__/healthcare-compliance.test.js.map +1 -0
  27. package/dist/action/diff-mode.d.ts +124 -8
  28. package/dist/action/diff-mode.d.ts.map +1 -1
  29. package/dist/action/diff-mode.js +384 -65
  30. package/dist/action/diff-mode.js.map +1 -1
  31. package/dist/action/diff-mode.test.js +3 -3
  32. package/dist/action/diff-mode.test.js.map +1 -1
  33. package/dist/action/pr-comment.test.js +1 -0
  34. package/dist/action/pr-comment.test.js.map +1 -1
  35. package/dist/action/sarif-upload.test.js +1 -0
  36. package/dist/action/sarif-upload.test.js.map +1 -1
  37. package/dist/agents/adversary/config.d.ts +25 -4
  38. package/dist/agents/adversary/config.d.ts.map +1 -1
  39. package/dist/agents/adversary/config.js +38 -8
  40. package/dist/agents/adversary/config.js.map +1 -1
  41. package/dist/agents/adversary/index.d.ts +7 -0
  42. package/dist/agents/adversary/index.d.ts.map +1 -1
  43. package/dist/agents/adversary/index.js +83 -1
  44. package/dist/agents/adversary/index.js.map +1 -1
  45. package/dist/agents/adversary/reporting/compliance-mapper.d.ts +108 -0
  46. package/dist/agents/adversary/reporting/compliance-mapper.d.ts.map +1 -0
  47. package/dist/agents/adversary/reporting/compliance-mapper.js +391 -0
  48. package/dist/agents/adversary/reporting/compliance-mapper.js.map +1 -0
  49. package/dist/agents/adversary/reporting/index.d.ts +10 -0
  50. package/dist/agents/adversary/reporting/index.d.ts.map +1 -0
  51. package/dist/agents/adversary/reporting/index.js +10 -0
  52. package/dist/agents/adversary/reporting/index.js.map +1 -0
  53. package/dist/agents/adversary/reporting/poc-generator.d.ts +44 -0
  54. package/dist/agents/adversary/reporting/poc-generator.d.ts.map +1 -0
  55. package/dist/agents/adversary/reporting/poc-generator.js +308 -0
  56. package/dist/agents/adversary/reporting/poc-generator.js.map +1 -0
  57. package/dist/agents/adversary/tactics/api.d.ts +13 -0
  58. package/dist/agents/adversary/tactics/api.d.ts.map +1 -0
  59. package/dist/agents/adversary/tactics/api.js +815 -0
  60. package/dist/agents/adversary/tactics/api.js.map +1 -0
  61. package/dist/agents/adversary/tactics/auth.d.ts +13 -0
  62. package/dist/agents/adversary/tactics/auth.d.ts.map +1 -0
  63. package/dist/agents/adversary/tactics/auth.js +676 -0
  64. package/dist/agents/adversary/tactics/auth.js.map +1 -0
  65. package/dist/agents/adversary/tactics/index.d.ts +129 -0
  66. package/dist/agents/adversary/tactics/index.d.ts.map +1 -0
  67. package/dist/agents/adversary/tactics/index.js +199 -0
  68. package/dist/agents/adversary/tactics/index.js.map +1 -0
  69. package/dist/agents/adversary/tactics/infra.d.ts +13 -0
  70. package/dist/agents/adversary/tactics/infra.d.ts.map +1 -0
  71. package/dist/agents/adversary/tactics/infra.js +827 -0
  72. package/dist/agents/adversary/tactics/infra.js.map +1 -0
  73. package/dist/agents/adversary/tactics/injection.d.ts +12 -0
  74. package/dist/agents/adversary/tactics/injection.d.ts.map +1 -0
  75. package/dist/agents/adversary/tactics/injection.js +549 -0
  76. package/dist/agents/adversary/tactics/injection.js.map +1 -0
  77. package/dist/agents/adversary/tactics/llm.d.ts +13 -0
  78. package/dist/agents/adversary/tactics/llm.d.ts.map +1 -0
  79. package/dist/agents/adversary/tactics/llm.js +767 -0
  80. package/dist/agents/adversary/tactics/llm.js.map +1 -0
  81. package/dist/agents/adversary/tactics/web-app.d.ts +13 -0
  82. package/dist/agents/adversary/tactics/web-app.d.ts.map +1 -0
  83. package/dist/agents/adversary/tactics/web-app.js +717 -0
  84. package/dist/agents/adversary/tactics/web-app.js.map +1 -0
  85. package/dist/agents/adversary/types.d.ts +66 -10
  86. package/dist/agents/adversary/types.d.ts.map +1 -1
  87. package/dist/agents/zero-day-hunter.d.ts +1 -1
  88. package/dist/agents/zero-day-hunter.d.ts.map +1 -1
  89. package/dist/analysis/data-flow.d.ts +154 -0
  90. package/dist/analysis/data-flow.d.ts.map +1 -0
  91. package/dist/analysis/data-flow.js +393 -0
  92. package/dist/analysis/data-flow.js.map +1 -0
  93. package/dist/analysis/index.d.ts +9 -0
  94. package/dist/analysis/index.d.ts.map +1 -0
  95. package/dist/analysis/index.js +9 -0
  96. package/dist/analysis/index.js.map +1 -0
  97. package/dist/badge-service/index.d.ts +144 -0
  98. package/dist/badge-service/index.d.ts.map +1 -0
  99. package/dist/badge-service/index.js +206 -0
  100. package/dist/badge-service/index.js.map +1 -0
  101. package/dist/certification/types.d.ts +1 -1
  102. package/dist/certification/types.d.ts.map +1 -1
  103. package/dist/certification/types.js.map +1 -1
  104. package/dist/commands/certification/certify.d.ts.map +1 -1
  105. package/dist/commands/certification/certify.js +18 -4
  106. package/dist/commands/certification/certify.js.map +1 -1
  107. package/dist/compliance/attestation.d.ts +39 -0
  108. package/dist/compliance/attestation.d.ts.map +1 -0
  109. package/dist/compliance/attestation.js +364 -0
  110. package/dist/compliance/attestation.js.map +1 -0
  111. package/dist/compliance/cfr42-part2.d.ts +42 -0
  112. package/dist/compliance/cfr42-part2.d.ts.map +1 -0
  113. package/dist/compliance/cfr42-part2.js +408 -0
  114. package/dist/compliance/cfr42-part2.js.map +1 -0
  115. package/dist/compliance/compliance-bundle.d.ts +100 -0
  116. package/dist/compliance/compliance-bundle.d.ts.map +1 -0
  117. package/dist/compliance/compliance-bundle.js +210 -0
  118. package/dist/compliance/compliance-bundle.js.map +1 -0
  119. package/dist/compliance/healthcare-bundle.d.ts +68 -0
  120. package/dist/compliance/healthcare-bundle.d.ts.map +1 -0
  121. package/dist/compliance/healthcare-bundle.js +104 -0
  122. package/dist/compliance/healthcare-bundle.js.map +1 -0
  123. package/dist/compliance/hipaa.d.ts.map +1 -1
  124. package/dist/compliance/hipaa.js +14 -11
  125. package/dist/compliance/hipaa.js.map +1 -1
  126. package/dist/compliance/index.d.ts +10 -2
  127. package/dist/compliance/index.d.ts.map +1 -1
  128. package/dist/compliance/index.js +9 -3
  129. package/dist/compliance/index.js.map +1 -1
  130. package/dist/compliance/mapper.d.ts.map +1 -1
  131. package/dist/compliance/mapper.js +3 -17
  132. package/dist/compliance/mapper.js.map +1 -1
  133. package/dist/compliance/nist-800-53.d.ts +22 -6
  134. package/dist/compliance/nist-800-53.d.ts.map +1 -1
  135. package/dist/compliance/nist-800-53.js +264 -272
  136. package/dist/compliance/nist-800-53.js.map +1 -1
  137. package/dist/compliance/report.d.ts +31 -2
  138. package/dist/compliance/report.d.ts.map +1 -1
  139. package/dist/compliance/report.js +255 -4
  140. package/dist/compliance/report.js.map +1 -1
  141. package/dist/compliance/types.d.ts +1 -1
  142. package/dist/compliance/types.d.ts.map +1 -1
  143. package/dist/config/flags.d.ts +12 -12
  144. package/dist/cost/index.d.ts +1 -1
  145. package/dist/cost/index.d.ts.map +1 -1
  146. package/dist/cost/index.js +1 -1
  147. package/dist/cost/index.js.map +1 -1
  148. package/dist/cost/tracker.d.ts +64 -0
  149. package/dist/cost/tracker.d.ts.map +1 -1
  150. package/dist/cost/tracker.js +165 -0
  151. package/dist/cost/tracker.js.map +1 -1
  152. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +28 -0
  153. package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +1 -0
  154. package/dist/eval/fixtures/healthcare/audit-gaps.js +90 -0
  155. package/dist/eval/fixtures/healthcare/audit-gaps.js.map +1 -0
  156. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +31 -0
  157. package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +1 -0
  158. package/dist/eval/fixtures/healthcare/consent-bypass.js +61 -0
  159. package/dist/eval/fixtures/healthcare/consent-bypass.js.map +1 -0
  160. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +24 -0
  161. package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +1 -0
  162. package/dist/eval/fixtures/healthcare/phi-in-logs.js +41 -0
  163. package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +1 -0
  164. package/dist/evidence/collector.d.ts +21 -0
  165. package/dist/evidence/collector.d.ts.map +1 -0
  166. package/dist/evidence/collector.js +340 -0
  167. package/dist/evidence/collector.js.map +1 -0
  168. package/dist/evidence/index.d.ts +11 -0
  169. package/dist/evidence/index.d.ts.map +1 -0
  170. package/dist/evidence/index.js +12 -0
  171. package/dist/evidence/index.js.map +1 -0
  172. package/dist/evidence/store.d.ts +39 -0
  173. package/dist/evidence/store.d.ts.map +1 -0
  174. package/dist/evidence/store.js +173 -0
  175. package/dist/evidence/store.js.map +1 -0
  176. package/dist/evidence/types.d.ts +175 -0
  177. package/dist/evidence/types.d.ts.map +1 -0
  178. package/dist/evidence/types.js +9 -0
  179. package/dist/evidence/types.js.map +1 -0
  180. package/dist/exporters/checkmarx.d.ts +18 -0
  181. package/dist/exporters/checkmarx.d.ts.map +1 -0
  182. package/dist/exporters/checkmarx.js +203 -0
  183. package/dist/exporters/checkmarx.js.map +1 -0
  184. package/dist/exporters/index.d.ts +22 -0
  185. package/dist/exporters/index.d.ts.map +1 -0
  186. package/dist/exporters/index.js +41 -0
  187. package/dist/exporters/index.js.map +1 -0
  188. package/dist/exporters/snyk.d.ts +18 -0
  189. package/dist/exporters/snyk.d.ts.map +1 -0
  190. package/dist/exporters/snyk.js +119 -0
  191. package/dist/exporters/snyk.js.map +1 -0
  192. package/dist/exporters/sonarqube.d.ts +18 -0
  193. package/dist/exporters/sonarqube.d.ts.map +1 -0
  194. package/dist/exporters/sonarqube.js +125 -0
  195. package/dist/exporters/sonarqube.js.map +1 -0
  196. package/dist/exporters/types.d.ts +190 -0
  197. package/dist/exporters/types.d.ts.map +1 -0
  198. package/dist/exporters/types.js +9 -0
  199. package/dist/exporters/types.js.map +1 -0
  200. package/dist/frontier/index.d.ts +12 -0
  201. package/dist/frontier/index.d.ts.map +1 -0
  202. package/dist/frontier/index.js +12 -0
  203. package/dist/frontier/index.js.map +1 -0
  204. package/dist/frontier/orchestrator.d.ts +73 -0
  205. package/dist/frontier/orchestrator.d.ts.map +1 -0
  206. package/dist/frontier/orchestrator.js +312 -0
  207. package/dist/frontier/orchestrator.js.map +1 -0
  208. package/dist/frontier/providers/stub.d.ts +32 -0
  209. package/dist/frontier/providers/stub.d.ts.map +1 -0
  210. package/dist/frontier/providers/stub.js +66 -0
  211. package/dist/frontier/providers/stub.js.map +1 -0
  212. package/dist/frontier/types.d.ts +318 -0
  213. package/dist/frontier/types.d.ts.map +1 -0
  214. package/dist/frontier/types.js +27 -0
  215. package/dist/frontier/types.js.map +1 -0
  216. package/dist/history/index.d.ts +13 -0
  217. package/dist/history/index.d.ts.map +1 -0
  218. package/dist/history/index.js +15 -0
  219. package/dist/history/index.js.map +1 -0
  220. package/dist/history/store.d.ts +74 -0
  221. package/dist/history/store.d.ts.map +1 -0
  222. package/dist/history/store.js +399 -0
  223. package/dist/history/store.js.map +1 -0
  224. package/dist/history/types.d.ts +282 -0
  225. package/dist/history/types.d.ts.map +1 -0
  226. package/dist/history/types.js +41 -0
  227. package/dist/history/types.js.map +1 -0
  228. package/dist/history/verify.d.ts +44 -0
  229. package/dist/history/verify.d.ts.map +1 -0
  230. package/dist/history/verify.js +230 -0
  231. package/dist/history/verify.js.map +1 -0
  232. package/dist/index.d.ts.map +1 -1
  233. package/dist/index.js +515 -19
  234. package/dist/index.js.map +1 -1
  235. package/dist/multimodel/index.d.ts +1 -0
  236. package/dist/multimodel/index.d.ts.map +1 -1
  237. package/dist/multimodel/index.js +2 -0
  238. package/dist/multimodel/index.js.map +1 -1
  239. package/dist/multimodel/leaderboard.d.ts +116 -0
  240. package/dist/multimodel/leaderboard.d.ts.map +1 -0
  241. package/dist/multimodel/leaderboard.js +262 -0
  242. package/dist/multimodel/leaderboard.js.map +1 -0
  243. package/dist/observability/otel.d.ts.map +1 -1
  244. package/dist/observability/otel.js +1 -3
  245. package/dist/observability/otel.js.map +1 -1
  246. package/dist/plugins/loader.js +1 -1
  247. package/dist/plugins/loader.js.map +1 -1
  248. package/dist/scanners/agent/agent-chain-analysis.d.ts +152 -0
  249. package/dist/scanners/agent/agent-chain-analysis.d.ts.map +1 -0
  250. package/dist/scanners/agent/agent-chain-analysis.js +438 -0
  251. package/dist/scanners/agent/agent-chain-analysis.js.map +1 -0
  252. package/dist/scanners/agent/payloads/index.d.ts +2 -1
  253. package/dist/scanners/agent/payloads/index.d.ts.map +1 -1
  254. package/dist/scanners/agent/payloads/index.js +25 -6
  255. package/dist/scanners/agent/payloads/index.js.map +1 -1
  256. package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
  257. package/dist/scanners/agent/prompt-injection-fuzzer.js +14 -0
  258. package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
  259. package/dist/scanners/agent/types.d.ts +5 -5
  260. package/dist/scanners/agent/types.d.ts.map +1 -1
  261. package/dist/scanners/agent/types.js.map +1 -1
  262. package/dist/scanners/cache.d.ts +156 -0
  263. package/dist/scanners/cache.d.ts.map +1 -0
  264. package/dist/scanners/cache.js +462 -0
  265. package/dist/scanners/cache.js.map +1 -0
  266. package/dist/scanners/dependencies.js +4 -4
  267. package/dist/scanners/dependencies.js.map +1 -1
  268. package/dist/scanners/gosec.d.ts.map +1 -1
  269. package/dist/scanners/gosec.js +47 -9
  270. package/dist/scanners/gosec.js.map +1 -1
  271. package/dist/scanners/healthcare.d.ts +29 -0
  272. package/dist/scanners/healthcare.d.ts.map +1 -0
  273. package/dist/scanners/healthcare.js +526 -0
  274. package/dist/scanners/healthcare.js.map +1 -0
  275. package/dist/scanners/index.d.ts +1 -0
  276. package/dist/scanners/index.d.ts.map +1 -1
  277. package/dist/scanners/index.js +33 -0
  278. package/dist/scanners/index.js.map +1 -1
  279. package/dist/scanners/index.test.js +6 -6
  280. package/dist/scanners/index.test.js.map +1 -1
  281. package/dist/scanners/secrets.js +4 -4
  282. package/dist/scanners/secrets.js.map +1 -1
  283. package/dist/scanners/semgrep.js +5 -5
  284. package/dist/scanners/semgrep.js.map +1 -1
  285. package/dist/scanners/types.d.ts +1 -1
  286. package/dist/scanners/types.d.ts.map +1 -1
  287. package/dist/scanners/types.js +1 -0
  288. package/dist/scanners/types.js.map +1 -1
  289. package/dist/scanners/typescript.test.js +1 -1
  290. package/dist/scanners/typescript.test.js.map +1 -1
  291. package/dist/telemetry/index.d.ts +10 -0
  292. package/dist/telemetry/index.d.ts.map +1 -0
  293. package/dist/telemetry/index.js +10 -0
  294. package/dist/telemetry/index.js.map +1 -0
  295. package/dist/telemetry/registry.d.ts +178 -0
  296. package/dist/telemetry/registry.d.ts.map +1 -0
  297. package/dist/telemetry/registry.js +297 -0
  298. package/dist/telemetry/registry.js.map +1 -0
  299. package/dist/telemetry/usage.d.ts +197 -0
  300. package/dist/telemetry/usage.d.ts.map +1 -0
  301. package/dist/telemetry/usage.js +252 -0
  302. package/dist/telemetry/usage.js.map +1 -0
  303. package/package.json +2 -6
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Agent Chain Analysis
3
+ *
4
+ * Extends exfil-path-graph with multi-agent attack path analysis.
5
+ * Models trust boundaries between agents and MCP servers to identify
6
+ * attack paths that span multiple agent hops.
7
+ *
8
+ * @module scanners/agent/agent-chain-analysis
9
+ */
10
+ import type { Severity } from "../../certification/types.js";
11
+ import type { MCPManifest } from "./types.js";
12
+ /**
13
+ * Trust level for an agent or tool
14
+ */
15
+ export type AgentTrustLevel = "high" | "medium" | "low" | "untrusted";
16
+ /**
17
+ * Types of nodes in the agent graph
18
+ */
19
+ export type AgentNodeType = "mcp-server" | "agent" | "tool" | "external-api" | "user" | "data-store";
20
+ /**
21
+ * A node in the agent capability graph
22
+ */
23
+ export interface AgentNode {
24
+ /** Unique identifier */
25
+ id: string;
26
+ /** Node type */
27
+ type: AgentNodeType;
28
+ /** Human-readable name */
29
+ name: string;
30
+ /** Trust level */
31
+ trustLevel: AgentTrustLevel;
32
+ /** Capabilities this node has */
33
+ capabilities: string[];
34
+ /** Data types this node can access */
35
+ dataAccess: string[];
36
+ /** Whether this is an entry point (untrusted input) */
37
+ isEntryPoint: boolean;
38
+ /** Whether this accesses sensitive data */
39
+ accessesSensitiveData: boolean;
40
+ /** Risk score (0-100) */
41
+ riskScore: number;
42
+ }
43
+ /**
44
+ * Connection types between agents
45
+ */
46
+ export type AgentEdgeType = "calls" | "delegates" | "reads-from" | "writes-to" | "authenticates";
47
+ /**
48
+ * An edge between nodes in the agent graph
49
+ */
50
+ export interface AgentEdge {
51
+ /** Source node ID */
52
+ from: string;
53
+ /** Target node ID */
54
+ to: string;
55
+ /** Connection type */
56
+ type: AgentEdgeType;
57
+ /** Data types that flow across this edge */
58
+ dataTypes: string[];
59
+ /** Whether authentication is required */
60
+ requiresAuth: boolean;
61
+ /** Trust boundary crossing (trust drops) */
62
+ crossesTrustBoundary: boolean;
63
+ /** Description */
64
+ description?: string;
65
+ }
66
+ /**
67
+ * The complete agent interaction graph
68
+ */
69
+ export interface AgentGraph {
70
+ /** All nodes */
71
+ nodes: AgentNode[];
72
+ /** All edges */
73
+ edges: AgentEdge[];
74
+ }
75
+ /**
76
+ * A multi-hop attack path through the agent graph
77
+ */
78
+ export interface AttackPath {
79
+ /** Unique path ID */
80
+ id: string;
81
+ /** Human-readable title */
82
+ title: string;
83
+ /** Nodes in the attack path */
84
+ steps: AgentNode[];
85
+ /** Edges traversed */
86
+ edgesTraversed: AgentEdge[];
87
+ /** Number of trust boundaries crossed */
88
+ trustBoundariesCrossed: number;
89
+ /** Sensitive data exposed by this path */
90
+ dataExposed: string[];
91
+ /** Overall severity */
92
+ severity: Severity;
93
+ /** Confidence (0-100) */
94
+ confidence: number;
95
+ /** Attack narrative */
96
+ attackNarrative: string;
97
+ /** Mitigation recommendations */
98
+ mitigation: string[];
99
+ /** MITRE ATT&CK techniques if applicable */
100
+ mitreTechniques?: string[];
101
+ }
102
+ /**
103
+ * Result of agent chain analysis
104
+ */
105
+ export interface AgentChainAnalysisResult {
106
+ /** The agent graph */
107
+ graph: AgentGraph;
108
+ /** Identified attack paths */
109
+ attackPaths: AttackPath[];
110
+ /** Statistics */
111
+ stats: {
112
+ totalNodes: number;
113
+ totalEdges: number;
114
+ entryPoints: number;
115
+ sensitiveNodes: number;
116
+ trustBoundaries: number;
117
+ attackPaths: number;
118
+ criticalPaths: number;
119
+ highPaths: number;
120
+ };
121
+ /** Mermaid diagram */
122
+ mermaidDiagram: string;
123
+ }
124
+ /**
125
+ * Build agent graph from MCP manifests
126
+ */
127
+ export declare function buildAgentGraph(manifests: Array<{
128
+ name: string;
129
+ manifest: MCPManifest;
130
+ }>, agentConfigs?: Array<{
131
+ name: string;
132
+ trustLevel: AgentTrustLevel;
133
+ }>): AgentGraph;
134
+ /**
135
+ * Find attack paths from entry points to sensitive data
136
+ */
137
+ export declare function analyzeAgentChains(graph: AgentGraph): AttackPath[];
138
+ /**
139
+ * Generate Mermaid diagram for agent graph
140
+ */
141
+ export declare function generateAgentChainDiagram(graph: AgentGraph, attackPaths: AttackPath[]): string;
142
+ /**
143
+ * Run full agent chain analysis
144
+ */
145
+ export declare function runAgentChainAnalysis(manifests: Array<{
146
+ name: string;
147
+ manifest: MCPManifest;
148
+ }>, agentConfigs?: Array<{
149
+ name: string;
150
+ trustLevel: AgentTrustLevel;
151
+ }>): AgentChainAnalysisResult;
152
+ //# sourceMappingURL=agent-chain-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-chain-analysis.d.ts","sourceRoot":"","sources":["../../../src/scanners/agent/agent-chain-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,438 @@
1
+ /**
2
+ * Agent Chain Analysis
3
+ *
4
+ * Extends exfil-path-graph with multi-agent attack path analysis.
5
+ * Models trust boundaries between agents and MCP servers to identify
6
+ * attack paths that span multiple agent hops.
7
+ *
8
+ * @module scanners/agent/agent-chain-analysis
9
+ */
10
+ // ============================================================================
11
+ // Sensitive Data Patterns
12
+ // ============================================================================
13
+ const SENSITIVE_DATA_PATTERNS = [
14
+ { pattern: /password/i, type: "credentials" },
15
+ { pattern: /secret/i, type: "secrets" },
16
+ { pattern: /api[_\s-]?key/i, type: "api-keys" },
17
+ { pattern: /token/i, type: "tokens" },
18
+ { pattern: /credential/i, type: "credentials" },
19
+ { pattern: /auth/i, type: "auth-data" },
20
+ { pattern: /private[_\s-]?key/i, type: "private-keys" },
21
+ { pattern: /ssh/i, type: "ssh-keys" },
22
+ { pattern: /certificate/i, type: "certificates" },
23
+ { pattern: /pii/i, type: "pii" },
24
+ { pattern: /personal/i, type: "pii" },
25
+ { pattern: /credit[_\s-]?card/i, type: "pci-data" },
26
+ { pattern: /ssn|social[_\s-]?security/i, type: "pii" },
27
+ { pattern: /health|medical|hipaa/i, type: "phi" },
28
+ { pattern: /financial/i, type: "financial-data" },
29
+ { pattern: /database/i, type: "database-access" },
30
+ { pattern: /admin/i, type: "admin-access" },
31
+ ];
32
+ // ============================================================================
33
+ // Graph Building
34
+ // ============================================================================
35
+ /**
36
+ * Classify trust level for a tool
37
+ */
38
+ function classifyTrustLevel(tool) {
39
+ // Network-facing tools are less trusted
40
+ if (tool.networkAccess)
41
+ return "low";
42
+ // Code execution is low trust
43
+ if (tool.codeExecution)
44
+ return "low";
45
+ // Destructive tools are medium trust
46
+ if (tool.destructiveHint)
47
+ return "medium";
48
+ // Read-only tools are higher trust
49
+ if (tool.readOnlyHint)
50
+ return "high";
51
+ // Default to medium
52
+ return "medium";
53
+ }
54
+ /**
55
+ * Extract data types from tool description
56
+ */
57
+ function extractDataTypes(tool) {
58
+ const text = `${tool.name} ${tool.description || ""}`;
59
+ const types = new Set();
60
+ for (const { pattern, type } of SENSITIVE_DATA_PATTERNS) {
61
+ if (pattern.test(text)) {
62
+ types.add(type);
63
+ }
64
+ }
65
+ return Array.from(types);
66
+ }
67
+ /**
68
+ * Check if a tool accesses sensitive data
69
+ */
70
+ function accessesSensitiveData(dataTypes) {
71
+ const sensitiveTypes = [
72
+ "credentials",
73
+ "secrets",
74
+ "api-keys",
75
+ "tokens",
76
+ "private-keys",
77
+ "ssh-keys",
78
+ "pii",
79
+ "pci-data",
80
+ "phi",
81
+ ];
82
+ return dataTypes.some((t) => sensitiveTypes.includes(t));
83
+ }
84
+ /**
85
+ * Calculate risk score for an agent node
86
+ */
87
+ function calculateAgentNodeRisk(node) {
88
+ let score = 0;
89
+ // Trust level impact
90
+ if (node.trustLevel === "untrusted")
91
+ score += 40;
92
+ else if (node.trustLevel === "low")
93
+ score += 30;
94
+ else if (node.trustLevel === "medium")
95
+ score += 15;
96
+ // Entry point risk
97
+ if (node.isEntryPoint)
98
+ score += 25;
99
+ // Sensitive data access
100
+ if (node.accessesSensitiveData)
101
+ score += 35;
102
+ // Capabilities
103
+ if (node.capabilities?.includes("network_access"))
104
+ score += 20;
105
+ if (node.capabilities?.includes("code_execution"))
106
+ score += 30;
107
+ if (node.capabilities?.includes("file_write"))
108
+ score += 15;
109
+ return Math.min(100, score);
110
+ }
111
+ /**
112
+ * Build agent graph from MCP manifests
113
+ */
114
+ export function buildAgentGraph(manifests, agentConfigs) {
115
+ const nodes = [];
116
+ const edges = [];
117
+ // Add user as entry point
118
+ nodes.push({
119
+ id: "user",
120
+ type: "user",
121
+ name: "User Input",
122
+ trustLevel: "untrusted",
123
+ capabilities: ["input"],
124
+ dataAccess: [],
125
+ isEntryPoint: true,
126
+ accessesSensitiveData: false,
127
+ riskScore: 40,
128
+ });
129
+ // Add each MCP server and its tools
130
+ for (const { name: serverName, manifest } of manifests) {
131
+ // Add MCP server node
132
+ const serverId = `mcp-${serverName}`;
133
+ nodes.push({
134
+ id: serverId,
135
+ type: "mcp-server",
136
+ name: serverName,
137
+ trustLevel: "medium",
138
+ capabilities: ["tool-provider"],
139
+ dataAccess: [],
140
+ isEntryPoint: false,
141
+ accessesSensitiveData: false,
142
+ riskScore: 20,
143
+ });
144
+ // Add edge from user to MCP server
145
+ edges.push({
146
+ from: "user",
147
+ to: serverId,
148
+ type: "calls",
149
+ dataTypes: ["user-input"],
150
+ requiresAuth: false,
151
+ crossesTrustBoundary: true,
152
+ });
153
+ // Add tool nodes
154
+ for (const tool of manifest.tools) {
155
+ const toolId = `${serverId}-${tool.name}`;
156
+ const dataTypes = extractDataTypes(tool);
157
+ const trustLevel = classifyTrustLevel(tool);
158
+ const toolNode = {
159
+ id: toolId,
160
+ type: "tool",
161
+ name: tool.name,
162
+ trustLevel,
163
+ capabilities: [],
164
+ dataAccess: dataTypes,
165
+ isEntryPoint: false,
166
+ accessesSensitiveData: accessesSensitiveData(dataTypes),
167
+ riskScore: 0,
168
+ };
169
+ // Add capabilities
170
+ if (tool.networkAccess)
171
+ toolNode.capabilities.push("network_access");
172
+ if (tool.codeExecution)
173
+ toolNode.capabilities.push("code_execution");
174
+ if (tool.destructiveHint)
175
+ toolNode.capabilities.push("write");
176
+ if (tool.readOnlyHint)
177
+ toolNode.capabilities.push("read");
178
+ toolNode.riskScore = calculateAgentNodeRisk(toolNode);
179
+ nodes.push(toolNode);
180
+ // Add edge from server to tool
181
+ edges.push({
182
+ from: serverId,
183
+ to: toolId,
184
+ type: "calls",
185
+ dataTypes,
186
+ requiresAuth: false,
187
+ crossesTrustBoundary: trustLevel !== "medium",
188
+ });
189
+ }
190
+ }
191
+ // Add agent nodes if configured
192
+ if (agentConfigs) {
193
+ for (const agent of agentConfigs) {
194
+ const agentId = `agent-${agent.name}`;
195
+ nodes.push({
196
+ id: agentId,
197
+ type: "agent",
198
+ name: agent.name,
199
+ trustLevel: agent.trustLevel,
200
+ capabilities: ["orchestration"],
201
+ dataAccess: [],
202
+ isEntryPoint: agent.trustLevel === "untrusted",
203
+ accessesSensitiveData: false,
204
+ riskScore: calculateAgentNodeRisk({
205
+ trustLevel: agent.trustLevel,
206
+ isEntryPoint: agent.trustLevel === "untrusted",
207
+ }),
208
+ });
209
+ }
210
+ }
211
+ return { nodes, edges };
212
+ }
213
+ // ============================================================================
214
+ // Attack Path Analysis
215
+ // ============================================================================
216
+ /**
217
+ * Find attack paths from entry points to sensitive data
218
+ */
219
+ export function analyzeAgentChains(graph) {
220
+ const paths = [];
221
+ // Find entry points
222
+ const entryPoints = graph.nodes.filter((n) => n.isEntryPoint);
223
+ // Find sensitive data nodes
224
+ const sensitiveNodes = graph.nodes.filter((n) => n.accessesSensitiveData);
225
+ // Build adjacency list
226
+ const adjacency = new Map();
227
+ for (const edge of graph.edges) {
228
+ if (!adjacency.has(edge.from)) {
229
+ adjacency.set(edge.from, []);
230
+ }
231
+ adjacency.get(edge.from).push({ node: edge.to, edge });
232
+ }
233
+ // BFS from each entry point to each sensitive node
234
+ for (const entry of entryPoints) {
235
+ for (const target of sensitiveNodes) {
236
+ const result = findPathBFS(entry.id, target.id, graph.nodes, adjacency);
237
+ if (result) {
238
+ const trustCrossings = result.edges.filter((e) => e.crossesTrustBoundary).length;
239
+ const severity = calculatePathSeverity(trustCrossings, target.dataAccess);
240
+ paths.push({
241
+ id: `path-${paths.length + 1}`,
242
+ title: `${entry.name} → ${target.name}`,
243
+ steps: result.nodes,
244
+ edgesTraversed: result.edges,
245
+ trustBoundariesCrossed: trustCrossings,
246
+ dataExposed: target.dataAccess,
247
+ severity,
248
+ confidence: Math.max(50, 100 - trustCrossings * 10),
249
+ attackNarrative: generateAttackNarrative(entry, target, result.nodes),
250
+ mitigation: generateMitigations(result.nodes, result.edges),
251
+ });
252
+ }
253
+ }
254
+ }
255
+ return paths;
256
+ }
257
+ /**
258
+ * BFS to find path between nodes
259
+ */
260
+ function findPathBFS(start, end, nodes, adjacency) {
261
+ const nodeMap = new Map(nodes.map((n) => [n.id, n]));
262
+ const visited = new Set();
263
+ const queue = [
264
+ { nodeId: start, path: [start], edges: [] },
265
+ ];
266
+ while (queue.length > 0) {
267
+ const { nodeId, path, edges } = queue.shift();
268
+ if (nodeId === end) {
269
+ return {
270
+ nodes: path.map((id) => nodeMap.get(id)).filter(Boolean),
271
+ edges,
272
+ };
273
+ }
274
+ if (visited.has(nodeId))
275
+ continue;
276
+ visited.add(nodeId);
277
+ const neighbors = adjacency.get(nodeId) || [];
278
+ for (const { node: neighbor, edge } of neighbors) {
279
+ if (!visited.has(neighbor)) {
280
+ queue.push({
281
+ nodeId: neighbor,
282
+ path: [...path, neighbor],
283
+ edges: [...edges, edge],
284
+ });
285
+ }
286
+ }
287
+ }
288
+ return null;
289
+ }
290
+ /**
291
+ * Calculate severity based on trust crossings and data types
292
+ */
293
+ function calculatePathSeverity(trustCrossings, dataTypes) {
294
+ const criticalData = ["credentials", "private-keys", "ssh-keys", "api-keys"];
295
+ const highData = ["tokens", "pii", "pci-data", "phi"];
296
+ const hasCriticalData = dataTypes.some((t) => criticalData.includes(t));
297
+ const hasHighData = dataTypes.some((t) => highData.includes(t));
298
+ if (hasCriticalData && trustCrossings >= 1)
299
+ return "critical";
300
+ if (hasCriticalData || (hasHighData && trustCrossings >= 2))
301
+ return "high";
302
+ if (hasHighData || trustCrossings >= 2)
303
+ return "medium";
304
+ return "low";
305
+ }
306
+ /**
307
+ * Generate attack narrative
308
+ */
309
+ function generateAttackNarrative(entry, target, path) {
310
+ const steps = path.map((n) => n.name).join(" → ");
311
+ return `An attacker could inject malicious input through ${entry.name}, ` +
312
+ `which flows through ${path.length - 2} intermediate step(s) ` +
313
+ `(${steps}) to access ${target.dataAccess.join(", ")} ` +
314
+ `via the ${target.name} tool.`;
315
+ }
316
+ /**
317
+ * Generate mitigations for a path
318
+ */
319
+ function generateMitigations(nodes, edges) {
320
+ const mitigations = new Set();
321
+ // Trust boundary mitigations
322
+ const trustCrossings = edges.filter((e) => e.crossesTrustBoundary);
323
+ if (trustCrossings.length > 0) {
324
+ mitigations.add("Add authentication at trust boundary crossings");
325
+ mitigations.add("Implement input validation at each trust boundary");
326
+ }
327
+ // Sensitive data mitigations
328
+ const sensitiveNodes = nodes.filter((n) => n.accessesSensitiveData);
329
+ for (const node of sensitiveNodes) {
330
+ mitigations.add(`Apply principle of least privilege to ${node.name}`);
331
+ mitigations.add(`Add audit logging for ${node.name} access`);
332
+ }
333
+ // Entry point mitigations
334
+ const entryPoints = nodes.filter((n) => n.isEntryPoint);
335
+ for (const entry of entryPoints) {
336
+ mitigations.add(`Sanitize and validate all input from ${entry.name}`);
337
+ }
338
+ // Code execution mitigations
339
+ const codeExecNodes = nodes.filter((n) => n.capabilities.includes("code_execution"));
340
+ for (const node of codeExecNodes) {
341
+ mitigations.add(`Sandbox code execution in ${node.name}`);
342
+ mitigations.add(`Restrict network access from ${node.name}`);
343
+ }
344
+ // General mitigations
345
+ mitigations.add("Enable comprehensive audit logging across all agents");
346
+ mitigations.add("Implement rate limiting on sensitive operations");
347
+ mitigations.add("Deploy anomaly detection for unusual data access patterns");
348
+ return Array.from(mitigations);
349
+ }
350
+ // ============================================================================
351
+ // Visualization
352
+ // ============================================================================
353
+ /**
354
+ * Generate Mermaid diagram for agent graph
355
+ */
356
+ export function generateAgentChainDiagram(graph, attackPaths) {
357
+ const lines = ["graph TD"];
358
+ // Styling
359
+ lines.push(" classDef entryPoint fill:#ff6b6b,stroke:#333,color:#fff");
360
+ lines.push(" classDef sensitive fill:#ffe66d,stroke:#333,color:#000");
361
+ lines.push(" classDef mcpServer fill:#4ecdc4,stroke:#333,color:#fff");
362
+ lines.push(" classDef tool fill:#95e1d3,stroke:#333");
363
+ lines.push(" classDef agent fill:#a8d8ea,stroke:#333");
364
+ lines.push(" classDef attackPath stroke:#f00,stroke-width:3px");
365
+ // Add nodes
366
+ for (const node of graph.nodes) {
367
+ const sanitized = node.id.replace(/[^a-zA-Z0-9]/g, "_");
368
+ const label = node.name.length > 25 ? node.name.slice(0, 22) + "..." : node.name;
369
+ let className = "tool";
370
+ if (node.isEntryPoint)
371
+ className = "entryPoint";
372
+ else if (node.accessesSensitiveData)
373
+ className = "sensitive";
374
+ else if (node.type === "mcp-server")
375
+ className = "mcpServer";
376
+ else if (node.type === "agent")
377
+ className = "agent";
378
+ lines.push(` ${sanitized}["${label}"]:::${className}`);
379
+ }
380
+ // Add edges
381
+ const attackEdges = new Set();
382
+ for (const path of attackPaths) {
383
+ for (const edge of path.edgesTraversed) {
384
+ attackEdges.add(`${edge.from}-${edge.to}`);
385
+ }
386
+ }
387
+ for (const edge of graph.edges) {
388
+ const from = edge.from.replace(/[^a-zA-Z0-9]/g, "_");
389
+ const to = edge.to.replace(/[^a-zA-Z0-9]/g, "_");
390
+ const edgeKey = `${edge.from}-${edge.to}`;
391
+ const arrow = edge.crossesTrustBoundary ? "==>" : "-->";
392
+ const style = attackEdges.has(edgeKey) ? "|ATTACK|" : "";
393
+ lines.push(` ${from} ${arrow}${style} ${to}`);
394
+ }
395
+ // Legend
396
+ lines.push("");
397
+ lines.push(" subgraph Legend");
398
+ lines.push(" entry_leg[Entry Point]:::entryPoint");
399
+ lines.push(" sensitive_leg[Sensitive Data]:::sensitive");
400
+ lines.push(" mcp_leg[MCP Server]:::mcpServer");
401
+ lines.push(" tool_leg[Tool]:::tool");
402
+ lines.push(" end");
403
+ return lines.join("\n");
404
+ }
405
+ // ============================================================================
406
+ // Main Analysis Function
407
+ // ============================================================================
408
+ /**
409
+ * Run full agent chain analysis
410
+ */
411
+ export function runAgentChainAnalysis(manifests, agentConfigs) {
412
+ // Build the graph
413
+ const graph = buildAgentGraph(manifests, agentConfigs);
414
+ // Find attack paths
415
+ const attackPaths = analyzeAgentChains(graph);
416
+ // Generate diagram
417
+ const mermaidDiagram = generateAgentChainDiagram(graph, attackPaths);
418
+ // Calculate stats
419
+ const criticalPaths = attackPaths.filter((p) => p.severity === "critical").length;
420
+ const highPaths = attackPaths.filter((p) => p.severity === "high").length;
421
+ const trustBoundaries = graph.edges.filter((e) => e.crossesTrustBoundary).length;
422
+ return {
423
+ graph,
424
+ attackPaths,
425
+ stats: {
426
+ totalNodes: graph.nodes.length,
427
+ totalEdges: graph.edges.length,
428
+ entryPoints: graph.nodes.filter((n) => n.isEntryPoint).length,
429
+ sensitiveNodes: graph.nodes.filter((n) => n.accessesSensitiveData).length,
430
+ trustBoundaries,
431
+ attackPaths: attackPaths.length,
432
+ criticalPaths,
433
+ highPaths,
434
+ },
435
+ mermaidDiagram,
436
+ };
437
+ }
438
+ //# sourceMappingURL=agent-chain-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-chain-analysis.js","sourceRoot":"","sources":["../../../src/scanners/agent/agent-chain-analysis.ts"],"names":[],"mappings":"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"}
@@ -15,12 +15,13 @@ export declare const CORPUS_SIZES: {
15
15
  quick: number;
16
16
  standard: number;
17
17
  thorough: number;
18
+ exhaustive: number;
18
19
  };
19
20
  /**
20
21
  * Load all payloads with optional filtering
21
22
  */
22
23
  export declare function loadPayloads(options?: {
23
- corpus?: "quick" | "standard" | "thorough";
24
+ corpus?: "quick" | "standard" | "thorough" | "exhaustive";
24
25
  categories?: PayloadCategory[];
25
26
  customCorpus?: string;
26
27
  minSeverity?: Severity;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/scanners/agent/payloads/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAqBhE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;CAIxB,CAAC;AA8CF;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3C,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAqE9B;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC,CAgCD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAWlF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAOnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/scanners/agent/payloads/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAqBhE;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AA8CF;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,CAAC,EAAE;IAC3C,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IAC1D,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,QAAQ,CAAC;CACxB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA8E9B;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;CACtC,CAAC,CAyCD;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAWlF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAOnF"}