blitzstrike 2.4.63 → 2.4.64
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 +16 -0
- package/dist/index.js +73 -21
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,22 @@ All notable changes to Blitz Strike are documented here.
|
|
|
5
5
|
The format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/).
|
|
7
7
|
|
|
8
|
+
## [2.4.64] — 2026-09-14
|
|
9
|
+
|
|
10
|
+
### Added — 47-pattern secret format taxonomy (severity + category)
|
|
11
|
+
|
|
12
|
+
- Expanded `SECRET_FORMATS` from ~12 to 47 known secret formats, each now carrying
|
|
13
|
+
a severity (critical/high/medium/low) + category (aws, gcp, github, stripe, slack,
|
|
14
|
+
email_svc, twilio, paas, firebase, jwt, bearer, basic_auth, private_key, generic,
|
|
15
|
+
ai_api, infra_api, package_registry, saas_api, observability, tunneling, bot_token).
|
|
16
|
+
- New formats: AWS session tokens, GCP service accounts, GitHub OAuth/server-to-server,
|
|
17
|
+
Stripe live/test/publishable, Slack webhooks, Heroku, Firebase, bearer/basic-auth,
|
|
18
|
+
RSA/EC/OpenSSH private keys, Anthropic/OpenAI/HuggingFace, Cloudflare/DigitalOcean,
|
|
19
|
+
npm/PyPI/Docker, Atlassian/Linear, NewRelic/Datadog/Sentry, ngrok, Discord/Telegram.
|
|
20
|
+
- `detectHardcodedSecret` Tier 2 now reports the format's own severity + category,
|
|
21
|
+
so a hardcoded secret hit is classified (e.g. Stripe live = critical, Stripe test
|
|
22
|
+
= low) instead of uniformly "high". Redaction patterns expanded to match.
|
|
23
|
+
|
|
8
24
|
## [2.4.63] — 2026-09-14
|
|
9
25
|
|
|
10
26
|
### Added — Variant corpus + detector coverage sweep (data-driven scaling)
|
package/dist/index.js
CHANGED
|
@@ -7409,18 +7409,53 @@ function redactSecrets(text) {
|
|
|
7409
7409
|
var SECRET_FIELDS = "api[_-]?key|apikey|api[_-]?secret|access[_-]?key|access[_-]?token|secret[_-]?key|secret[_-]?access[_-]?key|auth[_-]?token|client[_-]?secret|consumer[_-]?secret|consumer[_-]?key|private[_-]?key|db[_-]?password|database[_-]?password|db[_-]?pass|passwd|password|jwt[_-]?secret|encryption[_-]?key|encryption[_-]?password|github[_-]?token|gitlab[_-]?token|stripe[_-]?key|sendgrid[_-]?api[_-]?key|datadog[_-]?api[_-]?key|cloudflare[_-]?api[_-]?key|slack[_-]?token|aws[_-]?access[_-]?key[_-]?id|aws[_-]?secret[_-]?access[_-]?key|aws[_-]?session[_-]?token|bot[_-]?token", SECRET_FORMATS, REDACTION_PATTERNS;
|
|
7410
7410
|
var init_secrets = __esm(() => {
|
|
7411
7411
|
SECRET_FORMATS = [
|
|
7412
|
-
{ name: "
|
|
7413
|
-
{ name: "AWS
|
|
7414
|
-
{ name: "
|
|
7415
|
-
{ name: "
|
|
7416
|
-
{ name: "
|
|
7417
|
-
{ name: "
|
|
7418
|
-
{ name: "
|
|
7419
|
-
{ name: "
|
|
7420
|
-
{ name: "
|
|
7421
|
-
{ name: "
|
|
7422
|
-
{ name: "
|
|
7423
|
-
{ name: "
|
|
7412
|
+
{ name: "AWS access key ID", re: /\bAKIA[0-9A-Z]{16}\b/g, severity: "critical", category: "aws" },
|
|
7413
|
+
{ name: "AWS session token (temporary)", re: /\bASIA[0-9A-Z]{16}\b/g, severity: "critical", category: "aws" },
|
|
7414
|
+
{ name: "AWS secret access key", re: /aws[_-]?secret[_-]?access[_-]?key['"\s:=]+([A-Za-z0-9/+=]{40})/gi, severity: "critical", category: "aws" },
|
|
7415
|
+
{ name: "GCP service account key", re: /"type"\s*:\s*"service_account"/g, severity: "critical", category: "gcp" },
|
|
7416
|
+
{ name: "Google API key", re: /\bAIza[0-9A-Za-z_-]{35}\b/g, severity: "high", category: "gcp" },
|
|
7417
|
+
{ name: "GitHub PAT (classic)", re: /\bghp_[A-Za-z0-9]{20,}\b/g, severity: "critical", category: "github" },
|
|
7418
|
+
{ name: "GitHub PAT (fine-grained)", re: /\bgithub_pat_[A-Za-z0-9_]{20,}\b/g, severity: "critical", category: "github" },
|
|
7419
|
+
{ name: "GitHub OAuth token", re: /\bgho_[A-Za-z0-9]{20,}\b/g, severity: "high", category: "github" },
|
|
7420
|
+
{ name: "GitHub server-to-server token", re: /\bgh[usr]_[A-Za-z0-9]{20,}\b/g, severity: "high", category: "github" },
|
|
7421
|
+
{ name: "Stripe live key", re: /\bsk_live_[0-9A-Za-z]{16,}\b/g, severity: "critical", category: "stripe" },
|
|
7422
|
+
{ name: "Stripe test key", re: /\bsk_test_[0-9A-Za-z]{16,}\b/g, severity: "low", category: "stripe" },
|
|
7423
|
+
{ name: "Stripe publishable key", re: /\bpk_(?:live|test)_[0-9A-Za-z]{16,}\b/g, severity: "low", category: "stripe" },
|
|
7424
|
+
{ name: "Slack token", re: /\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g, severity: "high", category: "slack" },
|
|
7425
|
+
{ name: "Slack webhook URL", re: /https:\/\/hooks\.slack\.com\/services\/T[A-Z0-9]+\/B[A-Z0-9]+\/[A-Za-z0-9]+/g, severity: "medium", category: "slack" },
|
|
7426
|
+
{ name: "SendGrid API key", re: /\bSG\.[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}\b/g, severity: "high", category: "email_svc" },
|
|
7427
|
+
{ name: "Mailgun API key", re: /\bkey-[0-9a-zA-Z]{32}\b/g, severity: "high", category: "email_svc" },
|
|
7428
|
+
{ name: "Twilio API key", re: /\bSK[0-9a-fA-F]{32}\b/g, severity: "high", category: "twilio" },
|
|
7429
|
+
{ name: "Twilio account SID", re: /\bAC[0-9a-f]{32}\b/g, severity: "medium", category: "twilio" },
|
|
7430
|
+
{ name: "Twilio auth token", re: /twilio(.{0,20})?(auth|token)['"=: ]+([a-f0-9]{32})/gi, severity: "high", category: "twilio" },
|
|
7431
|
+
{ name: "Heroku API key", re: /heroku(.{0,20})?api['"=: ]+([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})/gi, severity: "medium", category: "paas" },
|
|
7432
|
+
{ name: "Firebase URL", re: /\bhttps?:\/\/[a-z0-9-]+\.firebaseio\.com\b/g, severity: "low", category: "firebase" },
|
|
7433
|
+
{ name: "JWT", re: /\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{4,}/g, severity: "medium", category: "jwt" },
|
|
7434
|
+
{ name: "Bearer token", re: /authorization['"=: ]+bearer\s+[A-Za-z0-9._-]{20,}/gi, severity: "medium", category: "bearer" },
|
|
7435
|
+
{ name: "Basic auth URL", re: /https?:\/\/[^/\s:@]+:[^/\s:@]+@[^/\s]+/g, severity: "medium", category: "basic_auth" },
|
|
7436
|
+
{ name: "RSA private key", re: /-----BEGIN RSA PRIVATE KEY-----/g, severity: "critical", category: "private_key" },
|
|
7437
|
+
{ name: "EC private key", re: /-----BEGIN EC PRIVATE KEY-----/g, severity: "critical", category: "private_key" },
|
|
7438
|
+
{ name: "OpenSSH private key", re: /-----BEGIN OPENSSH PRIVATE KEY-----/g, severity: "critical", category: "private_key" },
|
|
7439
|
+
{ name: "Generic private key", re: /-----BEGIN (DSA |PGP |)PRIVATE KEY-----/g, severity: "critical", category: "private_key" },
|
|
7440
|
+
{ name: "Generic API key / token", re: /(?:api[_-]?key|apikey|api_secret|access_token|secret[_-]?token)['"\s:=]+["']([A-Za-z0-9+/=_-]{24,})["']/gi, severity: "medium", category: "generic" },
|
|
7441
|
+
{ name: "Anthropic API key", re: /\bsk-ant-(?:api03|admin01)-[A-Za-z0-9_-]{20,}\b/g, severity: "critical", category: "ai_api" },
|
|
7442
|
+
{ name: "OpenAI API key (legacy)", re: /\bsk-[A-Za-z0-9]{20}T3BlbkFJ[A-Za-z0-9]{20}\b/g, severity: "critical", category: "ai_api" },
|
|
7443
|
+
{ name: "OpenAI project key", re: /\bsk-proj-[A-Za-z0-9_-]{20,}T3BlbkFJ[A-Za-z0-9_-]{20,}\b/g, severity: "critical", category: "ai_api" },
|
|
7444
|
+
{ name: "OpenAI session token", re: /\bsess-[A-Za-z0-9]{40}\b/g, severity: "high", category: "ai_api" },
|
|
7445
|
+
{ name: "Hugging Face token", re: /\bhf_[A-Za-z0-9]{30,}\b/g, severity: "high", category: "ai_api" },
|
|
7446
|
+
{ name: "Cloudflare API key", re: /cf[_-]?api[_-]?key['"\s:=]+([a-f0-9]{37})/gi, severity: "critical", category: "infra_api" },
|
|
7447
|
+
{ name: "DigitalOcean token", re: /\bdop_v1_[a-f0-9]{64}\b/g, severity: "high", category: "infra_api" },
|
|
7448
|
+
{ name: "npm token", re: /\bnpm_[A-Za-z0-9]{36}\b/g, severity: "high", category: "package_registry" },
|
|
7449
|
+
{ name: "PyPI token", re: /\bpypi-AgENdGV[A-Za-z0-9_-]+\b/g, severity: "high", category: "package_registry" },
|
|
7450
|
+
{ name: "Docker Hub PAT", re: /\bdckr_pat_[A-Za-z0-9_-]{27,}\b/g, severity: "high", category: "package_registry" },
|
|
7451
|
+
{ name: "Atlassian API token", re: /\bATATT3xFfGF0[A-Za-z0-9_-]{20,}\b/g, severity: "high", category: "saas_api" },
|
|
7452
|
+
{ name: "Linear API key", re: /\blin_api_[A-Za-z0-9]{40}\b/g, severity: "medium", category: "saas_api" },
|
|
7453
|
+
{ name: "New Relic license key", re: /\b(?:NRAA|NRAK|NRBR)-[A-F0-9]{27}\b/g, severity: "medium", category: "observability" },
|
|
7454
|
+
{ name: "Datadog API key", re: /dd[_-]?api[_-]?key['"\s:=]+([a-f0-9]{32})/gi, severity: "high", category: "observability" },
|
|
7455
|
+
{ name: "Sentry DSN", re: /https:\/\/[a-f0-9]+@o[0-9]+\.ingest\.sentry\.io\/[0-9]+/g, severity: "low", category: "observability" },
|
|
7456
|
+
{ name: "ngrok auth token", re: /\b[12][A-Za-z0-9]{26}_[A-Za-z0-9]{32,}\b/g, severity: "medium", category: "tunneling" },
|
|
7457
|
+
{ name: "Discord bot token", re: /\b[MN][A-Za-z\d]{23}\.[\w-]{6}\.[\w-]{27}\b/g, severity: "high", category: "bot_token" },
|
|
7458
|
+
{ name: "Telegram bot token", re: /\b\d{8,10}:[A-Za-z0-9_-]{35}\b/g, severity: "high", category: "bot_token" }
|
|
7424
7459
|
];
|
|
7425
7460
|
REDACTION_PATTERNS = [
|
|
7426
7461
|
[/(authorization\s*[:=]\s*)(bearer\s+)?[A-Za-z0-9._~+/=-]{8,}/gi, "$1$2[REDACTED]"],
|
|
@@ -7433,17 +7468,34 @@ var init_secrets = __esm(() => {
|
|
|
7433
7468
|
[/(session\s*[:=]\s*)["']?[A-Za-z0-9._-]{12,}["']?/gi, "$1[REDACTED]"],
|
|
7434
7469
|
[/(cookie\s*[:=]\s*)["']?[A-Za-z0-9._-]{12,}["']?/gi, "$1[REDACTED]"],
|
|
7435
7470
|
[/(set-cookie\s*:\s*)[^\r\n]+/gi, "$1[REDACTED]"],
|
|
7436
|
-
[/\
|
|
7437
|
-
[
|
|
7438
|
-
[
|
|
7439
|
-
[
|
|
7440
|
-
[
|
|
7441
|
-
[/\
|
|
7471
|
+
[/\bAKIA[0-9A-Z]{16}\b/g, "[REDACTED]"],
|
|
7472
|
+
[/\bASIA[0-9A-Z]{16}\b/g, "[REDACTED]"],
|
|
7473
|
+
[/\bghp_[A-Za-z0-9]{20,}\b/g, "[REDACTED]"],
|
|
7474
|
+
[/\bgithub_pat_[A-Za-z0-9_]{20,}\b/g, "[REDACTED]"],
|
|
7475
|
+
[/\bgho_[A-Za-z0-9]{20,}\b/g, "[REDACTED]"],
|
|
7476
|
+
[/\bgh[usr]_[A-Za-z0-9]{20,}\b/g, "[REDACTED]"],
|
|
7477
|
+
[/\bsk_live_[0-9A-Za-z]{16,}\b/g, "[REDACTED]"],
|
|
7478
|
+
[/\bsk_test_[0-9A-Za-z]{16,}\b/g, "[REDACTED]"],
|
|
7479
|
+
[/\bpk_(?:live|test)_[0-9A-Za-z]{16,}\b/g, "[REDACTED]"],
|
|
7442
7480
|
[/\bxox[baprs]-[A-Za-z0-9-]{10,}\b/g, "[REDACTED]"],
|
|
7443
7481
|
[/\bAIza[0-9A-Za-z_-]{35}\b/g, "[REDACTED]"],
|
|
7444
7482
|
[/\bAC[0-9a-f]{32}\b/g, "[REDACTED]"],
|
|
7483
|
+
[/\bSK[0-9a-fA-F]{32}\b/g, "[REDACTED]"],
|
|
7445
7484
|
[/\bSG\.[A-Za-z0-9_-]{16,}\.[A-Za-z0-9_-]{16,}\b/g, "[REDACTED]"],
|
|
7446
7485
|
[/\bkey-[0-9a-zA-Z]{32}\b/g, "[REDACTED]"],
|
|
7486
|
+
[/\bsk-ant-(?:api03|admin01)-[A-Za-z0-9_-]{20,}\b/g, "[REDACTED]"],
|
|
7487
|
+
[/\bsk-proj-[A-Za-z0-9_-]{20,}T3BlbkFJ[A-Za-z0-9_-]{20,}\b/g, "[REDACTED]"],
|
|
7488
|
+
[/\bsess-[A-Za-z0-9]{40}\b/g, "[REDACTED]"],
|
|
7489
|
+
[/\bhf_[A-Za-z0-9]{30,}\b/g, "[REDACTED]"],
|
|
7490
|
+
[/\bdop_v1_[a-f0-9]{64}\b/g, "[REDACTED]"],
|
|
7491
|
+
[/\bnpm_[A-Za-z0-9]{36}\b/g, "[REDACTED]"],
|
|
7492
|
+
[/\bpypi-AgENdGV[A-Za-z0-9_-]+\b/g, "[REDACTED]"],
|
|
7493
|
+
[/\bdckr_pat_[A-Za-z0-9_-]{27,}\b/g, "[REDACTED]"],
|
|
7494
|
+
[/\bATATT3xFfGF0[A-Za-z0-9_-]{20,}\b/g, "[REDACTED]"],
|
|
7495
|
+
[/\blin_api_[A-Za-z0-9]{40}\b/g, "[REDACTED]"],
|
|
7496
|
+
[/\b(?:NRAA|NRAK|NRBR)-[A-F0-9]{27}\b/g, "[REDACTED]"],
|
|
7497
|
+
[/\b\d{8,10}:[A-Za-z0-9_-]{35}\b/g, "[REDACTED]"],
|
|
7498
|
+
[/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{4,}/g, "[REDACTED]"],
|
|
7447
7499
|
[/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, "[REDACTED]"]
|
|
7448
7500
|
];
|
|
7449
7501
|
});
|
|
@@ -16487,10 +16539,10 @@ function detectHardcodedSecret(code, file, out) {
|
|
|
16487
16539
|
file,
|
|
16488
16540
|
line: ln,
|
|
16489
16541
|
type: "hardcoded_secret",
|
|
16490
|
-
category:
|
|
16491
|
-
severity:
|
|
16542
|
+
category: `Hardcoded secret (${fmt.category}: ${fmt.name})`,
|
|
16543
|
+
severity: fmt.severity,
|
|
16492
16544
|
evidence: (ls[ln - 1] ?? "").trim(),
|
|
16493
|
-
detail:
|
|
16545
|
+
detail: `${fmt.name} was found hardcoded in source — the credential is exposed to anyone with code access (CWE-798, severity ${fmt.severity}). Rotate it and load from the environment instead.`
|
|
16494
16546
|
});
|
|
16495
16547
|
}
|
|
16496
16548
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blitzstrike",
|
|
3
|
-
"version": "2.4.
|
|
3
|
+
"version": "2.4.64",
|
|
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": {
|