blitzstrike 1.0.81 → 1.0.84
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 +49 -0
- package/README.md +24 -24
- package/THIRD-PARTY-NOTICES.md +1 -1
- package/dist/index.js +67 -5
- package/docs/AUTONOMY.md +48 -136
- package/docs/usage.md +1 -1
- package/intelligence/attack_vectors.json +830 -796
- package/intelligence/chain_links.json +23 -0
- package/intelligence/retry_guidance.json +67 -0
- package/package.json +1 -1
- package/intelligence/ab_signals.json +0 -722
- package/intelligence/attack_chains.json +0 -666
- package/intelligence/awaiting_input_markers.json +0 -37
- package/intelligence/endpoint_patterns.json +0 -541
- package/intelligence/escalation_patterns.json +0 -224
- package/intelligence/file_extensions.json +0 -6
- package/intelligence/patterns.json +0 -437
- package/intelligence/refusal_markers.json +0 -35
- package/intelligence/scan_profiles.json +0 -40
- package/intelligence/skills.json +0 -1185
- package/intelligence/tools.json +0 -1292
- package/intelligence/tools_meta.json +0 -1247
- package/intelligence/unified_patterns.json +0 -2329
- package/intelligence/verification_patterns.json +0 -52
- package/intelligence/vuln_ontology.json +0 -189
- package/intelligence/waff_bypass.json +0 -677
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Chain-to-chain composition: which escalation chains naturally follow another. A complex bug chains several of these. Each link: from -> to (via the pivot primitive).",
|
|
3
|
+
"links": [
|
|
4
|
+
{"from": "ssrf_cloud_metadata", "to": ["default_creds_to_internal_pivot", "docker_container_breakout"], "via": "stolen IAM/cloud credentials"},
|
|
5
|
+
{"from": "xxe_to_ssrf_and_file_read", "to": ["ssrf_cloud_metadata", "ssrf_to_redis_rce"], "via": "SSRF primitive gained from XXE"},
|
|
6
|
+
{"from": "ssrf_to_redis_rce", "to": ["default_creds_to_internal_pivot"], "via": "OS shell on internal service"},
|
|
7
|
+
{"from": "sqli_to_rce", "to": ["sqli_to_hash_dump_and_crack", "path_traversal_to_credential_theft"], "via": "OS shell / DB access"},
|
|
8
|
+
{"from": "file_upload_to_rce", "to": ["path_traversal_to_credential_theft", "default_creds_to_internal_pivot"], "via": "web shell on host"},
|
|
9
|
+
{"from": "lfi_to_rce_via_log_poisoning", "to": ["path_traversal_to_credential_theft"], "via": "code execution on host"},
|
|
10
|
+
{"from": "ssti_to_full_rce", "to": ["path_traversal_to_credential_theft"], "via": "code execution on host"},
|
|
11
|
+
{"from": "deserialization_to_rce", "to": ["path_traversal_to_credential_theft", "docker_container_breakout"], "via": "code execution on host"},
|
|
12
|
+
{"from": "xss_to_account_takeover", "to": ["idor_to_admin_takeover", "api_key_leak_to_account_takeover"], "via": "session/account control"},
|
|
13
|
+
{"from": "idor_to_admin_takeover", "to": ["api_key_leak_to_account_takeover"], "via": "admin access"},
|
|
14
|
+
{"from": "api_key_leak_to_account_takeover", "to": ["idor_to_admin_takeover"], "via": "account takeover"},
|
|
15
|
+
{"from": "default_creds_to_internal_pivot", "to": ["docker_container_breakout", "kubernetes_pod_escape"], "via": "internal foothold"},
|
|
16
|
+
{"from": "docker_container_breakout", "to": ["kubernetes_pod_escape"], "via": "host access"},
|
|
17
|
+
{"from": "open_redirect_to_oauth_theft", "to": ["xss_to_account_takeover"], "via": "stolen OAuth token"},
|
|
18
|
+
{"from": "subdomain_takeover_to_cookie_theft", "to": ["xss_to_account_takeover"], "via": "cookie scope control"},
|
|
19
|
+
{"from": "cache_poison_to_stored_xss", "to": ["xss_to_account_takeover"], "via": "persistent XSS"},
|
|
20
|
+
{"from": "graphql_idor_to_data_theft", "to": ["idor_to_admin_takeover"], "via": "admin identifier leaked"},
|
|
21
|
+
{"from": "path_traversal_to_credential_theft", "to": ["default_creds_to_internal_pivot", "docker_container_breakout"], "via": "credentials/hashes recovered"}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "Structured failure recovery. When a step fails, returns empty, or is blocked, look up the failure mode and apply the concrete actions instead of giving up. Mirrors a delegate/retry-guidance pattern, adapted to Blitz Strike's deterministic tools.",
|
|
3
|
+
"modes": [
|
|
4
|
+
{
|
|
5
|
+
"id": "empty_output",
|
|
6
|
+
"signal": "a detector returns empty for a file/target that clearly contains a sink or entry point",
|
|
7
|
+
"actions": [
|
|
8
|
+
"reload the MCP server (/reload-mcp) — a stale server after an upgrade is a silent false negative, not a clean result",
|
|
9
|
+
"re-run the same detector once",
|
|
10
|
+
"escalate to a deeper detector: blitz_scan -> eagle_eye2 -> route_scan / complex_scan",
|
|
11
|
+
"check the argument name — source-analysis tools take `path`, not `target`"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "blocked",
|
|
16
|
+
"signal": "a live probe is blocked by a WAF, filter, or sanitizer",
|
|
17
|
+
"actions": [
|
|
18
|
+
"bypass_lookup(defense) for concrete techniques (encoding, case, comment insertion, chunked, null byte, double-encoding)",
|
|
19
|
+
"apply one technique at a time and re-probe",
|
|
20
|
+
"if still blocked, move the injection to another context (header, body, path, cookie)"
|
|
21
|
+
]
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "sanitized",
|
|
25
|
+
"signal": "a sink appears neutralized by a sanitizer",
|
|
26
|
+
"actions": [
|
|
27
|
+
"challenge the sanitizer: loose == vs ===, missing EXTR_SKIP, int cast truncation, weak regex",
|
|
28
|
+
"test an evasion: double-encoding, unicode normalization, case mixing"
|
|
29
|
+
]
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
"id": "subagent_failed",
|
|
33
|
+
"signal": "a delegated sub-agent returns empty, errors, or prose without evidence",
|
|
34
|
+
"actions": [
|
|
35
|
+
"re-delegate with a more specific goal + exact tool names + exact argument names (path vs target)",
|
|
36
|
+
"require deterministic output (file:line, sink, chain) — never prose",
|
|
37
|
+
"fall back to calling the tool yourself if the sub-agent cannot reach the MCP tools"
|
|
38
|
+
]
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
"id": "model_failed",
|
|
42
|
+
"signal": "a sub-agent/model returns a rate-limit, quota, context-length, or model-unavailable error",
|
|
43
|
+
"actions": [
|
|
44
|
+
"fall back to a different model",
|
|
45
|
+
"shrink the sub-agent's scope (one file, one sink class)",
|
|
46
|
+
"run the step yourself with granular tools"
|
|
47
|
+
]
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"id": "unconfirmed",
|
|
51
|
+
"signal": "a hypothesis is not confirmed live",
|
|
52
|
+
"actions": [
|
|
53
|
+
"keep it as a hypothesis — do not drop it",
|
|
54
|
+
"try an alternate verification path",
|
|
55
|
+
"let adversarial review decide confirmed vs false_positive vs needs_more_evidence"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"id": "low_severity",
|
|
60
|
+
"signal": "only a low-severity finding is found",
|
|
61
|
+
"actions": [
|
|
62
|
+
"list_chains + chain_links to see how it escalates",
|
|
63
|
+
"trace the full chain, not just the first sink"
|
|
64
|
+
]
|
|
65
|
+
}
|
|
66
|
+
]
|
|
67
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.84",
|
|
4
4
|
"description": "Blitz Strike — a universal MCP security-audit toolbelt. BLITZ sweeps the attack surface, EAGLE-EYE traces source-to-sink, STRIKE verifies live. 57 attack chains, 130-tool catalog, intelligence data layer. One server, every agent.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|