23. Changelog#
23.1. 2.0.0 — 2026-06-05#
Resource graph + attack-path engine
Resource graph (
src/core/graph/resourceGraph.js) — typed node view of the account: 14 node types (internet,account,zone,dns_record,origin,worker,tunnel,access_app,r2_bucket,kv_namespace,d1_database,queue,service,finding) and 8 edge types (belongs_to,resolves_to,proxies,exposes,protects,executes,reads,internet_to). The graph is the single source of truth shared by the posture map UI, the SIEM shippers, the MCP server, and the notification dispatcher.Attack-path engine (
src/core/graph/attackPaths.js) — five deterministic, ordered rule-based detectors:exposed-origin,weak-transport,open-access-app,tunnel-without-access,worker-plaintext-secret. Same input → same path IDs, so the UI can deep-link a path.See Resource Graph for the full data model.
Posture map
Dashboard page — Wiz-style entity graph that visualises the account’s Cloudflare entities (Internet → Account → Zones → services) as connected nodes, colours them by finding severity, and highlights attack paths (chains that lead to a high/critical exposure) as animated dashed edges. Pan / zoom / hover / click with full keyboard and trackpad support.
prefers-reduced-motiondisables the dash animation.New endpoint:
GET /api/posture/graph?assessmentId=<id>.Source:
web/public/postureMap.{js,css}.See Posture Map.
SIEM shipping
Elasticsearch shipper (
src/core/integrations/siem/elastic.js) — ECS 8.11.0-aligned documents,POST {esUrl}/_bulk, ApiKey or Basic auth, nestedthreat.enrichmentsmapping.Splunk HEC shipper (
src/core/integrations/siem/splunk.js) — CIM-aligned envelopes,POST {hecUrl}/services/collector/event,Authorization: Splunk <token>, per-event error aggregation.Enrichment (
src/core/integrations/siem/enrichment.js) — joins each finding to its graph node and every attack path it participates in. The only place this join happens; both shippers consume it.File exporters (
src/exporters/ecs.js,src/exporters/splunkHec.js) — write the same NDJSON the live shipper would have posted (pull / air-gapped mode).``flareinspect ship`` CLI with
--target elastic|splunk|all|file,--dry-run, env-var fallbacks.``POST /api/integrations/ship`` web endpoint mirroring the CLI surface.
``GET /api/integrations/template/elastic`` for scripted ES template bootstrap.
Packaged Kibana app —
integrations/elastic/flareinspect-dashboard.ndjson(data view + saved search + 2 visualizations + dashboard) importable via Kibana → Saved Objects → Import.Packaged Splunk TA —
integrations/splunk/TA-flareinspect/with field extractions, transforms, 2 saved searches, and a SimpleXML dashboard.See SIEM, Elasticsearch, Splunk.
MCP server
stdio MCP server (
mcp/server.mjs) exposing the engine as six tools:flareinspect_assess,flareinspect_list_findings,flareinspect_get_attack_paths,flareinspect_plan_remediation,flareinspect_apply_remediation(gated),flareinspect_rollback(gated). Re-uses existing engine seams; no logic duplication.@modelcontextprotocol/sdkis an optional dependency.Edit-scope policy (
src/core/auth/editScope.js) — shared between the MCP gated tools and the web/api/remediate/{apply,rollback}endpoints. Two conditions:FLAREINSPECT_ALLOW_REMEDIATION=trueand a token that satisfiesverifyEditScope(opaque env-bound secret, or a JWT withpermission: 'edit'/audcontainingtag:edit/scopecontainingedit).See MCP Server, Edit-Scope Policy.
Notifications
``flareinspect notify`` CLI with
--target slack|teams|webhook|all.Three channels: Slack (Block Kit), Microsoft Teams (Adaptive Card 1.5), generic webhook (HMAC-SHA256-signed,
X-FlareInspect-Signatureheader). Per-channel URL + secret via flag or env var.``POST /api/notify`` web endpoint mirroring the CLI surface.
Severity threshold (
--threshold critical|high|medium|low) suppresses dispatch when nothing is at or above the threshold — useful in CI to only ping on real findings.See notify Command.
New check categories
The assessable surface grew from 21 to 34 categories. New in v2.0:
credentials— Leaked Credentials Detectionnotifications— 4 security notification types (account-scoped)ddos— L7 DDoS posture (advisory)account-waf— account-level WAF coverage (advisory)workers— Workers inventory + plaintext-secret bindingsstorage— KV / D1 / Queues inventoryzaraz— Zaraz third-party tools + consentposture— device posture rulesaccess— Access application depth (allow-everyone, MFA, session duration)casb— open critical/high CASB findingsemail-security— Cloud Email Security policiesrbi— Browser Isolation policiesmagic— Magic Firewall / Magic Transit rulesetsperformance— Brotli / HTTP/2-3 / Cache Deception Armor / Email Obfuscationrules— rules / rate-limit rulesspectrum— Spectrum (TCP/UDP) configurationturnstile— Turnstile configurationloadbalancing— Load Balancing posture
Plus the leaked-credentials, magic-firewall, device-posture,
browser-isolation, and cloud-email-security aliases.
Test coverage
262 tests pass (was 140 in 1.3.0). New test files:
tests/resourceGraph.test.js,tests/attackPaths.test.js,tests/foundationStability.test.js,tests/siemEnrichment.test.js,tests/elastic.test.js,tests/splunk.test.js,tests/siemExporters.test.js,tests/shipCli.test.js,tests/integrationsShip.test.js,tests/packagedApps.test.js,tests/mcpServer.test.js,tests/editScope.test.js,tests/phase2Remediation.test.js(Phase 2/3/4 advisory coverage).
23.2. 1.3.0 — 2026-04-26#
SDK Migration
Cloudflare SDK v5 — Migrated from
cloudflarev4.5.0 to v5.2.0Updated all zone-scoped resource paths (
client.zones.dnsRecords→client.dns.records, etc.)Updated account-scoped resource paths (
client.accounts.auditLogs→client.auditLogs, etc.)Adapted response unwrapping for v5’s direct-return pattern on
.get()callsAdded
_unwrapList()helper to normalize v5 Page object responsesUpdated error handling to use typed
APIErrorsubclasses (error.status,error.errors)Converted
getZoneAnalytics()andgetSecurityAnalytics()torawRequest()(no v5 SDK equivalent)Fixed
rulesets.get()call signature for v5 positionalrulesetIdargumentRemoved optional chaining guards (
?.) on SDK resources (v5 has stable resource structure)
23.3. 1.2.2 — 2026-04-26#
New checks
CFL-TOK-001 — API token pre-flight (critical). Before the assessment runs, the token is verified against
/user/tokens/verify; emits FAIL if disabled or expiring within 14 days, WARNING if verify itself fails. Token info is persisted onassessment.tokenInfofor the dashboard and report.CFL-R2-001/002/003 — R2 bucket posture. Enumerates R2 buckets per account and emits findings for: public access via custom domain or wildcard CORS (high), missing lifecycle rules (low), missing event notifications (low). Skipped silently when the token lacks R2 read scope.
CFL-WAF-006/007/008 — WAF managed rulesets. Detects whether the Cloudflare Managed Ruleset and OWASP Core Ruleset are deployed at zone scope, and flags any managed ruleset overridden to log-only mode (production drift).
Tests
16 new unit tests covering the new check definitions and assessment methods. Suite size: 124 → 140 tests, all green.
23.4. 1.2.1 — 2026-04-25#
Brand & UI
New brand identity — flare-in-reticle mark with FlareInspect wordmark (Manrope/Fraunces/Geist Mono). Replaces the previous Cloudflare-style shield.
Redesigned web dashboard — V1 “Command” layout with sidebar nav, sticky topbar, score-ring hero, severity strip, compliance rail, findings table, and zone matrix. Dark-only.
Redesigned HTML report — masthead with KPI strip, score hero, summary cards, charts, top risks, per-zone domains table, security insights, severity sections, recommendations, and category posture.
CLI banner — recolored to flare orange with mono-feel rule lines and the new tagline
by ionsec.io · cloudflare posture.
Dependencies & security
Replaced
uuid(vulnerable) with Node’s built-incrypto.randomUUID()— drops one dependency and removes the moderate-severityuuidadvisory.Bumped
jestto ^30 and added overrides fortest-exclude,formdata-node, andglobto clearinflight@1.0.6andglob@7deprecation/security warnings.npm auditnow reports 0 vulnerabilities.
Tests
All 62 existing tests still pass against the updated template and dependencies.
23.5. 1.2.0 — 2026-04-13#
Cloud Deployment
1-Click Deployment — Deploy to Render, Heroku, Railway, or Fly.io with single-click buttons
Heroku Button — Added
app.jsonfor one-click Heroku deployment with pre-configured environment variablesRender Configuration — Enhanced
render.yamlwith 1 GB persistent storage for assessment historyRailway Template — Added
railway.jsonfor Railway deployment with auto-restart policiesFly.io Configuration — Added
fly.tomlfor edge deployment with health checks and auto-scalingDeployment Guide — New
DEPLOYMENT.mdwith step-by-step instructions for all platforms
Documentation
Updated README with version badge, deployment buttons, and cloud hosting options
Added deployment overview page and dedicated guides for Heroku, Railway, and Fly.io
Updated index page to include deployment feature row and quick-deploy buttons
Refreshed
render.mdto reflect 1 GB persistent storage
23.6. 1.1.0 — 2026-04-12#
Added
diffcommand for baseline drift detectionAdded compliance mapping for
cis,soc2,pci, andnistAdded contextual scoring and CI/CD gating options for
assessAdded exporters for
sarif,markdown,csv, andasffAdded config file loading via
.flareinspect.yml,.flareinspect.yaml, andflareinspect.config.jsonExpanded web API with assessment history, compliance, drift comparison, API key auth, and extra download endpoints
Added plugin loader scaffolding and automated tests for new modules
Updated Docker, Render, linting, and repository metadata for a coherent 1.1.0 release