agentleFS
SWEStashSWEStash/swe-workflow-skills/skills/threat-modeling/SKILL.md

threat-modeling

Skill1 starsChanged 6 days agoMITView on GitHub

Design-time security analysis of a system or feature before it's built — trust boundaries, attack surface, STRIDE per element, abuse cases, prioritized mitigations that become security requirements. Triggers: threat model, STRIDE, trust boundary, attack surface, what could go wrong security-wise, security design review, abuse case, secure this design, security requirements. Reviewing EXISTING code/config for vulnerabilities → security-audit; use this skill while the design is still on the whiteboard.

45 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use iac-security, container-security and 8 more.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • hardw00tSkill

    iac-security

    Infrastructure-as-Code security scanning router for Terraform, CloudFormation, Kubernetes manifests, Helm, ARM/Bicep. Orchestrates Checkov, tfsec, Terrascan, KICS, kubesec, kube-linter, Polaris, cfn-lint/cfn-nag, and OPA/Conftest. Use when auditing IaC for misconfigurations, scanning Terraform plans, validating K8s security policies, checking cloud infrastructure compliance, or authoring custom policy-as-code (Rego).

    Also in 4 projects that use this

  • vbrevikSkill

    container-security

    Scan container images, Dockerfiles, docker-compose files, and Kubernetes manifests for security misconfigurations and vulnerabilities. Uses Trivy for image/IaC scanning and Kubescape for K8s policy compliance. Falls back to regex-based Dockerfile and K8s YAML analysis when tools are unavailable. Produces STIG V-ID-tagged findings for /stig-compliance pipeline. Use when (1) reviewing Docker or K8s configuration changes, (2) scanning container images for OS-level CVEs, (3) validating K8s RBAC and NetworkPolicy configuration, (4) before deployment. Works air-gapped with pre-downloaded vulnerability database.

    Also in 4 projects that use this

  • wgpsecSkill

    prompt-injection

    AI/LLM 间接 Prompt 注入攻击。当目标 AI 系统会处理外部数据源(网页、文档、邮件、数据库、API 返回)时使用。覆盖间接注入、工具链劫持、RAG 投毒、数据外泄等技术。OWASP LLM Top 10 #1 漏洞类别

    Also in 4 projects that use this

  • allanninalSkill

    threat-hunting

    Hunt threats using Sigma detection rules and security analysis techniques. Use when investigating security incidents, creating detection rules, or analyzing suspicious activity.

    Also in 3 projects that use this

  • narlyseorgSkill

    secure-code-review

    Use when reviewing source code for security vulnerabilities, performing static analysis of a codebase, auditing code for injection flaws, authentication issues, cryptographic weaknesses, insecure deserialization, SSRF, path traversal, memory safety bugs, hardcoded secrets, or misconfigurations. Use when the user asks to find security bugs in code, assess code quality from a security perspective, or review pull requests for security implications. Use when performing dependency audits, secrets scanning, or configuration review of application source.

    Also in 3 projects that use this

  • jefflesterSkill

    api-security

    API security best practices and common vulnerability prevention. Enforces security checks for authentication, input validation, SQL injection, XSS, and OWASP Top 10 vulnerabilities. Use when building or modifying APIs.

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.

  • 0

    Common

    Most of the 40 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 0

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Check coverage: every trust boundary STRIDE'd, every entry point owned, every threat decided.

    line 78

“Common” is measured: kept by at least 6 in 10 of the 40 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Threat Modeling

Find the security flaws while they're still cheap — in the design, before the code exists. A missing authorization check found here is a requirement; found by security-audit it's a rework ticket; found by an attacker it's an incident. The frame is Shostack's four questions: what are we building, what can go wrong, what are we doing about it, did we do a good job?

Boundary: this skill is proactive and design-time. Once code exists, verify it against this model with security-audit — the two are complements, not alternatives.

Workflow

Step 1: Model the System

Sketch a data-flow view of what's being built: components (processes, stores, external services), the data flowing between them, and classification of that data (what here is worth stealing or corrupting — credentials, PII, payment data, tokens?). Then draw the trust boundaries: every place data crosses a privilege, ownership, or network line — internet → load balancer, app → database, user → admin, your service → a third party, webhook → your endpoint. Threats cluster at these crossings; a model without explicit boundaries finds only generic threats.

Step 2: Enumerate the Attack Surface

List the entry points ranked by exposure — unauthenticated internet-facing first, then authenticated user, then internal/partner, then admin. Name the assets an attacker actually wants (from Step 1's classification) and the realistic attackers: opportunist with a scanner, malicious or curious insider, targeted attacker after your data specifically. Effort should follow exposure × asset value, not enumeration order.

Step 3: STRIDE Each Boundary Crossing

Apply STRIDE per element and boundary crossing, not once globally — that's what makes it systematic rather than a vibes checklist:

CategoryThe question at each crossing
SpoofingCan the caller pretend to be someone/something else?
TamperingCan data or code be modified in transit or at rest?
RepudiationCould an actor deny an action with no way to prove it?
Information disclosureCan data leak to someone unauthorized?
Denial of serviceCan this element be exhausted or made unavailable?
Elevation of privilegeCan a lower-privilege actor gain higher privilege?

Per-category threat patterns and standard mitigations: references/stride-mitigations.md.

Step 4: Write Abuse Cases

For each key user story, write the attacker's version: "As a malicious user, I can share a link that grants more than I have", "As a former employee, I can still call the API with my cached token." Abuse cases catch the logic-level threats STRIDE's element-by-element pass misses — especially authorization logic, workflow bypasses, and quota/limit abuse.

Step 5: Rank and Decide

Score each threat roughly by likelihood × impact — precision theater (long DREAD decimals) wastes the room's time; high/medium/low is enough to order the work. For each threat, record an explicit decision: mitigate (name the control), eliminate (remove the feature/flow), transfer (vendor, insurance), or accept (documented, with an owner — silent acceptance is the only wrong answer). Mitigations become security requirements with acceptance criteria — feed them into feature-planning so they ship with the feature instead of after it.

Step 6: Validate and Keep It Alive

Check coverage: every trust boundary STRIDE'd, every entry point owned, every threat decided. Then treat the model as living documentation — revisit when the architecture changes (new integration, new entry point, new data class), and hand it to security-audit as the checklist when the built system gets reviewed.

Principles Applied

  • Threats cluster at trust boundaries — model the boundaries first and the threats enumerate themselves; skip them and you get a generic list.
  • A decision per threat, even "accept" — an undocumented accepted risk is indistinguishable from an unnoticed one.
  • KISS on scoring: rank to order the work, not to defend the numbers.

Cross-Skill References

  • security-audit — reactive review of the built system; consumes this model
  • architecture-design — record structural security decisions as ADRs
  • api-design — authn/authz contracts for the boundaries identified here
  • data-modeling — where the classified data actually lives
  • configuration-strategy — secrets handling for the credentials in the model
  • feature-planning — turns the mitigations into scheduled, testable tasks

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.