TestUnity LLC
    TestUnity LLC

    Securing Technology, Empowering Innovation

    All articles
    Threat ModelingSecure DevelopmentApplication SecurityUAE

    Threat Modeling: A Practical Guide for UAE Product Teams

    TestUnity Security Team14 October 20268 min read

    Most security testing happens after a system is built: a penetration test probes a running application, a secure code review inspects finished code. Both are essential, and both arrive too late to be cheap. A design flaw — an authentication boundary in the wrong place, a trust assumption between two services that doesn't hold, a missing authorisation check baked into the data model — is far cheaper to fix on a whiteboard than after it ships. That is the case for threat modeling: a structured exercise, run before or during design, that finds these flaws while they're still just lines on a diagram.

    For UAE product and engineering teams building fast, threat modeling is one of the highest-leverage security activities available — and one of the most commonly skipped, usually because it sounds more abstract than it is. Here's what it actually involves.

    What threat modeling is (and isn't)

    Threat modeling is the practice of systematically asking, for a specific system: what could go wrong, and what are we doing about it? It is not a vulnerability scan, not a penetration test, and not a compliance checklist. It operates on a design, not running code, which is exactly what makes it useful earlier in the lifecycle than any other security activity.

    A useful threat model answers four questions, in order:

    1. What are we building? A data-flow diagram of the system — components, trust boundaries, data stores, and how data moves between them.
    2. What can go wrong? The threats against each component and data flow, enumerated systematically rather than guessed at.
    3. What are we going to do about it? Concrete mitigations mapped to each credible threat — not "be more careful," but specific controls.
    4. Did we do a good job? A review step, because the first pass at a threat model is rarely complete.

    Skipping straight to step 3 — jumping to "add authentication" or "encrypt that field" without first mapping the system and its trust boundaries — is how teams end up with controls that don't actually address their real exposure.

    The three methodologies that matter

    Several frameworks exist, but three cover almost every practical case.

    STRIDE

    STRIDE categorises threats into six types: Spoofing, Tampering, Repudiation, Information disclosure, Denial of service, and Elevation of privilege. For each component and data flow on the diagram, you ask which of the six apply. STRIDE is the right default for most application and system-level threat modeling — it's systematic, it's fast to teach a team, and it maps cleanly onto technical controls (authentication counters spoofing, logging counters repudiation, and so on).

    PASTA

    PASTA (Process for Attack Simulation and Threat Analysis) is a heavier, risk-centric methodology that starts from business objectives and works down to technical attack scenarios, including an explicit attack-simulation stage. It suits higher-stakes systems — a core banking platform, a critical national infrastructure control system — where the extra rigour of tying every technical threat back to business impact is worth the additional time.

    DREAD

    DREAD isn't a threat-identification method at all — it's a scoring model for threats you've already found, rating Damage, Reproducibility, Exploitability, Affected users, and Discoverability to produce a relative priority. Pair it with STRIDE or PASTA to decide which of the threats you identified to fix first, rather than treating every finding as equally urgent.

    Running a threat model in practice

    A practical session, for a typical web or API-backed application, looks like this:

    • Draw the data-flow diagram first. Include every external entity (users, third-party APIs, partner systems), every process, every data store, and every trust boundary between them — anywhere data crosses from a less-trusted zone to a more-trusted one. Most real threats live on these boundaries.
    • Walk each element against STRIDE. For every data flow crossing a trust boundary, ask which of the six threat categories apply. Don't filter at this stage — over-generate threats, then prioritise.
    • Score and prioritise with DREAD (or simpler high/medium/low buckets for smaller systems) so engineering effort goes to the threats that matter most first.
    • Assign a concrete mitigation to each threat you're keeping. "Validate input" is not a mitigation; "reject any request where user_id in the path doesn't match the authenticated session's user_id" is.
    • Re-run it when the design changes materially — a new integration, a new trust boundary, a significant architecture change. A threat model is a living artefact, not a one-off exercise to file away.

    Where threat modeling fits with the rest of your security programme

    Threat modeling is deliberately narrow: it finds design-level flaws, not implementation bugs. It needs to sit alongside, not instead of, the testing that catches what happens once a system is actually built:

    • Secure code review catches implementation flaws — the broken access-control check, the SQL built with string concatenation — that a design-level exercise can't see, as covered in our comparison of secure code review and penetration testing.
    • Penetration testing validates how the system behaves under real attack conditions, against the OWASP-aligned checklist that a thorough web assessment should cover.
    • Threat modeling sits earliest, catching the architectural decisions that neither of the above is positioned to find until a great deal of engineering time has already been spent building around them.

    Teams that run all three at the right stage consistently ship fewer serious findings in their first penetration test — because the design-level problems were already caught and fixed before the code existed.

    Frequently Asked Questions

    When in the development process should we threat model?

    As early as possible — ideally during design, before implementation starts, and again whenever the architecture changes materially (a new integration, a new trust boundary, a significant refactor). Threat modeling an already-shipped system still has value, but the cost of fixing what it finds is much higher.

    Do we need a security specialist to run a threat model?

    A specialist helps, especially for the first few sessions, but threat modeling is primarily a structured conversation among the people who understand the system: engineers, architects, and product owners. STRIDE in particular is teachable to a product team in a single workshop.

    How is threat modeling different from a penetration test?

    A penetration test attacks a running system to find exploitable vulnerabilities; a threat model analyses a design — often before any code exists — to find structural security gaps. They catch different classes of problem and are most effective used together, with threat modeling earlier in the lifecycle.

    How long does a threat modeling session take?

    A focused session for a single service or feature typically runs two to four hours, including building the data-flow diagram. Larger or higher-risk systems, or a PASTA-based exercise, can take several sessions spread across a few days.

    Build security in from the design stage

    TestUnity runs threat modeling for UAE product and engineering teams — STRIDE, PASTA or DREAD, scoped to your system's actual risk. Talk to our team about building security in from the start, not bolting it on after launch.