hackmyagent-core 0.2.3 → 0.3.1

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 (59) hide show
  1. package/README.md +116 -0
  2. package/dist/attack/attack.test.d.ts +5 -0
  3. package/dist/attack/attack.test.d.ts.map +1 -0
  4. package/dist/attack/attack.test.js +292 -0
  5. package/dist/attack/attack.test.js.map +1 -0
  6. package/dist/attack/index.d.ts +8 -0
  7. package/dist/attack/index.d.ts.map +1 -0
  8. package/dist/attack/index.js +24 -0
  9. package/dist/attack/index.js.map +1 -0
  10. package/dist/attack/payloads/capability-abuse.d.ts +8 -0
  11. package/dist/attack/payloads/capability-abuse.d.ts.map +1 -0
  12. package/dist/attack/payloads/capability-abuse.js +199 -0
  13. package/dist/attack/payloads/capability-abuse.js.map +1 -0
  14. package/dist/attack/payloads/context-manipulation.d.ts +8 -0
  15. package/dist/attack/payloads/context-manipulation.d.ts.map +1 -0
  16. package/dist/attack/payloads/context-manipulation.js +194 -0
  17. package/dist/attack/payloads/context-manipulation.js.map +1 -0
  18. package/dist/attack/payloads/data-exfiltration.d.ts +8 -0
  19. package/dist/attack/payloads/data-exfiltration.d.ts.map +1 -0
  20. package/dist/attack/payloads/data-exfiltration.js +222 -0
  21. package/dist/attack/payloads/data-exfiltration.js.map +1 -0
  22. package/dist/attack/payloads/index.d.ts +27 -0
  23. package/dist/attack/payloads/index.d.ts.map +1 -0
  24. package/dist/attack/payloads/index.js +68 -0
  25. package/dist/attack/payloads/index.js.map +1 -0
  26. package/dist/attack/payloads/jailbreak.d.ts +8 -0
  27. package/dist/attack/payloads/jailbreak.d.ts.map +1 -0
  28. package/dist/attack/payloads/jailbreak.js +236 -0
  29. package/dist/attack/payloads/jailbreak.js.map +1 -0
  30. package/dist/attack/payloads/prompt-injection.d.ts +8 -0
  31. package/dist/attack/payloads/prompt-injection.d.ts.map +1 -0
  32. package/dist/attack/payloads/prompt-injection.js +235 -0
  33. package/dist/attack/payloads/prompt-injection.js.map +1 -0
  34. package/dist/attack/scanner.d.ts +59 -0
  35. package/dist/attack/scanner.d.ts.map +1 -0
  36. package/dist/attack/scanner.js +312 -0
  37. package/dist/attack/scanner.js.map +1 -0
  38. package/dist/attack/types.d.ts +128 -0
  39. package/dist/attack/types.d.ts.map +1 -0
  40. package/dist/attack/types.js +36 -0
  41. package/dist/attack/types.js.map +1 -0
  42. package/dist/benchmarks/index.d.ts +16 -0
  43. package/dist/benchmarks/index.d.ts.map +1 -0
  44. package/dist/benchmarks/index.js +27 -0
  45. package/dist/benchmarks/index.js.map +1 -0
  46. package/dist/benchmarks/oasb-1.d.ts +95 -0
  47. package/dist/benchmarks/oasb-1.d.ts.map +1 -0
  48. package/dist/benchmarks/oasb-1.js +623 -0
  49. package/dist/benchmarks/oasb-1.js.map +1 -0
  50. package/dist/hardening/scanner.d.ts.map +1 -1
  51. package/dist/hardening/scanner.js +1 -0
  52. package/dist/hardening/scanner.js.map +1 -1
  53. package/dist/hardening/security-check.d.ts +3 -0
  54. package/dist/hardening/security-check.d.ts.map +1 -1
  55. package/dist/index.d.ts +6 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +24 -2
  58. package/dist/index.js.map +1 -1
  59. package/package.json +1 -1
package/README.md CHANGED
@@ -16,6 +16,8 @@ npx hackmyagent check @publisher/skill # verify a skill before installing
16
16
  npx hackmyagent secure # harden your agent setup (100 checks)
17
17
  npx hackmyagent secure --fix # auto-fix security issues
18
18
  npx hackmyagent scan example.com # scan for exposed infrastructure
19
+ npx hackmyagent attack --local # red team with 55 attack payloads
20
+ npx hackmyagent benchmark --benchmark oasb-1 # run OASB-1 security benchmark
19
21
  ```
20
22
 
21
23
  ## Two Ways to Scan
@@ -135,6 +137,88 @@ hackmyagent scan example.com --json
135
137
 
136
138
  **Scoring:** A (90-100), B (80-89), C (70-79), D (60-69), F (<60)
137
139
 
140
+ ### `hackmyagent attack`
141
+
142
+ Red team your AI agent with adversarial security testing. 55 attack payloads across 5 categories.
143
+
144
+ ```bash
145
+ # Local simulation (no API calls - test payloads locally)
146
+ hackmyagent attack --local
147
+ hackmyagent attack --local --system-prompt "You are a helpful assistant"
148
+
149
+ # Test an API endpoint
150
+ hackmyagent attack https://api.example.com/v1/chat
151
+ hackmyagent attack https://api.example.com --api-format anthropic
152
+
153
+ # Filter by category or intensity
154
+ hackmyagent attack --local --category prompt-injection
155
+ hackmyagent attack --local --intensity aggressive
156
+
157
+ # Output formats
158
+ hackmyagent attack --local -f json
159
+ hackmyagent attack --local -f sarif -o results.sarif
160
+
161
+ # Verbose mode (show each payload result)
162
+ hackmyagent attack --local --verbose
163
+ ```
164
+
165
+ **Attack Categories:**
166
+
167
+ | Category | Payloads | Description |
168
+ |----------|----------|-------------|
169
+ | `prompt-injection` | 12 | Manipulate agent behavior via malicious input |
170
+ | `jailbreak` | 12 | Bypass safety guardrails and restrictions |
171
+ | `data-exfiltration` | 11 | Extract sensitive information from the agent |
172
+ | `capability-abuse` | 10 | Misuse agent tools and capabilities |
173
+ | `context-manipulation` | 10 | Poison agent context or memory |
174
+
175
+ **Intensity Levels:**
176
+
177
+ | Level | Description |
178
+ |-------|-------------|
179
+ | `passive` | Observation only, minimal risk |
180
+ | `active` | Standard attack payloads (default) |
181
+ | `aggressive` | Creative/risky payloads, full suite |
182
+
183
+ **Output Formats:**
184
+ - `text` - Human-readable report (default)
185
+ - `json` - Machine-readable JSON
186
+ - `sarif` - SARIF 2.1.0 for GitHub Security tab integration
187
+
188
+ **Risk Scoring:**
189
+ - 0-24: LOW - Minor issues, agent is reasonably secure
190
+ - 25-49: MEDIUM - Some vulnerabilities, review recommended
191
+ - 50-69: HIGH - Significant vulnerabilities, action required
192
+ - 70-100: CRITICAL - Severe vulnerabilities, immediate action needed
193
+
194
+ ### `hackmyagent benchmark`
195
+
196
+ Run the OASB-1 (OpenA2A Security Benchmark) against your agent configuration.
197
+
198
+ ```bash
199
+ # Run benchmark
200
+ hackmyagent benchmark --benchmark oasb-1
201
+
202
+ # Target specific directory
203
+ hackmyagent benchmark --benchmark oasb-1 ./my-project
204
+
205
+ # Output formats
206
+ hackmyagent benchmark --benchmark oasb-1 -f json
207
+ hackmyagent benchmark --benchmark oasb-1 -f sarif -o results.sarif
208
+ hackmyagent benchmark --benchmark oasb-1 -f html -o report.html
209
+ hackmyagent benchmark --benchmark oasb-1 -f asp -o profile.asp.json
210
+
211
+ # CI/CD with fail threshold
212
+ hackmyagent benchmark --benchmark oasb-1 --fail-below 70
213
+ ```
214
+
215
+ **Output Formats:**
216
+ - `text` - Human-readable report (default)
217
+ - `json` - Machine-readable JSON
218
+ - `sarif` - SARIF 2.1.0 for GitHub/IDE integration
219
+ - `html` - Standalone HTML report
220
+ - `asp` - Agent Security Profile (HackMyAgent format)
221
+
138
222
  ### `hackmyagent secure-openclaw`
139
223
 
140
224
  Scan OpenClaw/Moltbot installations with 34 specialized security checks and auto-remediation.
@@ -209,6 +293,38 @@ jobs:
209
293
  path: security-report.json
210
294
  ```
211
295
 
296
+ ### GitHub Actions with Attack Mode (SARIF)
297
+
298
+ ```yaml
299
+ name: AI Agent Security
300
+ on: [push, pull_request]
301
+
302
+ jobs:
303
+ attack-scan:
304
+ runs-on: ubuntu-latest
305
+ steps:
306
+ - uses: actions/checkout@v4
307
+ - uses: actions/setup-node@v4
308
+ with:
309
+ node-version: '20'
310
+ - name: Run attack simulation
311
+ run: npx hackmyagent attack --local -f sarif -o attack-results.sarif
312
+ - name: Upload SARIF to GitHub Security
313
+ uses: github/codeql-action/upload-sarif@v3
314
+ with:
315
+ sarif_file: attack-results.sarif
316
+
317
+ benchmark:
318
+ runs-on: ubuntu-latest
319
+ steps:
320
+ - uses: actions/checkout@v4
321
+ - uses: actions/setup-node@v4
322
+ with:
323
+ node-version: '20'
324
+ - name: Run OASB-1 benchmark
325
+ run: npx hackmyagent benchmark --benchmark oasb-1 --fail-below 70
326
+ ```
327
+
212
328
  ### Pre-commit Hook
213
329
 
214
330
  ```bash
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Attack Module Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=attack.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attack.test.d.ts","sourceRoot":"","sources":["../../src/attack/attack.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ /**
3
+ * Attack Module Tests
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const vitest_1 = require("vitest");
7
+ const scanner_1 = require("./scanner");
8
+ const payloads_1 = require("./payloads");
9
+ const types_1 = require("./types");
10
+ (0, vitest_1.describe)('Attack Payloads', () => {
11
+ (0, vitest_1.describe)('payload structure', () => {
12
+ (0, vitest_1.it)('all payloads have required fields', () => {
13
+ for (const payload of payloads_1.ALL_PAYLOADS) {
14
+ (0, vitest_1.expect)(payload.id).toBeTruthy();
15
+ (0, vitest_1.expect)(payload.category).toBeTruthy();
16
+ (0, vitest_1.expect)(payload.name).toBeTruthy();
17
+ (0, vitest_1.expect)(payload.description).toBeTruthy();
18
+ (0, vitest_1.expect)(payload.intensity).toBeTruthy();
19
+ (0, vitest_1.expect)(payload.payload).toBeTruthy();
20
+ (0, vitest_1.expect)(payload.severity).toBeTruthy();
21
+ (0, vitest_1.expect)(payload.remediation).toBeTruthy();
22
+ (0, vitest_1.expect)(Array.isArray(payload.successIndicators)).toBe(true);
23
+ (0, vitest_1.expect)(Array.isArray(payload.blockedIndicators)).toBe(true);
24
+ }
25
+ });
26
+ (0, vitest_1.it)('all payloads have unique IDs', () => {
27
+ const ids = payloads_1.ALL_PAYLOADS.map(p => p.id);
28
+ const uniqueIds = new Set(ids);
29
+ (0, vitest_1.expect)(ids.length).toBe(uniqueIds.size);
30
+ });
31
+ (0, vitest_1.it)('payload IDs follow naming convention', () => {
32
+ const prefixes = {
33
+ 'prompt-injection': 'PI',
34
+ 'jailbreak': 'JB',
35
+ 'data-exfiltration': 'DE',
36
+ 'capability-abuse': 'CA',
37
+ 'context-manipulation': 'CM',
38
+ };
39
+ for (const payload of payloads_1.ALL_PAYLOADS) {
40
+ const expectedPrefix = prefixes[payload.category];
41
+ (0, vitest_1.expect)(payload.id.startsWith(expectedPrefix)).toBe(true);
42
+ (0, vitest_1.expect)(payload.id).toMatch(/^[A-Z]{2}-\d{3}$/);
43
+ }
44
+ });
45
+ (0, vitest_1.it)('all indicators are valid RegExp', () => {
46
+ for (const payload of payloads_1.ALL_PAYLOADS) {
47
+ for (const indicator of payload.successIndicators) {
48
+ (0, vitest_1.expect)(indicator).toBeInstanceOf(RegExp);
49
+ }
50
+ for (const indicator of payload.blockedIndicators) {
51
+ (0, vitest_1.expect)(indicator).toBeInstanceOf(RegExp);
52
+ }
53
+ }
54
+ });
55
+ });
56
+ (0, vitest_1.describe)('PAYLOAD_STATS', () => {
57
+ (0, vitest_1.it)('reports correct total count', () => {
58
+ (0, vitest_1.expect)(payloads_1.PAYLOAD_STATS.total).toBe(payloads_1.ALL_PAYLOADS.length);
59
+ });
60
+ (0, vitest_1.it)('reports correct category counts', () => {
61
+ (0, vitest_1.expect)(payloads_1.PAYLOAD_STATS.byCategory['prompt-injection']).toBe(payloads_1.PROMPT_INJECTION_PAYLOADS.length);
62
+ (0, vitest_1.expect)(payloads_1.PAYLOAD_STATS.byCategory['jailbreak']).toBe(payloads_1.JAILBREAK_PAYLOADS.length);
63
+ (0, vitest_1.expect)(payloads_1.PAYLOAD_STATS.byCategory['data-exfiltration']).toBe(payloads_1.DATA_EXFILTRATION_PAYLOADS.length);
64
+ (0, vitest_1.expect)(payloads_1.PAYLOAD_STATS.byCategory['capability-abuse']).toBe(payloads_1.CAPABILITY_ABUSE_PAYLOADS.length);
65
+ (0, vitest_1.expect)(payloads_1.PAYLOAD_STATS.byCategory['context-manipulation']).toBe(payloads_1.CONTEXT_MANIPULATION_PAYLOADS.length);
66
+ });
67
+ (0, vitest_1.it)('category counts sum to total', () => {
68
+ const sum = Object.values(payloads_1.PAYLOAD_STATS.byCategory).reduce((a, b) => a + b, 0);
69
+ (0, vitest_1.expect)(sum).toBe(payloads_1.PAYLOAD_STATS.total);
70
+ });
71
+ (0, vitest_1.it)('intensity counts sum to total', () => {
72
+ const sum = Object.values(payloads_1.PAYLOAD_STATS.byIntensity).reduce((a, b) => a + b, 0);
73
+ (0, vitest_1.expect)(sum).toBe(payloads_1.PAYLOAD_STATS.total);
74
+ });
75
+ });
76
+ (0, vitest_1.describe)('getPayloadsByCategory', () => {
77
+ (0, vitest_1.it)('returns only payloads of specified category', () => {
78
+ const categories = [
79
+ 'prompt-injection',
80
+ 'jailbreak',
81
+ 'data-exfiltration',
82
+ 'capability-abuse',
83
+ 'context-manipulation',
84
+ ];
85
+ for (const category of categories) {
86
+ const payloads = (0, payloads_1.getPayloadsByCategory)(category);
87
+ (0, vitest_1.expect)(payloads.length).toBeGreaterThan(0);
88
+ for (const payload of payloads) {
89
+ (0, vitest_1.expect)(payload.category).toBe(category);
90
+ }
91
+ }
92
+ });
93
+ });
94
+ (0, vitest_1.describe)('getPayloadsByIntensity', () => {
95
+ (0, vitest_1.it)('passive returns only passive payloads', () => {
96
+ const payloads = (0, payloads_1.getPayloadsByIntensity)('passive');
97
+ for (const payload of payloads) {
98
+ (0, vitest_1.expect)(payload.intensity).toBe('passive');
99
+ }
100
+ });
101
+ (0, vitest_1.it)('active returns passive and active payloads', () => {
102
+ const payloads = (0, payloads_1.getPayloadsByIntensity)('active');
103
+ const intensities = new Set(payloads.map(p => p.intensity));
104
+ (0, vitest_1.expect)(intensities.has('aggressive')).toBe(false);
105
+ });
106
+ (0, vitest_1.it)('aggressive returns all payloads', () => {
107
+ const payloads = (0, payloads_1.getPayloadsByIntensity)('aggressive');
108
+ (0, vitest_1.expect)(payloads.length).toBe(payloads_1.ALL_PAYLOADS.length);
109
+ });
110
+ });
111
+ (0, vitest_1.describe)('getPayloads', () => {
112
+ (0, vitest_1.it)('returns all payloads when no filters', () => {
113
+ const payloads = (0, payloads_1.getPayloads)(undefined, 'aggressive');
114
+ (0, vitest_1.expect)(payloads.length).toBe(payloads_1.ALL_PAYLOADS.length);
115
+ });
116
+ (0, vitest_1.it)('filters by category', () => {
117
+ const payloads = (0, payloads_1.getPayloads)(['prompt-injection'], 'aggressive');
118
+ for (const payload of payloads) {
119
+ (0, vitest_1.expect)(payload.category).toBe('prompt-injection');
120
+ }
121
+ });
122
+ (0, vitest_1.it)('filters by multiple categories', () => {
123
+ const payloads = (0, payloads_1.getPayloads)(['prompt-injection', 'jailbreak'], 'aggressive');
124
+ for (const payload of payloads) {
125
+ (0, vitest_1.expect)(['prompt-injection', 'jailbreak']).toContain(payload.category);
126
+ }
127
+ });
128
+ (0, vitest_1.it)('combines category and intensity filters', () => {
129
+ const payloads = (0, payloads_1.getPayloads)(['prompt-injection'], 'passive');
130
+ for (const payload of payloads) {
131
+ (0, vitest_1.expect)(payload.category).toBe('prompt-injection');
132
+ (0, vitest_1.expect)(payload.intensity).toBe('passive');
133
+ }
134
+ });
135
+ });
136
+ (0, vitest_1.describe)('getPayloadById', () => {
137
+ (0, vitest_1.it)('returns payload for valid ID', () => {
138
+ const payload = (0, payloads_1.getPayloadById)('PI-001');
139
+ (0, vitest_1.expect)(payload).toBeDefined();
140
+ (0, vitest_1.expect)(payload?.id).toBe('PI-001');
141
+ });
142
+ (0, vitest_1.it)('returns undefined for invalid ID', () => {
143
+ const payload = (0, payloads_1.getPayloadById)('INVALID-999');
144
+ (0, vitest_1.expect)(payload).toBeUndefined();
145
+ });
146
+ });
147
+ });
148
+ (0, vitest_1.describe)('ATTACK_CATEGORIES', () => {
149
+ (0, vitest_1.it)('has all categories defined', () => {
150
+ const categories = [
151
+ 'prompt-injection',
152
+ 'jailbreak',
153
+ 'data-exfiltration',
154
+ 'capability-abuse',
155
+ 'context-manipulation',
156
+ ];
157
+ for (const category of categories) {
158
+ (0, vitest_1.expect)(types_1.ATTACK_CATEGORIES[category]).toBeDefined();
159
+ (0, vitest_1.expect)(types_1.ATTACK_CATEGORIES[category].name).toBeTruthy();
160
+ (0, vitest_1.expect)(types_1.ATTACK_CATEGORIES[category].description).toBeTruthy();
161
+ (0, vitest_1.expect)(Array.isArray(types_1.ATTACK_CATEGORIES[category].oasbControls)).toBe(true);
162
+ }
163
+ });
164
+ });
165
+ (0, vitest_1.describe)('AttackScanner', () => {
166
+ (0, vitest_1.describe)('constructor', () => {
167
+ (0, vitest_1.it)('creates scanner with default options', () => {
168
+ const scanner = new scanner_1.AttackScanner();
169
+ (0, vitest_1.expect)(scanner).toBeInstanceOf(scanner_1.AttackScanner);
170
+ });
171
+ (0, vitest_1.it)('creates scanner with custom options', () => {
172
+ const scanner = new scanner_1.AttackScanner({
173
+ intensity: 'aggressive',
174
+ timeout: 60000,
175
+ delay: 500,
176
+ });
177
+ (0, vitest_1.expect)(scanner).toBeInstanceOf(scanner_1.AttackScanner);
178
+ });
179
+ });
180
+ (0, vitest_1.describe)('scan (local mode)', () => {
181
+ (0, vitest_1.it)('runs scan in local simulation mode', async () => {
182
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
183
+ const report = await scanner.scan({ url: '', type: 'local' }, { categories: ['prompt-injection'], intensity: 'passive', delay: 0 });
184
+ (0, vitest_1.expect)(report.target).toBe('local');
185
+ (0, vitest_1.expect)(report.targetType).toBe('local');
186
+ (0, vitest_1.expect)(report.intensity).toBe('passive');
187
+ (0, vitest_1.expect)(report.categories).toContain('prompt-injection');
188
+ (0, vitest_1.expect)(report.summary.total).toBeGreaterThan(0);
189
+ (0, vitest_1.expect)(report.results.length).toBe(report.summary.total);
190
+ (0, vitest_1.expect)(report.riskScore).toBeGreaterThanOrEqual(0);
191
+ (0, vitest_1.expect)(report.riskScore).toBeLessThanOrEqual(100);
192
+ });
193
+ (0, vitest_1.it)('respects stopOnSuccess option', async () => {
194
+ // Create a scanner that will stop on first success
195
+ // In local mode, most will be inconclusive, but we test the flow
196
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
197
+ const report = await scanner.scan({ url: '', type: 'local' }, { intensity: 'passive', stopOnSuccess: true, delay: 0 });
198
+ // Should have at least one result
199
+ (0, vitest_1.expect)(report.results.length).toBeGreaterThanOrEqual(1);
200
+ });
201
+ (0, vitest_1.it)('returns correct summary structure', async () => {
202
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
203
+ const report = await scanner.scan({ url: '', type: 'local' }, { categories: ['jailbreak'], intensity: 'passive', delay: 0 });
204
+ (0, vitest_1.expect)(report.summary).toHaveProperty('total');
205
+ (0, vitest_1.expect)(report.summary).toHaveProperty('successful');
206
+ (0, vitest_1.expect)(report.summary).toHaveProperty('blocked');
207
+ (0, vitest_1.expect)(report.summary).toHaveProperty('inconclusive');
208
+ (0, vitest_1.expect)(report.summary).toHaveProperty('bySeverity');
209
+ (0, vitest_1.expect)(report.summary).toHaveProperty('byCategory');
210
+ // Check bySeverity structure
211
+ (0, vitest_1.expect)(report.summary.bySeverity).toHaveProperty('critical');
212
+ (0, vitest_1.expect)(report.summary.bySeverity).toHaveProperty('high');
213
+ (0, vitest_1.expect)(report.summary.bySeverity).toHaveProperty('medium');
214
+ (0, vitest_1.expect)(report.summary.bySeverity).toHaveProperty('low');
215
+ (0, vitest_1.expect)(report.summary.bySeverity).toHaveProperty('info');
216
+ // Check byCategory structure
217
+ (0, vitest_1.expect)(report.summary.byCategory).toHaveProperty('jailbreak');
218
+ (0, vitest_1.expect)(report.summary.byCategory['jailbreak']).toHaveProperty('total');
219
+ (0, vitest_1.expect)(report.summary.byCategory['jailbreak']).toHaveProperty('successful');
220
+ });
221
+ (0, vitest_1.it)('calculates risk rating correctly', async () => {
222
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
223
+ const report = await scanner.scan({ url: '', type: 'local' }, { categories: ['prompt-injection'], intensity: 'passive', delay: 0 });
224
+ // Risk rating should be one of the valid values
225
+ (0, vitest_1.expect)(['critical', 'high', 'medium', 'low', 'secure']).toContain(report.riskRating);
226
+ // Score and rating should be consistent
227
+ if (report.riskScore >= 70) {
228
+ (0, vitest_1.expect)(report.riskRating).toBe('critical');
229
+ }
230
+ else if (report.riskScore >= 50) {
231
+ (0, vitest_1.expect)(report.riskRating).toBe('high');
232
+ }
233
+ else if (report.riskScore >= 25) {
234
+ (0, vitest_1.expect)(report.riskRating).toBe('medium');
235
+ }
236
+ else if (report.riskScore > 0) {
237
+ (0, vitest_1.expect)(report.riskRating).toBe('low');
238
+ }
239
+ else {
240
+ (0, vitest_1.expect)(report.riskRating).toBe('secure');
241
+ }
242
+ });
243
+ (0, vitest_1.it)('includes duration in report', async () => {
244
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
245
+ const report = await scanner.scan({ url: '', type: 'local' }, { categories: ['prompt-injection'], intensity: 'passive', delay: 0 });
246
+ (0, vitest_1.expect)(report.duration).toBeGreaterThanOrEqual(0);
247
+ (0, vitest_1.expect)(report.startTime).toBeInstanceOf(Date);
248
+ (0, vitest_1.expect)(report.endTime).toBeInstanceOf(Date);
249
+ });
250
+ (0, vitest_1.it)('runs specific payloads by ID', async () => {
251
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
252
+ const report = await scanner.scan({ url: '', type: 'local' }, { payloadIds: ['PI-001', 'JB-001'], delay: 0 });
253
+ (0, vitest_1.expect)(report.results.length).toBe(2);
254
+ const ids = report.results.map(r => r.payload.id);
255
+ (0, vitest_1.expect)(ids).toContain('PI-001');
256
+ (0, vitest_1.expect)(ids).toContain('JB-001');
257
+ });
258
+ });
259
+ (0, vitest_1.describe)('response analysis', () => {
260
+ (0, vitest_1.it)('detects blocked responses', async () => {
261
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
262
+ // The local simulation doesn't trigger blocked patterns,
263
+ // but we verify the structure is in place
264
+ const report = await scanner.scan({ url: '', type: 'local' }, { categories: ['prompt-injection'], intensity: 'passive', delay: 0 });
265
+ // Each result should have the blocked field
266
+ for (const result of report.results) {
267
+ (0, vitest_1.expect)(typeof result.blocked).toBe('boolean');
268
+ (0, vitest_1.expect)(typeof result.success).toBe('boolean');
269
+ (0, vitest_1.expect)(typeof result.confidence).toBe('number');
270
+ (0, vitest_1.expect)(result.confidence).toBeGreaterThanOrEqual(0);
271
+ (0, vitest_1.expect)(result.confidence).toBeLessThanOrEqual(1);
272
+ }
273
+ });
274
+ });
275
+ });
276
+ (0, vitest_1.describe)('Attack Result Structure', () => {
277
+ (0, vitest_1.it)('results have all required fields', async () => {
278
+ const scanner = new scanner_1.AttackScanner({ delay: 0 });
279
+ const report = await scanner.scan({ url: '', type: 'local' }, { categories: ['prompt-injection'], intensity: 'passive', delay: 0 });
280
+ for (const result of report.results) {
281
+ (0, vitest_1.expect)(result.payload).toBeDefined();
282
+ (0, vitest_1.expect)(result.target).toBeDefined();
283
+ (0, vitest_1.expect)(typeof result.success).toBe('boolean');
284
+ (0, vitest_1.expect)(typeof result.blocked).toBe('boolean');
285
+ (0, vitest_1.expect)(typeof result.confidence).toBe('number');
286
+ (0, vitest_1.expect)(result.evidence).toBeDefined();
287
+ (0, vitest_1.expect)(typeof result.duration).toBe('number');
288
+ (0, vitest_1.expect)(result.timestamp).toBeInstanceOf(Date);
289
+ }
290
+ });
291
+ });
292
+ //# sourceMappingURL=attack.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attack.test.js","sourceRoot":"","sources":["../../src/attack/attack.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Attack Module
3
+ * Adversarial security testing for AI agents
4
+ */
5
+ export { AttackScanner } from './scanner';
6
+ export { AttackCategory, AttackIntensity, AttackSeverity, AttackPayload, AttackResult, AttackReport, AttackTarget, AttackOptions, ATTACK_CATEGORIES, } from './types';
7
+ export { ALL_PAYLOADS, PAYLOAD_STATS, getPayloads, getPayloadById, getPayloadsByCategory, getPayloadsByIntensity, PROMPT_INJECTION_PAYLOADS, JAILBREAK_PAYLOADS, DATA_EXFILTRATION_PAYLOADS, CAPABILITY_ABUSE_PAYLOADS, CONTEXT_MANIPULATION_PAYLOADS, } from './payloads';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/attack/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,OAAO,EACL,cAAc,EACd,eAAe,EACf,cAAc,EACd,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,EAC1B,yBAAyB,EACzB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ /**
3
+ * Attack Module
4
+ * Adversarial security testing for AI agents
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.CONTEXT_MANIPULATION_PAYLOADS = exports.CAPABILITY_ABUSE_PAYLOADS = exports.DATA_EXFILTRATION_PAYLOADS = exports.JAILBREAK_PAYLOADS = exports.PROMPT_INJECTION_PAYLOADS = exports.getPayloadsByIntensity = exports.getPayloadsByCategory = exports.getPayloadById = exports.getPayloads = exports.PAYLOAD_STATS = exports.ALL_PAYLOADS = exports.ATTACK_CATEGORIES = exports.AttackScanner = void 0;
8
+ var scanner_1 = require("./scanner");
9
+ Object.defineProperty(exports, "AttackScanner", { enumerable: true, get: function () { return scanner_1.AttackScanner; } });
10
+ var types_1 = require("./types");
11
+ Object.defineProperty(exports, "ATTACK_CATEGORIES", { enumerable: true, get: function () { return types_1.ATTACK_CATEGORIES; } });
12
+ var payloads_1 = require("./payloads");
13
+ Object.defineProperty(exports, "ALL_PAYLOADS", { enumerable: true, get: function () { return payloads_1.ALL_PAYLOADS; } });
14
+ Object.defineProperty(exports, "PAYLOAD_STATS", { enumerable: true, get: function () { return payloads_1.PAYLOAD_STATS; } });
15
+ Object.defineProperty(exports, "getPayloads", { enumerable: true, get: function () { return payloads_1.getPayloads; } });
16
+ Object.defineProperty(exports, "getPayloadById", { enumerable: true, get: function () { return payloads_1.getPayloadById; } });
17
+ Object.defineProperty(exports, "getPayloadsByCategory", { enumerable: true, get: function () { return payloads_1.getPayloadsByCategory; } });
18
+ Object.defineProperty(exports, "getPayloadsByIntensity", { enumerable: true, get: function () { return payloads_1.getPayloadsByIntensity; } });
19
+ Object.defineProperty(exports, "PROMPT_INJECTION_PAYLOADS", { enumerable: true, get: function () { return payloads_1.PROMPT_INJECTION_PAYLOADS; } });
20
+ Object.defineProperty(exports, "JAILBREAK_PAYLOADS", { enumerable: true, get: function () { return payloads_1.JAILBREAK_PAYLOADS; } });
21
+ Object.defineProperty(exports, "DATA_EXFILTRATION_PAYLOADS", { enumerable: true, get: function () { return payloads_1.DATA_EXFILTRATION_PAYLOADS; } });
22
+ Object.defineProperty(exports, "CAPABILITY_ABUSE_PAYLOADS", { enumerable: true, get: function () { return payloads_1.CAPABILITY_ABUSE_PAYLOADS; } });
23
+ Object.defineProperty(exports, "CONTEXT_MANIPULATION_PAYLOADS", { enumerable: true, get: function () { return payloads_1.CONTEXT_MANIPULATION_PAYLOADS; } });
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/attack/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,qCAA0C;AAAjC,wGAAA,aAAa,OAAA;AAEtB,iCAUiB;AADf,0GAAA,iBAAiB,OAAA;AAGnB,uCAYoB;AAXlB,wGAAA,YAAY,OAAA;AACZ,yGAAA,aAAa,OAAA;AACb,uGAAA,WAAW,OAAA;AACX,0GAAA,cAAc,OAAA;AACd,iHAAA,qBAAqB,OAAA;AACrB,kHAAA,sBAAsB,OAAA;AACtB,qHAAA,yBAAyB,OAAA;AACzB,8GAAA,kBAAkB,OAAA;AAClB,sHAAA,0BAA0B,OAAA;AAC1B,qHAAA,yBAAyB,OAAA;AACzB,yHAAA,6BAA6B,OAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Capability Abuse Attack Payloads
3
+ * Tests for OASB-1 controls: 2.2, 2.3, 4.2
4
+ */
5
+ import { AttackPayload } from '../types';
6
+ export declare const CAPABILITY_ABUSE_PAYLOADS: AttackPayload[];
7
+ export default CAPABILITY_ABUSE_PAYLOADS;
8
+ //# sourceMappingURL=capability-abuse.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-abuse.d.ts","sourceRoot":"","sources":["../../../src/attack/payloads/capability-abuse.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,eAAO,MAAM,yBAAyB,EAAE,aAAa,EA+LpD,CAAC;AAEF,eAAe,yBAAyB,CAAC"}