docs(architecture): Layer 7 — STRIDE threat model on the container DFD#196
Conversation
STRIDE-per-element over the Layer 6 DFD (7 containers, 2 data stores, 4 external actors, 11 boundary flows). The in-sandbox process is the primary adversary, so the high-value rows weight the sandbox's outbound and host-facing edges. Each threat resolves to a canon NFR or routes to a tracked open hole; severity is qualitative Likelihood x Impact. The twenty OPEN/residual rows map to existing security issues (#149, #176, #181-188); the snapshot-at-rest and guest-self-audit gaps surface as OPEN, not silently mitigated. The machine-checkable Threagile layer is deferred to #194; a LINDDUN privacy pass to #195. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (1)
✅ Files skipped from review due to trivial changes (1)
WalkthroughAdds a draft STRIDE-per-element threat model for the Layer 6 container DFD and an accompanying Mermaid diagram. The doc records scope, STRIDE applicability, Likelihood×Impact ratings, a per-element threat table with mitigations and residuals, an OPEN risk tracker, deferred automation notes, and open questions. ChangesThreat Model Documentation and Visualization
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/architecture/06-threat-model.md`:
- Line 104: In the P6-E1 row update the clause "Deny-by-default allow-list is
the only outbound path; sandbox has no route out except the edge" to remove the
superlative—reword to state the same constraint without "only" (e.g., "Outbound
traffic is restricted by a deny-by-default allow-list; the sandbox is configured
with no alternate route and must egress via the edge") so the technical claim is
preserved while avoiding the AI-slop trigger.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 6c175bb9-e428-494b-8697-7b87cc18e691
📒 Files selected for processing (2)
docs/architecture/06-threat-model.mddocs/architecture/diagrams/06-threat-model.mmd
…open-question routing - Rephrase two "is the only" superlatives the slop detector flagged (P6-T1, P6-E1). - P5-D1: credit NFR-SEC-14 for the per-container PID ceiling it already mandates; narrow the #188 residual to disk quota + deterministic OOM scoping. - Route four edge-integrity open questions to issues: edge binary/config attestation, no-credential-in-response, MITM-plaintext zeroization (#197), and transparent-mode SNI/Host consistency (#198). - P3-I1: drop the out-of-scope NFR-SEC-32 citation (it disclaims guest-VM memory, not host custody-process memory). - P2-S2: name the gateway's generic internal token class (NFR-SEC-23). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What
Layer 7 of the next/v1 architecture: a STRIDE-per-element threat model over the Layer 6 container DFD.
docs/architecture/06-threat-model.md— the model.docs/architecture/diagrams/06-threat-model.mmd— overlay marking the OPEN/residual threats on the DFD.Method
STRIDE-per-element (Microsoft element-type mapping: process S/T/R/I/D/E; data-flow T/I/D + boundary S/E; data-store T/I/D, +R for the audit log; external entity S/R). Severity is a qualitative Likelihood × Impact → High/Med/Low. The in-sandbox process is the primary adversary holding in-sandbox root, so the high-value rows weight its outbound and host-facing edges, not the inbound caller edge.
Each threat row resolves to a canon NFR (with the per-zone framework cell from
02-trust-boundaries.md§11) or routes to a tracked open hole. The twenty OPEN/residual rows map to existing security issues (#149, #176, #181–#188); the snapshot-at-rest (#184) and guest-self-audit (#181) gaps surface as OPEN, not silently mitigated.Deferred
Scope
No code, no NFR changes — a new analysis layer over the existing DFD. The DFD itself (
05-c4-container.md,c4-container.mmd) is referenced, not redrawn.🤖 Generated with Claude Code
Summary by CodeRabbit