mn-youssef/security-skills

threat-modeling

Use when starting a security assessment and you need to map an application's attack surface, enumerate trust boundaries, and rank what to test first — before auditing code or running tools.

查看源码
仓库原始内容

按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。

Threat Modeling (PLAN phase)

Overview

Decide what to worry about and test first before spending effort. Map assets, entry points, and trust boundaries; apply STRIDE; rank risks by likelihood × impact.

Core principle: You can't test everything. Spend effort where a break hurts most.

Process

  1. Inventory assets — What's valuable? (user data, money, credentials, PII, admin control, IP)
  2. Map entry points — Every place untrusted input enters: routes/endpoints, forms,

file uploads, query params, headers, webhooks, message queues, mobile API calls, third-party callbacks.

  1. Draw trust boundaries — Where does data cross from less-trusted to more-trusted?

(browser→API, API→DB, service→service, user→admin). Bugs cluster on these lines.

  1. Apply STRIDE per boundary/component — see references/stride-and-surface.md.
  2. Rank — score each threat: risk = likelihood × impact (1–3 each → 1–9).

Test high scores first.

Quick reference — STRIDE

ThreatQuestionDefends
SpoofingCan someone pretend to be another user/service?Authentication
TamperingCan data be modified in transit/at rest?Integrity
RepudiationCan an action be denied / is it logged?Non-repudiation
Information disclosureCan data leak?Confidentiality
Denial of serviceCan it be made unavailable?Availability
Elevation of privilegeCan a user gain rights they shouldn't?Authorization

Output: prioritized target list

A table the next phases consume:

#AssetEntry pointSTRIDELikelihoodImpactRiskTest via
1User PIIGET /api/users/:idI (IDOR)339code-audit + active-pentest
2AuthPOST /loginS236code-audit

Hand-off

Feed the top items into `security-code-audit` (find) and `active-pentest` (validate).

The surface inventory is also the applicability driver. It tells the security-testing orchestrator which specialists apply (surface present → run) and which to skip (absent → N/A), and exposes any surface with no matching specialist as a coverage gap to handle with the generic methodology + a recommendation to build a new skill. List every surface you found — including ones no current skill covers — so nothing is silently missed.

Common mistakes

  • Modeling the happy path only — attackers use the unhappy paths.
  • Forgetting internal/trusted entry points (admin panels, internal APIs, cron, queues).
  • Treating all findings as equal — rank, or you'll drown in low-value work.