BitBootcampBitBootcamp ← all explainers 🔄 Review ⚙ Settings

CYBER-01-002-P · Primer — Threat Modeling (STRIDE)

The idea in one sentence

Threat modeling is asking, before you build, how each part of your system could be attacked — and STRIDE is the checklist that makes sure you ask every question.

Why it exists

"Is this design secure?" is a blank page, and blank pages get skipped. Left to intuition, teams guess at a few scary attacks, miss whole categories, and only discover the gaps after a breach. Threat modeling replaces the guess with a routine: draw the system, then walk a fixed list of threat types against each piece. It is the security equivalent of a pilot's pre‑flight checklist — the point is not that pilots forget how to fly, it is that a written list catches the one item a busy human skips. Imagine a homeowner who only checks the front door before leaving; they might forget the back window, the garage door, or the basement hatch. The checklist forces them to verify every possible entry point, just as STRIDE forces a team to verify every possible threat vector.

How it works

Two beats. First, decompose — draw the system as components and the data flowing between them: users, services, the database, the queue, every trust boundary they cross. That diagram is your list of assets. Second, enumerate — for each component, run the six STRIDE categories and ask "can this happen here?" Spoofing (pretending to be someone else), Tampering (altering data or code), Repudiation (denying an action with no proof), Information disclosure (leaking data), Denial of service (making it unavailable), Elevation of privilege (gaining rights you shouldn't have). Each letter maps to a property you want: authentication, integrity, non‑repudiation, confidentiality, availability, and authorization. Six questions, per component, on purpose.

Worked example: Suppose you have an e‑commerce checkout flow with three components: a web front‑end, a payment service, and a database. The web front‑end handles 10,000 transactions per day, each worth an average of $75 (≈ $750,000 daily volume). You draw the diagram and then ask the STRIDE questions for the payment service.

See it — A simple STRIDE threat model showing system components and data flow.

flowchart LR
A["User"] --> B["API Service"]
B --> C["Database"]
B --> D["Message Queue"]

The one gotcha

The most common pitfall is treating the diagram as the complete system when it is merely a snapshot. If a component—say, a legacy admin console that still runs on port 8080—is omitted, STRIDE never evaluates it, and the real attack surface remains invisible. A flawless STRIDE pass on an incomplete diagram creates a false sense of security; the hidden piece becomes the low‑hanging fruit for attackers. The discipline, therefore, is exhaustive inventory: every server, every temporary script, every third‑party webhook must be drawn before you start the checklist.

The one-line takeaway

You can't defend what you never listed as an asset.

Where you'll meet it

STRIDE is the default lens in Microsoft's Threat Modeling Tool and the backbone of most design‑review templates; OWASP's Threat Modeling guidance folds it into the four questions "what are we building, what can go wrong, what will we do, did we do a good job." You will meet it in security design reviews, architecture sign‑offs, and any pull request big enough to change a trust boundary — usually as a table with one row per component and six columns.

Named concepts: threat modeling, STRIDE