skip to content

In STRIDE, which security property does Spoofing violate, and which DFD element types can be spoofed?

level: middleimportance: must knowfreq 78%

answer

  1. a property under attack, not an exploit
  2. who claims to be whom
  3. some elements have no identity to fake
  4. entities and processes, never pipes or stores
  5. the answering family is authentication

basics

~20 s

Spoofing violates authentication: something claims an identity that is not its own. On a data-flow diagram it attaches to external entities and to processes, including the machines they answer on, and never to data flows or data stores.

solid answer

~50 s

Spoofing is the STRIDE category for false identity claims, so the property under attack is authentication. In the classic STRIDE-per-element mapping it applies to **external entities** (a human user, a partner system, a device you do not own) and to **processes** (a service or daemon, and by extension the host or endpoint it answers on). It does not apply to data flows or data stores: a flow can be tampered with, read or starved, but nobody impersonates a pipe, and a store is modified or disclosed rather than impersonated. In practice, every arrow that crosses a trust boundary gets asked twice: can the caller be someone other than who it claims, and can the callee be something other than what the caller expects? The answering control family is authentication, one-way where only one end has to be proven and mutual where both do.

go deeper

for a junior

Be ready to state the pairing without hesitation: the S in STRIDE is Spoofing and the property it attacks is authentication. Give one plain example of something claiming to be a user or a service it is not.

for a middle

Explain the STRIDE-per-element mapping and why it stops where it does: external entities and processes carry spoofing, data flows and data stores do not, because there is no identity to impersonate on an arrow or a table.

for a senior

Show that you walk a real diagram with it. For each boundary-crossing arrow, say what identity is claimed at each end, what the receiver verifies and against which trust anchor, and mark the ends where nothing is verified as findings.

for a principal

Own the framing that keeps teams honest: spoofing findings are about identity granularity, direction and revocability, not about which product is deployed. Push back when a design answers an identity threat with a confidentiality control.

## What the S actually names STRIDE is a threat-enumeration mnemonic: each letter names a **security property under attack**, not a named exploit. Spoofing pairs with **authentication** — the ability to know that a party is who or what it claims to be. The other five pairings, for orientation only, are Tampering with integrity, Repudiation with non-repudiation, Information Disclosure with confidentiality, Denial of Service with availability, and Elevation of Privilege with authorization. Saying this precisely matters because the four words are routinely blurred: - a **threat** is what could go wrong — *a caller could pose as the payments service*; - a **vulnerability** is the flaw that lets it — *the endpoint accepts any caller that knows the URL*; - a **risk** is the rated consequence — *funds released on a forged callback*; - a **control** is what you do about it — *authenticate the caller and reject unauthenticated callbacks*. Spoofing is a threat about the identity claim itself. Whether the attacker got there by guessing a shared secret, by holding a device, or by answering to a name on the network is the mechanism, and the mechanism does not change the category. ## Which elements carry the threat STRIDE-per-element assigns categories by element type, which is what makes the enumeration mechanical rather than inspired: | DFD element | Spoofable? | What the claim looks like | |---|---|---| | External entity (user, partner system, device) | Yes | Something presents itself as that user, partner or device | | Process (service, daemon, function) | Yes | Something answers in place of that service, or poses as it to a peer | | Data flow (an arrow) | No | A flow is tampered with, read or starved — there is no identity to impersonate | | Data store (database, bucket, log, queue) | No | A store is modified or disclosed; impersonating the *store* is really spoofing the process that fronts it | A useful sharpening: when someone insists the database is being spoofed, what they are describing is a client that resolves and connects to something claiming to be the database. That is spoofing of the **process/endpoint**, and it lands on the element that answers. ## External entities: the mitigation lands on your side External entities are drawn precisely because they are outside your control — you cannot patch a customer, a partner or a shipping carrier. So a spoofing threat against an external entity is never mitigated *inside* that entity; it is mitigated **at the boundary where your process accepts input from it**, by requiring and verifying a credential you can check and revoke. This is why the threat sits on the entity but the control sits on your process. Two shapes recur on a flow: - **Spoofed sender.** Your process accepts an inbound call and has no verifiable claim about who made it. A carrier status callback that releases payment, protected only by an unguessable URL, is the canonical version: knowledge of a URL is not an identity — you cannot attribute it, scope it, or revoke it for one caller. - **Spoofed server/peer.** Your client reaches out and accepts an answer from whatever responds to a name. On a network you do not fully control, a name is a lookup result, not an identity. ## The answering control family The control family for Spoofing is authentication, and threat modeling cares about three things about it rather than the implementation: 1. **Direction.** One-way authentication proves exactly one end. If both ends act on what the other says, you need mutual authentication. 2. **Granularity.** *Which* identity does the verifier actually learn — this device, or any member of a group that shares one secret? 3. **Lifecycle.** Can that identity be issued, rotated and revoked for one party without disrupting the rest? Encryption is not on this list. A confidential channel to an impostor is a confidential channel to an impostor; confidentiality answers Information Disclosure, not Spoofing. ## Common confusion with Elevation of Privilege Both can end with an attacker acting as an administrator, which is why interviewers probe the difference. Spoofing is a **false claim about who you are** that the system believes; elevation is **acting beyond what your identity is permitted**, once identity is settled. If the system correctly identified the actor and still let it do too much, that is an authorization failure and belongs under E; if the system was wrong about who the actor was, it is S. Categorising it correctly matters because the two point at different control families and usually different owners. ## How to use this at the whiteboard Walk the diagram element by element. For each external entity and each process ask: what identity is being claimed here, what does the receiver verify, against what trust anchor, and what happens when that anchor or credential is wrong? Anything you cannot answer is a spoofing finding, whether or not you can name the technique that would exploit it.

  • An external entity is outside your control, so where does the spoofing mitigation for it actually land?
    On your side of the trust boundary. You cannot change the customer, partner or device, so the control is placed on the process that accepts their input: require a credential you can verify against a trust anchor you hold, bind it to a specific party, and be able to revoke it for that party alone. Anything that depends on the external entity behaving well — a secret URL, a promise not to share a key — is an assumption, not a control, and belongs in the model as an accepted risk.
  • How do you separate a spoofing threat from an elevation-of-privilege threat when both end with the attacker acting as an admin?
    Ask whether the system was wrong about the identity or wrong about the permissions. If the attacker presented a claim the system wrongly believed, it is Spoofing and the answer is authentication. If the system correctly identified the actor and still allowed an action beyond that actor's rights, identity was never in doubt and the answer is authorization. The distinction decides which control family you propose and usually which team owns the fix.
  • Can one process spoof another process on the same host, or is spoofing only a network concern?
    It happens locally too. Wherever a caller reaches a peer by a name, path or registered endpoint rather than by a verified credential, whatever holds that name at connect time gets the traffic — local sockets, IPC endpoints and service registrations all qualify. The modeling answer is the same as on a network flow: the caller must verify something bound to the peer's identity, and the host's own access controls on who may claim that endpoint become part of the argument.

A courier at the door is an external entity: you cannot fix the courier, so the control is a doorbell camera and a delivery code on your side of the door.

saying these in an interview costs you the question

  • Says spoofing just means stealing a password
  • Maps spoofing to authorization rather than authentication
  • Attaches a spoofing threat to a data flow or database
  • Claims encryption of the channel answers spoofing
  • Treats a source IP or a secret URL as an identity
  • Assumes an external entity can be fixed by hardening it

context