Raven — 0-Day Investigator
This skill is Raven's depth-of-evidence layer in the MDASH (Multi-Model Agentic Security Harness) pipeline. Detection skills emit alerts; this skill turns one alert into a defensible incident record: timeline, root cause, blast radius, attribution-grade evidence, and recommended D3FEND next steps with ATT&CK threat context.
This skill is built for production DevSecOps at enterprise scale:
- Every finding has an owner, a triage process, and a Patch Tuesday deadline
- All reasoning occurs on private codebases (Windows, Hyper-V, Azure, drivers) that are not in any LLM training corpus
- The pipeline is the result of collaboration between ACS (Autonomous Code Security), MORSE (Offensive Research & Security Engineering), and WARP (Windows Attack Research and Protection)
It does NOT scan broadly (use raven-zero-day-hunter), does NOT enact defense (use raven-zero-day-defend), and does NOT patch (use raven-zero-day-fixing).
When to use
Trigger when the user provides one (and only one) alert / finding and asks for:
- "Investigate / triage / deep-dive / root-cause this"
- "Build a timeline for this"
- "Was this a real 0-day or a false positive?"
- "How far did this go? What's the blast radius?"
- "What should I do next about this specific alert?"
Do not trigger for: broad scans, multi-incident campaigns (treat each alert separately), or pre-alert hunting (use raven-zero-day-hunter).
Inputs
Required:
- Alert record — JSON from
raven-zero-day-detectionOR aValidatedFindingfromraven-zero-day-hunterOR a free-form analyst description that includes target locator and observed indicators. Must includefinding_ownerfor DevSecOps routing. - Investigation depth —
quick(≤ 5 min, surface evidence only),standard(≤ 30 min, full timeline),deep(≤ 2 hours, includes binary RE / memory forensics)
Optional:
- Approval mode —
smartdefault,manualfor any sample collection that touches production data - Cost cap — default $5 for
standard, $20 fordeep
Pipeline — six mandatory stages
Stage 1 — Alert validation (𝒯-grounded)
- Reload the artifact named in the alert (file hash, binary path, host id, flow tuple).
- Re-run the original detector(s) listed in
alert.detector_hitsusingpipeline/scan/agent_router.pyandpipeline/scan/finding_collector.py. If the rerun does not reproduce the hit, markreproducible=falseand continue — this is forensically important. - Re-extract features via
pipeline/prepare/indexer.pyand diff against the alert's stored feature vector. Significant drift triggers atampering_suspectedflag. - Route the validated alert to the assigned
finding_ownerper DevSecOps routing rules.
If reproducible=false, the investigation continues but the final report's confidence cannot exceed medium. The finding is still triaged because at Microsoft scale there is no quiet drawer for speculative findings.
Stage 2 — Timeline reconstruction (𝒯-grounded)
Map the alert to a timeline using the appropriate pipeline modules by alert mode:
| Alert origin mode | Timeline source |
|---|---|
scan-file / scan-binary |
File metadata + pipeline/prepare/ingester.py + pipeline/cross_language/wasm_analyzer.py |
scan-memory |
pipeline/prepare/indexer.py process and network trees |
scan-flows |
Flow log replay via pipeline/scan/finding_collector.py |
monitor-host |
pipeline/cross_language/taint_tracker.py syscall trace replay |
scan-source |
git blame + pipeline/prepare/indexer.py |
Output is a list of TimelineEvent records with ts, actor, action, evidence_source, evidence_path. Events without an evidence_source are dropped — speculation does not enter the timeline.
Stage 3 — Root-cause hypothesis (𝓛-scored)
Invoke pipeline/scan/agent_router.py with the timeline as context. Specialized auditor agents propose up to five ranked root-cause hypotheses. Each hypothesis must include:
bug_class,cwe,location,precondition,hypothesis_score(LLM confidence)- An explicit
falsification_test— a concrete tool-oracle invocation that would refute the hypothesis - Cross-file pattern references for private-codebase reasoning (kernel conventions, IRP invariants, IPC trust boundaries)
Hypotheses without a falsification test are rejected at this stage. The pipeline handles private Microsoft codebases that do not yield to pattern matching — a model has to actually reason about kernel calling conventions and component-internal idioms.
Stage 4 — Falsification pass (𝒯-grounded, mandatory)
For each hypothesis from Stage 3, run its falsification_test. Use pipeline/validate/debate_orchestrator.py for code-level debate validation, and the specific pipeline module named in the test (pipeline/prove/sandbox.py, pipeline/prove_extension/formal_verification.py, pipeline/cross_language/solidity_analyzer.py, pipeline/prove/harness_builder.py) for the others.
Outcomes:
confirmed— oracle reproduces the hypothesized conditionrefuted— oracle returns evidence inconsistent with the hypothesisinconclusive— oracle could not run or returned mixed signal
Only confirmed hypotheses become the report's root cause. Multiple confirmed hypotheses become an explicit list — the skill MUST NOT pick one arbitrarily.
Stage 5 — Blast radius (𝒯-grounded)
For each confirmed root cause, enumerate exposure:
- Source-level: variant search via
pipeline/scan/agent_router.pyvariant analysis branch against the confirmed pattern - Host-level:
pipeline/threat_intel/onchain_threat_intel.pyexposure scoring for real-world impact assessment - Identity-level: shared credential / token reuse via
pipeline/d3fend/enrichment_engine.pycompliance mapping - Asset-level: cross-reference with
pipeline/prepare/threat_modeler.pyown-asset inventory - Exposure score:
pipeline/threat_intel/onchain_threat_intel.pycalculates real-world exposure 0-100 and threat actor likelihood
Blast-radius items are returned as a structured list, not a prose paragraph.
Stage 6 — Enrich / D3FEND + ATT&CK binding (𝒯-grounded)
For each confirmed root cause and each blast-radius item, invoke pipeline/d3fend/enrichment_engine.py to bind:
- D3FEND defensive techniques — from
pipeline/d3fend/d3fend_catalog_loader.py(real 271-entry catalog) +pipeline/d3fend/ontology_client.py - ATT&CK offensive techniques — from
pipeline/d3fend/attack_mapper.pyfor threat actor context - Exposure scoring — from
pipeline/threat_intel/onchain_threat_intel.pyfor real-world impact - Compliance mapping — from
pipeline/d3fend/cci_loader.py(CCI-to-D3FEND NIST SP 800-53 mappings)
Bucket recommendations by tactic and rank by overlap count. Techniques returned by both D3FEND and ATT&CK queries rank higher.
Output is a RecommendedActions block in the report — these are recommendations only; this skill does not enact them.
CDP contract — quick check before returning
assert every TimelineEvent.evidence_source is not None
assert every confirmed_hypothesis has at least one validator oracle hit (𝒯) or debate confirmation (𝓛)
assert every d3fend_id resolves through pipeline.d3fend.enrichment_engine
assert every attack_technique is populated from pipeline.d3fend.attack_mapper
assert report.exposure_score is not None from pipeline.threat_intel.onchain_threat_intel
assert report.confidence == "high" only if reproducible=true AND at least two confirmed hypotheses agree on the bug_class
assert report.finding_owner is assigned for DevSecOps routing
A failed assertion downgrades the report's confidence field — it does NOT crash the skill. The investigator's job is to ship the best honest answer, not the most confident one.
Output contract
# Raven 0-Day Investigation — <alert_id>
## Summary
- Verdict: <true-positive|false-positive|inconclusive>
- Confidence: <high|medium|low>
- Reproducible: <yes|no>
- Root-cause bug class: <class>
- CWE: <id>
- ATT&CK observed: <T-id list>
## Timeline
| ts | actor | action | evidence source | path |
|----|-------|--------|-----------------|------|
| ... |
## Confirmed root causes (<count>)
### Root cause R-<n>
- bug_class: <class>
- Location: <file:lines or symbol or address>
- CWE: <id>
- Falsification test: <test description>
- Oracle outcome: confirmed by <tool> at <evidence_path>
- Prior: <value> → Posterior (after oracle): <value>
(repeat)
## Refuted / inconclusive hypotheses (<count>)
| Hypothesis | Outcome | Why |
|------------|---------|-----|
## Blast radius
| Scope | Item | Source |
|-------|------|--------|
| source | <file:lines> | variant_analyzer |
| host | <hostname / pid> | behavioral_profiler |
| identity | <principal> | response_orchestrator |
| asset | <fqdn / cidr> | projectdiscovery |
## Recommended D3FEND actions
| Tactic | D3FEND id | Rationale |
|--------|-----------|-----------|
| Harden | D3-SCH | from CWE→D3FEND |
| Isolate | D3-NI | from ATT&CK→D3FEND |
| Detect | D3-PA | from CWE→D3FEND ∩ ATT&CK→D3FEND |
| Evict | D3-PE (Process Eviction) | from ATT&CK→D3FEND |
## Reproducibility kit
- Alert id: <id>
- Commit: <sha>
- Tool versions: <list>
- Random seeds: <list>
- Validator traces: <path>
Refusal rules
- Refuse to emit a
highconfidence verdict without reproducibility. - Refuse to enact any recommended action — this is a read-only skill.
- Refuse to treat the alert as ground truth — Stage 1 reproduction is mandatory.
- Refuse to ship a hypothesis as a root cause without a passing falsification test.
- Refuse to skip blast radius for
deepinvestigations.
Related skills and modules
raven-zero-day-detection— upstream producer of alerts.raven-zero-day-hunter— upstream for full pipeline hunts.raven-zero-day-defend— downstream consumer ofRecommendedActions.raven-zero-day-fixing— downstream when the recommended action is patch / rollback.pipeline/— source-of-truth implementation of all MDASH stagespipeline/d3fend/— D3FEND + ATT&CK enrichment with real MITRE catalog datapipeline/threat_intel/— on-chain exposure scoring for prioritizationpipeline/validate/— multi-model debate orchestrationpipeline/prove_extension/— symbolic execution and formal verificationpipeline/eval/— benchmark evaluation framework for measuring recall and precision