jaku.sh 1.0.0 → 1.0.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 (52) hide show
  1. package/README.md +20 -15
  2. package/action.yml +1 -1
  3. package/package.json +2 -3
  4. package/src/agents/ai-agent.js +5 -37
  5. package/src/agents/findings-ledger.js +239 -225
  6. package/src/agents/logic-agent.js +82 -36
  7. package/src/agents/orchestrator.js +1 -41
  8. package/src/agents/qa-agent.js +5 -38
  9. package/src/agents/security-agent.js +78 -43
  10. package/src/cli.js +49 -53
  11. package/src/core/ai/guardrail-prober.js +0 -92
  12. package/src/core/ai/prompt-injector.js +0 -81
  13. package/src/core/auth-manager.js +572 -53
  14. package/src/core/console-monitor.js +1 -5
  15. package/src/core/crawler.js +244 -227
  16. package/src/core/form-validator.js +2 -7
  17. package/src/core/logic/access-boundary-tester.js +10 -152
  18. package/src/core/logic/account-takeover-tester.js +260 -0
  19. package/src/core/logic/cart-manipulation-tester.js +200 -0
  20. package/src/core/logic/coupon-abuse-tester.js +138 -0
  21. package/src/core/logic/email-enumeration-tester.js +244 -0
  22. package/src/core/logic/feature-flag-bypass-tester.js +186 -0
  23. package/src/core/security/clickjacking-detector.js +164 -0
  24. package/src/core/security/cookie-auditor.js +185 -0
  25. package/src/core/security/csp-validator.js +268 -0
  26. package/src/core/security/csrf-detector.js +117 -0
  27. package/src/core/security/infra-scanner.js +9 -99
  28. package/src/core/security/open-redirect-detector.js +200 -0
  29. package/src/core/security/secret-detector.js +2 -124
  30. package/src/core/security/ssrf-prober.js +207 -0
  31. package/src/core/security/subdomain-scanner.js +314 -0
  32. package/src/core/security/xss-scanner.js +0 -30
  33. package/src/core/test-generator.js +21 -79
  34. package/src/core/test-runner.js +44 -122
  35. package/src/reporting/compliance-reporter.js +317 -0
  36. package/src/reporting/report-generator.js +11 -62
  37. package/src/reporting/sarif-generator.js +2 -2
  38. package/src/utils/config.js +45 -1
  39. package/src/utils/finding.js +6 -1
  40. package/src/utils/owasp-mapper.js +251 -0
  41. package/src/core/accessibility-checker.js +0 -171
  42. package/src/core/ai/model-fingerprinter.js +0 -246
  43. package/src/core/ai/multi-turn-attacker.js +0 -297
  44. package/src/core/browser-manager.js +0 -119
  45. package/src/core/csr-waiter.js +0 -410
  46. package/src/core/logic/graphql-auditor.js +0 -298
  47. package/src/core/logic/parameter-polluter.js +0 -212
  48. package/src/core/performance-checker.js +0 -204
  49. package/src/core/security/cors-prober.js +0 -150
  50. package/src/core/security/csrf-prober.js +0 -217
  51. package/src/core/security/path-traversal.js +0 -112
  52. package/src/core/security/prototype-pollution.js +0 -147
package/README.md CHANGED
@@ -28,27 +28,23 @@ JAKU crawls your entire app, generates test cases, probes for security vulnerabi
28
28
  ## Quick Start
29
29
 
30
30
  ```bash
31
- # Option A: Clone & install (development)
32
- git clone https://github.com/theshantanupandey/jaku.git
33
- cd jaku
34
- npm install
35
- npx playwright install chromium
36
-
37
- # Option B: Install globally via npm
38
- npm install -g @theshantanupandey/jaku
31
+ # Install globally via npm
32
+ npm install -g jaku.sh
39
33
  npx playwright install chromium
40
34
 
41
35
  # Run a full scan (QA + Security + AI + Logic + API)
42
- jaku scan https://your-app.dev --verbose
43
- # or without global install:
44
- node src/cli.js scan https://your-app.dev --verbose
36
+ jaku scan https://your-app.dev --prod-safe
45
37
 
46
- # AI abuse testing only
47
- jaku ai https://your-ai-app.dev --verbose
38
+ # Quick scan (10 pages, fast feedback)
39
+ jaku scan https://your-app.dev --profile quick --prod-safe
48
40
 
41
+ # With OWASP Top 10 compliance report
42
+ jaku scan https://your-app.dev --compliance owasp --prod-safe
43
+
44
+ # AI abuse testing only
45
+ jaku ai https://your-ai-app.dev
49
46
 
50
47
  # Reports are saved to ./jaku-reports/<timestamp>/
51
- # latest-report.json is auto-updated at project root after each scan
52
48
  ```
53
49
 
54
50
  ### First Scan Walkthrough
@@ -414,6 +410,8 @@ Correlations appear in the CLI output and reports with severity escalation.
414
410
  | `-c, --config <path>` | Path to config file | `./jaku.config.json` |
415
411
  | `-o, --output <dir>` | Output directory for reports | `./jaku-reports/<timestamp>` |
416
412
  | `-s, --severity <level>` | Minimum severity threshold (`critical`, `high`, `medium`, `low`) | `low` |
413
+ | `--profile <type>` | Scan profile: `quick`, `deep`, `ci` | — |
414
+ | `--compliance <framework>` | Generate compliance report (`owasp`) | — |
417
415
  | `--max-pages <n>` | Maximum pages to crawl | `50` |
418
416
  | `--max-depth <n>` | Maximum crawl depth | `5` |
419
417
  | `--halt-on-critical` | Abort scan immediately on any critical finding | off |
@@ -434,6 +432,7 @@ Every scan generates 5 report files:
434
432
  | **HTML** | `report.html` | Self-contained browsable report with severity charts |
435
433
  | **SARIF** | `report.sarif` | GitHub/GitLab Security Dashboard integration (SARIF v2.1.0) |
436
434
  | **Diff** | `diff-report.md` | Regression detection vs. previous scan run |
435
+ | **OWASP Compliance** | `compliance-owasp.*` | OWASP Top 10 pass/fail report (JSON + MD + HTML) — requires `--compliance owasp` |
437
436
 
438
437
  ### Examples
439
438
 
@@ -468,7 +467,7 @@ node src/cli.js ai https://myapp.dev/api/chat --max-pages 1 -v
468
467
  ```
469
468
  ╦╔═╗╦╔═╦ ╦
470
469
  ║╠═╣╠╩╗║ ║ 呪 Autonomous Security & Quality Intelligence
471
- ╚╝╩ ╩╩ ╩╚═╝ v1.0.0 · Multi-Agent
470
+ ╚╝╩ ╩╩ ╩╚═╝ v1.0.2 · Multi-Agent
472
471
 
473
472
  Target: https://your-app.dev
474
473
  Modules: QA + SECURITY + AI
@@ -634,3 +633,9 @@ Every JAKU scan generates a self-contained **HTML report** at `jaku-reports/<tim
634
633
  ## License
635
634
 
636
635
  [Jaku Public License v1.0](./LICENSE) — free to use, modify, and distribute with attribution. See [LICENSE](./LICENSE) for full terms.
636
+
637
+ ---
638
+
639
+ **Website:** [jaku.app](https://jaku.app)
640
+ **npm:** [jaku.sh](https://www.npmjs.com/package/jaku.sh)
641
+ **GitHub:** [theshantanupandey/jaku](https://github.com/theshantanupandey/jaku)
package/action.yml CHANGED
@@ -217,7 +217,7 @@ runs:
217
217
  }
218
218
  }
219
219
 
220
- body += '\n---\n*Scanned by [JAKU](https://github.com/jaku-security/jaku) v1.0.0*';
220
+ body += '\n---\n*Scanned by [JAKU](https://github.com/jaku-security/jaku) v1.0.2*';
221
221
  } else {
222
222
  body += '⚠️ Scan completed but no report was generated. Check workflow logs for errors.';
223
223
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jaku.sh",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "JAKU (呪) — Autonomous Security & Quality Intelligence Agent for vibe-coded apps. XSS, SQLi, prompt injection, QA testing, and attack chain correlation in one command.",
5
5
  "type": "module",
6
6
  "main": "src/cli.js",
@@ -42,7 +42,7 @@
42
42
  "url": "https://github.com/theshantanupandey"
43
43
  },
44
44
  "license": "SEE LICENSE IN LICENSE",
45
- "homepage": "https://jakusec.dev",
45
+ "homepage": "https://jaku.app",
46
46
  "repository": {
47
47
  "type": "git",
48
48
  "url": "https://github.com/theshantanupandey/jaku.git"
@@ -55,7 +55,6 @@
55
55
  "commander": "^12.1.0",
56
56
  "nanoid": "^5.0.9",
57
57
  "ora": "^8.1.1",
58
- "p-limit": "^7.3.0",
59
58
  "playwright": "^1.49.1",
60
59
  "winston": "^3.17.0"
61
60
  }
@@ -7,23 +7,19 @@ import { OutputAnalyzer } from '../core/ai/output-analyzer.js';
7
7
  import { GuardrailProber } from '../core/ai/guardrail-prober.js';
8
8
  import { ModelDoSTester } from '../core/ai/model-dos-tester.js';
9
9
  import { IndirectInjector } from '../core/ai/indirect-injector.js';
10
- import { MultiTurnAttacker } from '../core/ai/multi-turn-attacker.js';
11
- import { ModelFingerprinter } from '../core/ai/model-fingerprinter.js';
12
10
 
13
11
  /**
14
12
  * JAKU-AI — Prompt Injection & AI Abuse Detection Agent
15
13
  *
16
14
  * Pipeline:
17
15
  * 1. Detect AI endpoints (auto-discovery from surface inventory)
18
- * 2. Prompt Injection testing (many-shot, encoding, delimiter, context flood, RAG, CoT)
19
- * 3. Jailbreak testing (DAN, AIM, model-specific token attacks, persona anchoring)
16
+ * 2. Prompt Injection testing (24 payloads)
17
+ * 3. Jailbreak testing (16 techniques)
20
18
  * 4. System Prompt Extraction (17 techniques)
21
- * 5. Output Analysis (AI-mediated XSS, markdown rendering attacks)
22
- * 6. Guardrail Probing (PII, agency, tool abuse, SSRF, agentic tool injection)
19
+ * 5. Output Analysis (AI-mediated XSS)
20
+ * 6. Guardrail Probing (PII, agency, tool abuse)
23
21
  * 7. Model DoS Testing (context bombing, token loops)
24
22
  * 8. Indirect Injection Testing (6 embedded payloads)
25
- * 9. Multi-Turn Attack Testing (trust escalation, context drift, memory poisoning)
26
- * 10. Model Fingerprinting + Model-Specific Exploits
27
23
  *
28
24
  * Dependencies: JAKU-CRAWL (runs in Wave 2, parallel with QA + SEC)
29
25
  */
@@ -138,35 +134,7 @@ export class AIAgent extends BaseAgent {
138
134
  } catch (err) {
139
135
  this._log(`Indirect injection testing failed: ${err.message}`, 'error');
140
136
  }
141
- this.progress('indirect', 'Indirect injection testing complete', 95);
142
-
143
- // Phase 9: Multi-Turn Attack Testing
144
- this.progress('multiturn', 'Running multi-turn attack scenarios...', 95);
145
- try {
146
- const injector = new PromptInjector(logger);
147
- const sendMsg = injector._sendMessage.bind(injector);
148
- const multiTurnAttacker = new MultiTurnAttacker(logger);
149
- const multiTurnFindings = await multiTurnAttacker.test(aiSurfaces, sendMsg);
150
- this.addFindings(multiTurnFindings);
151
- this._log(`Multi-turn attacks: ${multiTurnFindings.length} vulnerabilities`);
152
- } catch (err) {
153
- this._log(`Multi-turn testing failed: ${err.message}`, 'error');
154
- }
155
- this.progress('multiturn', 'Multi-turn attack testing complete', 97);
156
-
157
- // Phase 10: Model Fingerprinting + Model-Specific Exploits
158
- this.progress('fingerprint', 'Fingerprinting model and running model-specific attacks...', 97);
159
- try {
160
- const injector2 = new PromptInjector(logger);
161
- const sendMsg2 = injector2._sendMessage.bind(injector2);
162
- const fingerprinter = new ModelFingerprinter(logger);
163
- const fingerprintFindings = await fingerprinter.test(aiSurfaces, sendMsg2);
164
- this.addFindings(fingerprintFindings);
165
- this._log(`Model fingerprinting: ${fingerprintFindings.length} findings`);
166
- } catch (err) {
167
- this._log(`Model fingerprinting failed: ${err.message}`, 'error');
168
- }
169
- this.progress('fingerprint', 'Model fingerprinting complete', 100);
137
+ this.progress('indirect', 'Indirect injection testing complete', 100);
170
138
 
171
139
  this.progress('complete', `AI scan complete — ${this._findings.length} total findings`, 100);
172
140
  }