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.
- package/README.md +20 -15
- package/action.yml +1 -1
- package/package.json +2 -3
- package/src/agents/ai-agent.js +5 -37
- package/src/agents/findings-ledger.js +239 -225
- package/src/agents/logic-agent.js +82 -36
- package/src/agents/orchestrator.js +1 -41
- package/src/agents/qa-agent.js +5 -38
- package/src/agents/security-agent.js +78 -43
- package/src/cli.js +49 -53
- package/src/core/ai/guardrail-prober.js +0 -92
- package/src/core/ai/prompt-injector.js +0 -81
- package/src/core/auth-manager.js +572 -53
- package/src/core/console-monitor.js +1 -5
- package/src/core/crawler.js +244 -227
- package/src/core/form-validator.js +2 -7
- package/src/core/logic/access-boundary-tester.js +10 -152
- package/src/core/logic/account-takeover-tester.js +260 -0
- package/src/core/logic/cart-manipulation-tester.js +200 -0
- package/src/core/logic/coupon-abuse-tester.js +138 -0
- package/src/core/logic/email-enumeration-tester.js +244 -0
- package/src/core/logic/feature-flag-bypass-tester.js +186 -0
- package/src/core/security/clickjacking-detector.js +164 -0
- package/src/core/security/cookie-auditor.js +185 -0
- package/src/core/security/csp-validator.js +268 -0
- package/src/core/security/csrf-detector.js +117 -0
- package/src/core/security/infra-scanner.js +9 -99
- package/src/core/security/open-redirect-detector.js +200 -0
- package/src/core/security/secret-detector.js +2 -124
- package/src/core/security/ssrf-prober.js +207 -0
- package/src/core/security/subdomain-scanner.js +314 -0
- package/src/core/security/xss-scanner.js +0 -30
- package/src/core/test-generator.js +21 -79
- package/src/core/test-runner.js +44 -122
- package/src/reporting/compliance-reporter.js +317 -0
- package/src/reporting/report-generator.js +11 -62
- package/src/reporting/sarif-generator.js +2 -2
- package/src/utils/config.js +45 -1
- package/src/utils/finding.js +6 -1
- package/src/utils/owasp-mapper.js +251 -0
- package/src/core/accessibility-checker.js +0 -171
- package/src/core/ai/model-fingerprinter.js +0 -246
- package/src/core/ai/multi-turn-attacker.js +0 -297
- package/src/core/browser-manager.js +0 -119
- package/src/core/csr-waiter.js +0 -410
- package/src/core/logic/graphql-auditor.js +0 -298
- package/src/core/logic/parameter-polluter.js +0 -212
- package/src/core/performance-checker.js +0 -204
- package/src/core/security/cors-prober.js +0 -150
- package/src/core/security/csrf-prober.js +0 -217
- package/src/core/security/path-traversal.js +0 -112
- 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
|
-
#
|
|
32
|
-
|
|
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 --
|
|
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
|
-
#
|
|
47
|
-
jaku
|
|
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.
|
|
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.
|
|
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.
|
|
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://
|
|
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
|
}
|
package/src/agents/ai-agent.js
CHANGED
|
@@ -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 (
|
|
19
|
-
* 3. Jailbreak testing (
|
|
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
|
|
22
|
-
* 6. Guardrail Probing (PII, agency, tool abuse
|
|
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',
|
|
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
|
}
|