| Spoofed / false telemetry |
Adversary injects events to frame a benign host |
Every event becomes a claim that carries its source reliability. Confidence comes from independent corroboration, and contradictions lower it. Nothing is absolute. |
Connector authentication, signed events |
| Tampering with evidence |
Raw event edited after ingest |
SHA-256 over canonical raw JSON; normalizer.verify(); append-only event store with a hash-chained ledger: store verify flags edited records, ledger gaps/overlaps and records outside the ledger; --expect-head with an off-host head hash detects truncation or extension; optional HMAC key (all tested) |
Signing with a key held off-host |
| Attribution poisoning / false flag |
Planted indicator points at another actor |
Two ACH engines (DRAGNET, OCCAM) each write one competing claim; UNKNOWN competes too; the platform commits only at fused confidence >= 0.5 (measured in results/attribution.json) |
Planted exclusive malware families still mislead DRAGNET and, at the "name anyone" point, the fused verdict |
| Injection into graph DB |
Malicious IDs in Cypher |
Labels are allow-listed and regex-checked; all values are parameterized (tested) |
- |
| Schema abuse / DoS |
Huge fields or batches |
Mapped fields capped at 512 characters and stripped of non-printables; API body cap 10 MB, batch cap 1,000 records, raw-record cap 64 KB, at most 250,000 retained records; malformed records get 422 |
Rate limiting; incremental ingest (every ingest rebuilds the graph) |
| Cross-site request forgery |
A web page POSTs records into a local instance |
Origin / Sec-Fetch-Site checks (403), JSON-only /ingest (415), FastAPI >= 0.132 strict content type |
- |
| Unknown types |
action="DROP TABLE" |
Closed enums for node and edge types; the event is rejected |
- |
| Information disclosure |
Graph exfiltrated via API or a DNS-rebinding page |
Binds to localhost by default; loopback-only Host allow-list; bearer token (auto-generated off loopback) |
Users/roles, TLS, audit log |
| Insider poisons detections |
Rogue engine writes bogus EXHIBITS |
Engine claims are method=inferred with a lower prior and a named source |
Human approval for detection deploys |
| AI overreach |
Model asserts causality with no path |
The investigator is deterministic and read-only; every finding cites claim ids (tested). Drafted detections must pass a false-positive gate and stay unreviewed drafts |
An LLM hypothesis layer would need the same citation rule |