Skip to main content

Threat Model

Scope

SicarioSpec bootstrap CLI, presets, extension command metadata, generated governance artifacts, docs scaffold, and offline verification.

Trust Boundaries

  • User shell to sicario CLI.
  • SicarioSpec source repo to generated target project.
  • Generated model/agent guidance to developer tools.
  • Target project files to deterministic verifier.

Methodology

Threats are categorized by STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege).

Threats

ThreatSTRIDE CategoryImpactControlStatus
Bootstrap overwrites user files without consentTamperingHighBrownfield-safe default: existing files are additively merged/overlaid or preserved, never fully overwritten; full overwrite requires explicit --force; a timestamped *.sicario-bak.* backup is taken before any overwrite; --dry-run previews every decision without writingImplemented
Generated files escape target repo directoryTamperingHighResolve target path to absolute; restrict all writes to under selected targetImplemented
Hardcoded secrets in target repo pass undetectedInformation DisclosureCriticalPattern-based secret scan in sicario verify; extendable via custom rule filesImplemented
AI-sensitive spec omits prompt-injection guardrailsTamperingHighKeyword and section validation in verify gate; non-zero exit on missing sectionsImplemented
Documentation drift hides behavior changeRepudiationMediumdocs-impact tracking and docs/diagrams existence checks in verifyImplemented
Unauthenticated user modifies .rule.json files to weaken gatesTamperingHighRule files are under version control and changes are visible in PR diff; every override of a rule id is additionally recorded in scan_coverage.overrides in gate evidence with an impact string (e.g. disables-critical-severity-rule); a rule file that fails validation or cannot be read surfaces as a critical SICARIO-RULE-INVALID / SICARIO-RULE-UNREADABLE finding; sicario verify --validate-rules checks rule files pre-run; a run that loads zero rules fails closed with SICARIO-NO-RULES-LOADED, and a SICARIO_ASSET_ROOT redirect of the shipped rule source fails the run with SICARIO-ASSET-ROOT-OVERRIDE (see rule-engine.md)Implemented
CI pipeline bypasses verify by exiting early or masking exit codeSpoofingHighCI workflow enforces sicario verify as a required step; branch protection requires passing status checkImplemented
Concurrent CI jobs race on shared gate-summary outputDenial of ServiceLowCI runners are single-threaded per job; not exploitable in current architectureAccepted
Preset output injection via malicious template or content generatorTamperingHighPreset classes are version-controlled Python modules; generated paths are fixed relative paths under the selected target; no runtime fetching of external content; content generators use only stdlib and hardcoded templatesImplemented

Human Approval Boundaries

Publishing releases, adding direct external writes, and enabling CI commits back to protected branches require human approval.