blitzstrike 2.4.66 → 2.4.67

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 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.67] — 2026-09-14
9
+
10
+ ### Fixed — Whole-code interconnection audit (2 bugs)
11
+
12
+ - `submission_gate` is now FAIL-CLOSED: a question passes only when EXPLICITLY
13
+ asserted true (`=== true`, not `!== false`), so an empty/unset finding fails the
14
+ gate instead of passing 7/7 by default. One false = kill, and a missing field is
15
+ a false.
16
+ - Redaction now covers detection end-to-end: 6 secret formats the detector found
17
+ but the redactor did not strip (Slack webhook URL, Firebase URL, basic-auth URL,
18
+ Sentry DSN, ngrok auth token, Discord bot token) now redact — the invariant
19
+ "every secret the detector finds is stripped from reports/logs" is restored.
20
+ - Added a whole-code interconnection audit (detectors ↔ CWE ↔ patterns ↔ chains ↔
21
+ variants ↔ synonyms ↔ severity ↔ secrets + edge cases) + regression tests for
22
+ both fixes.
23
+
8
24
  ## [2.4.66] — 2026-09-14
9
25
 
10
26
  ### Added — Per-engagement pattern recall (intelligence ledger)
package/dist/index.js CHANGED
@@ -7495,6 +7495,12 @@ var init_secrets = __esm(() => {
7495
7495
  [/\blin_api_[A-Za-z0-9]{40}\b/g, "[REDACTED]"],
7496
7496
  [/\b(?:NRAA|NRAK|NRBR)-[A-F0-9]{27}\b/g, "[REDACTED]"],
7497
7497
  [/\b\d{8,10}:[A-Za-z0-9_-]{35}\b/g, "[REDACTED]"],
7498
+ [/\b[12][A-Za-z0-9]{26}_[A-Za-z0-9]{32,}\b/g, "[REDACTED]"],
7499
+ [/\b[MN][A-Za-z\d]{23}\.[\w-]{6}\.[\w-]{27}\b/g, "[REDACTED]"],
7500
+ [/https:\/\/hooks\.slack\.com\/services\/[A-Za-z0-9\/]+/g, "[REDACTED]"],
7501
+ [/\bhttps?:\/\/[a-z0-9-]+\.firebaseio\.com\b/g, "[REDACTED]"],
7502
+ [/https:\/\/[a-f0-9]+@o[0-9]+\.ingest\.sentry\.io\/[0-9]+/g, "[REDACTED]"],
7503
+ [/https?:\/\/[^/\s:@]+:[^/\s:@]+@[^/\s]+/g, "[REDACTED]"],
7498
7504
  [/\beyJ[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{8,}\.[A-Za-z0-9_-]{4,}/g, "[REDACTED]"],
7499
7505
  [/-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, "[REDACTED]"]
7500
7506
  ];
@@ -57818,37 +57824,37 @@ function submissionGate(input) {
57818
57824
  const questions = [
57819
57825
  {
57820
57826
  q: "Reproducible — a copy-paste-ready request or step list triggers it?",
57821
- pass: input.reproducible !== false,
57827
+ pass: input.reproducible === true,
57822
57828
  reason: "Without an exact reproduction the finding is a hypothesis, not a result."
57823
57829
  },
57824
57830
  {
57825
57831
  q: "In scope — the vulnerable asset is in the engagement scope?",
57826
- pass: input.in_scope !== false,
57832
+ pass: input.in_scope === true,
57827
57833
  reason: "Out-of-scope assets must not be submitted."
57828
57834
  },
57829
57835
  {
57830
57836
  q: "Real impact — maps to an accepted-impact class, not informational?",
57831
- pass: input.real_impact !== false,
57837
+ pass: input.real_impact === true,
57832
57838
  reason: "Informational-only findings dilute the validity ratio."
57833
57839
  },
57834
57840
  {
57835
57841
  q: "No privileged assumption — works without unrealistic attacker prerequisites?",
57836
- pass: input.no_privileged_assumption !== false,
57842
+ pass: input.no_privileged_assumption === true,
57837
57843
  reason: "'Admin can do X' is a centralization risk, not a vulnerability."
57838
57844
  },
57839
57845
  {
57840
57846
  q: "Verified live — confirmed with a marker + negative control, not just a static hint?",
57841
- pass: input.verified_live !== false,
57847
+ pass: input.verified_live === true,
57842
57848
  reason: "A static hit is a hypothesis until verified live (strike_verify / browser_validate)."
57843
57849
  },
57844
57850
  {
57845
57851
  q: "Evidence attached AND redacted — secrets/PII stripped, integrity-tagged?",
57846
- pass: input.evidence_redacted !== false,
57852
+ pass: input.evidence_redacted === true,
57847
57853
  reason: "Evidence must carry SHA-256-tagged, redacted records — no leaked secrets or victim PII."
57848
57854
  },
57849
57855
  {
57850
57856
  q: "Severity derived — CVSS/confidence computed, not guessed?",
57851
- pass: input.severity_derived !== false,
57857
+ pass: input.severity_derived === true,
57852
57858
  reason: "Severity is not confidence; derive it, don't assert it."
57853
57859
  }
57854
57860
  ];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "blitzstrike",
3
- "version": "2.4.66",
3
+ "version": "2.4.67",
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": {