Files
orca/docs/threat-model.md
Jon Chery 0f7f9cf914 docs(P27): zero-trust + OIDC + WebAuthn + threat-model docs (REQ-142)
---ci---
project: orca
phase: 27
milestone: v0.12
status: execute
---/ci---

docs/threat-model.md (STRIDE + OS surface + residual risks),
docs/oidc.md (bundled Dex + BYO + claim mapping + offline),
docs/webauthn.md (passkeys + RP ID + bootstrap sequence),
docs/security-runbook.md (seal/unseal + rotation + incident response).
2026-08-07 11:33:58 +00:00

2.6 KiB

Orca Threat Model (v0.12)

Overview

Orca is a minimalist, offline-first, CLI-first orchestration engine. v0.12 adopts a zero-trust identity model (R-021): no Orca-issued credentials. Human identity is exclusively OIDC; machine identity is exclusively mTLS/SPIFFE.

R-021 — No Orca Credentials

Orca never issues, stores, or accepts human-identity credentials.

  • Human identity: OIDC (external IdP or bundled Dex + WebAuthn)
  • Machine identity: mTLS + SPIFFE SVIDs
  • No passwords, no Orca-issued tokens, no CA-key passphrases

STRIDE Analysis

Component Spoofing Tampering Repudiation Info Disclosure DoS Elevation
OIDC client mitigated by JWKS verification mitigated by ID token
WebAuthn connector mitigated by public-key auth mitigated by signed assertions
ACL mitigated by deny-by-default + OIDC claims mitigated by audit log mitigated by least-privilege perms
Master key seal mitigated by AES-256-GCM + Shamir mitigated by 0600 + sealing
SSH-push transport mitigated by key auth + TOFU/pin mitigated by audit mitigated by rate limiting (v1.x)
Daemon (deprecated) mitigated by mandatory mTLS mitigated by audit mitigated by body limits mitigated by body limits mitigated by ACL
Backup/restore mitigated by HMAC signature mitigated by symlink validation
Audit log mitigated by hash chain + append-only trigger
Drift detection mitigated by per-peer HMAC
nftables ingress mitigated by conntrack + rate limit
sudoers mitigated by NOEXEC + least-privilege

OS Surface

Orca writes to: /etc/orca/, /etc/traefik/orca*, /etc/systemd/system/orca-*, /etc/nftables.d/orca*, /etc/syncthing/orca*, /etc/sudoers.d/orca. All via SSH-push (key auth, no passwords). The orca system user is nologin (no shell access). Scripts run as root only for file writes to /etc/ (the operator pre-stages the SSH key; no password flows).

Residual Risks

  • Legacy CA/mTLS/daemon dual-write window (v1.x closure)
  • SQLite unencrypted at rest (0600 file mode; CGO-free SQLCipher is v1.x)
  • Master key compromise compromises all historical secrets (no forward secrecy)
  • IdP loss: Shamir 3-of-5 recovery; if quorum unavailable, unrecoverable by design
  • Transport rate limiting + typed errors (v1.x)