Helix Threat Model (concise)
Purpose: keep determinism, provenance, and user data trustworthy even when plugins or inputs are untrusted.
Assets
- Artifact and bundle integrity (hash-matched files, manifests, reports).
- Deterministic execution guarantees (reproducible runs across machines/backends).
- Policy/profile enforcement, including taint + trust classification.
- Plugin trust store and registry metadata.
- User inputs and project data (sequences, configs, snapshots); support bundles must respect redaction rules.
Adversaries
- Malicious plugin publisher: ships a
.helixpluginintended to exfiltrate data or break determinism. - Poisoned input provider: supplies hostile configs/artifacts to flip policy gates or trick verifiers.
- Supply-chain attacker: tampers with dependencies, build outputs, or release distribution channels.
- Local unprivileged user: attempts to read/write another user’s bundles or trust store on the same host.
- Operator error / misconfiguration: weak policies or running in debug mode without realizing the downgrade.
Trust boundaries
- Plugin host: in-process today; planned extension-host isolation. Enforced trust store + optional signature gates.
- Runtime/backends: deterministic seeds + fixed schedulers; backends declare D0/D1 determinism class.
- Artifacts/bundles: manifest hashes are the integrity boundary; verifiers refuse mismatches.
- Build + release: source → build → packaged artifact → signed hashes; verified offline via
docs/policies/release_provenance.md.
In scope
- Plugin loading/updates, registry consumption, and trust store handling.
- Artifact/bundle verification, schema validation, and deterministic replay (CLI + Studio headless).
- Build/signing pipeline and distribution of installers/zips and canonical conformance packs.
- Policy/profile enforcement and taint propagation into reports and exports.
Out of scope (residual risk)
- Host OS/firmware compromises, GPU driver/kernel bugs, or physical access attacks.
- Arbitrary Python execution when the user bypasses the plugin system or runs ad-hoc scripts.
- Pure availability/DoS without trust or safety impact.
- Third-party forks or unsigned, repackaged installers.
Supply-chain controls (current and planned)
- Reproducible plugin packages: sorted zip entries, fixed timestamps, HASHES.json checked at install; optional Ed25519 signatures checked against a trust store.
- Dependency integrity: pinned versions; wheels are validated against expected hashes during release builds when available.
- Release channel: SBOM + SHA256SUMS + signatures; planned build attestations (SLSA-style) tying source, builder, inputs, and outputs.
- Registry hygiene: registries served over HTTPS; expected sha256 may be provided per entry; offline install supported from local packages.
Detection and response expectations
- Every run emits a run_id and taint class; verifiers fail closed on manifest/hash mismatches.
- Plugin diagnostics/logs include publisher id and hash; Studio surfaces trust level in the plugin manager.
- Security issues follow the disclosure/patch process in
SECURITY.md.