Skip to content

feat(ctem): RFC-012 + de-synthesize BAS (Tier-1 Phase 0 — honesty) - #270

Merged
0xmanhnv merged 1 commit into
developfrom
feat/ctem-tier1-rfc012-honest-bas
Jul 7, 2026
Merged

feat(ctem): RFC-012 + de-synthesize BAS (Tier-1 Phase 0 — honesty)#270
0xmanhnv merged 1 commit into
developfrom
feat/ctem-tier1-rfc012-honest-bas

Conversation

@0xmanhnv

@0xmanhnv 0xmanhnv commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Make Validation honest, and design the real path (Tier-1 Phase 0)

The CTEM maturity assessment scored Validation 2.1/5 — the weakest phase — because BAS is synthetic. executeSimulationTechnique reported a passing security control (detected) whenever an operator merely typed a SIEM/EDR name into a config field. No technique is executed. That's worse than a missing feature: it manufactures false 'your controls caught this attack' assurance.

This PR

RFC-012 (docs/rfcs/RFC-012-real-bas-execution.md) — the design of record for real BAS execution: reuse the shipped RFC-011 validation rails (agent safe-check executor + validate command dispatcher + completion hook) to run real techniques async, and correlate evidence via validation_evidence.simulation_run_id (already plumbed through Ingest, passed nil today). Phased rollout; Phase 1 is api-only.

Phase 0 — honesty (code): the synthetic path now

  • flags every run verified:false, execution_mode:"simulated", with a disclaimer;
  • stops claiming 'Validated against X' / 'detected by security controls' — reworded as simulated expected posture, not live-validated;
  • sets detection_validated:false even when a source is configured (config presence ≠ proof);
  • dry_run no longer returns a fake detected.

No schema or UI-contract change — the misleading claim is removed, not the feature.

Why phased (not the full async dispatch now)

Real execution flips RunSimulation sync→async and touches the shared command-completion path that the live proof-of-fix (#266) depends on. That deserves its own focused PR against the RFC spec, not a rushed change bundled with a docs/honesty fix.

Tests

  • Every simulation type is flagged unverified/simulated with a disclaimer; "Validated against Splunk" is gone.
  • A configured detection source yields detection_validated:false.
  • go vet ./..., lint (new-from develop), compliance suite green.

The attack-simulation engine reported a passing security control ('detected')
whenever an operator merely configured a detection_source string — no technique
was ever executed. That manufactures false security assurance.

Phase 0 (honesty): the synthetic executeSimulationTechnique now flags every run
as an unverified simulation — output carries verified:false,
execution_mode:'simulated', and a disclaimer — and the detection/prevention
text no longer claims 'Validated against X' / 'detected by security controls'.
detection_validated is false even when a source is configured (config presence
is an expectation, not proof). dry_run no longer returns a fake 'detected'.

RFC-012 documents the real path: reuse the shipped RFC-011 validation dispatch
(agent safe-check executor + completion hook) to run real techniques async and
correlate evidence via validation_evidence.simulation_run_id (already plumbed
through Ingest, passed nil today). Phase 1 = real safe-check dispatch, api-only.

No schema/UI-contract change in Phase 0; the misleading claim is removed, not
the feature. Index updated (docs/rfcs/README.md).
@0xmanhnv
0xmanhnv merged commit 8cf27fd into develop Jul 7, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant