skip to content

Diagramming Pitfalls

Everything in one box, no boundaries drawn at all, a picture of the org chart rather than the data flow, or detail so fine the model drowns. Each failure tells a reviewer something different.

on this pageshow

questions

4

A data-flow diagram names every process and store but draws no trust boundaries — what do you conclude?

level: middleimportance: must knowfreq 72%

answer

  1. the fifth mark on the page
  2. trust level changes, not cable runs
  3. no crossing means nothing to enumerate
  4. one store, clinicians and a billing vendor
  5. one perimeter line is barely better

basics

~20 s

Conclude that threat enumeration has not started. A trust boundary marks where the privilege of whoever handles the data changes; with none drawn, every flow on the page looks equally trusted and there is nothing to analyse.

solid answer

~50 s

A trust boundary is not an element on a data-flow diagram, it is a line drawn across flows wherever the trust or privilege level of the handler changes. Threats concentrate at those crossings, so a diagram without them is a system drawing, not a threat model. Take a hospital scheduling portal: clinicians, a billing vendor's support staff and a research team all read one appointments database, and the page shows three arrows into one store with no line anywhere. What that hides is that the billing vendor's staff are a distinct principal with legitimate but narrower access to patient personal data — nobody has asked what they can read, alter or export. My conclusion is that the author drew what the system looks like rather than who trusts whom; the fix is to name the principal at each end of every flow before any threat is written.

go deeper

for a junior

Be ready to state what a trust boundary is in one sentence — a line where the privilege of the party handling the data changes — and to point at a diagram and say whether any are drawn.

for a middle

Explain why threats cluster at crossings and why an accurate system picture with no boundaries yields no threats. Expect to be handed a small diagram and asked to add the lines and justify each.

for a senior

Show that you can find the boundaries that do not follow the network: two consumers of one store, an internal privilege transition, a vendor with legitimate access. Say what you would ask the design team for before enumerating anything.

for a principal

Own the review standard. Decide what an acceptable model must show before it is worth a room's time, and be able to reject a topology drawing without implying the design is insecure — the artifact simply cannot support either verdict.

## The fifth mark on the page A data-flow diagram (DFD) uses four element types: **external entities** (people or systems outside your control), **processes** (code that acts on data), **data stores** (databases, object storage, queues, log files) and **data flows** (the arrows between them). The **trust boundary** is a fifth mark, and it is deliberately not an element — it is a line drawn *across* flows at every point where the level of trust or privilege of the party handling the data changes. That definition matters, because it is not the same as a network line. A boundary can sit inside one process (a request arriving from an unauthenticated caller versus one carrying a support agent's session), between two services in the same cluster, or between two readers of the same table. Conversely, a firewall in the deployment may separate two components that share exactly the same privilege — and there is no boundary there worth drawing. ## Why the missing line stops the analysis Threat enumeration works by walking the page and asking, at each element and each crossing, what an adversary standing there could do. Boundary crossings are where an adversary changes what they are able to reach, so they are where the interesting threats live: data arriving from a less-trusted side must be validated, data leaving to a less-trusted side must be filtered or authorised, and identity asserted across the line must be authenticated rather than assumed. Remove the boundaries and that walk has no structure. Every flow looks like every other flow, so the enumeration either produces nothing at all or produces the same generic sentence about each arrow. In the classic STRIDE-per-element mapping a process attracts all six categories while a data flow attracts tampering, information disclosure and denial of service — but which of those is *credible* depends entirely on who sits on the other end of the arrow, and that is exactly the fact the missing line withholds. ## The worked example A hospital scheduling portal is drawn with three reader groups — clinicians, a billing vendor's support staff, and a research team — each with an arrow into a single appointments-and-patients database, plus the portal process in the middle. It is an accurate picture of the deployment. It is not a threat model, because those three readers are three different principals with three different legitimate needs: | Principal | Legitimate need | What the undrawn boundary hides | |---|---|---| | Clinician | Full record for their own patients | Whether scope is enforced per patient or per role | | Billing vendor staff | Amounts, insurer, dates | Whether they can read clinical notes and identifiers too | | Research team | De-identified aggregates | Whether the export path re-identifies | Each arrow crosses a change in trust, and each crossing raises a different question about patient personal data. With the lines drawn, the analysis writes itself: what authenticates the vendor's staff, what limits their query, what is logged so a bulk read is attributable. With no lines, none of those questions has a place to attach. ## The half-drawn version, which is the more common defect More common than *no* boundary is exactly one boundary: a single line labelled "internet", with everything else inside it treated as one undifferentiated trusted zone. That model can only ever produce threats from an anonymous outsider. It structurally cannot represent the vendor's support staff, a misconfigured internal service, or a partner integration, because the diagram asserts that all of them are equally trusted. A reviewer should treat one perimeter line as barely better than none: it answers "where is the front door" and refuses every other question. ## What a reviewer says, and asks for The conclusion to state out loud is narrow and fair: this is a system diagram, and the threat-modeling step has not happened yet. It is not a claim that the design is insecure — it is a claim that the artifact cannot support that claim either way. The request that unblocks it is mechanical. For every flow, name the principal at each end and the credential that principal presents. Wherever those two ends differ, draw the line. Then re-walk the page; the threats that appear at the new crossings are the ones that were invisible five minutes earlier. ## A useful sanity check If the boundaries on a finished diagram trace exactly the network topology, the author probably drew network segments and relabelled them. Real boundaries usually cut across the topology in at least one place — inside a single service, or between two consumers of one store — and a diagram where they never do deserves a second look.

  • The author adds one boundary — a single line labelled 'internet' around everything else. Is that fixed?
    Barely. One perimeter line can only generate threats from an anonymous outsider; it asserts that everything inside is equally trusted, which is precisely the assumption I want tested. The billing vendor's staff, a partner integration and a misconfigured internal job all sit inside that line and remain unrepresentable. I would ask for boundaries between the principals that share the inside, starting with the ones that read the same store for different reasons.
  • Where exactly do you place the line when clinicians and a billing vendor read the same database?
    Across each flow, not around the store. The store holds one data set at one sensitivity, so the change in trust happens at the reader: the clinician's flow crosses one boundary, the vendor's flow crosses a different one with a narrower expected scope. Drawing it that way forces the question of what enforces the scope difference — a filtered view, a separate credential, row-level authorisation — instead of leaving it implicit.
  • Can a trust boundary sit inside a single process box?
    Yes, and it often should. A request handler that serves both an unauthenticated caller and an authenticated support session changes trust level internally, so the line is drawn inside the box or the box is split. Refusing to draw an internal boundary because the code deploys as one unit is how privilege transitions disappear from a model.

A floor plan of a hospital shows every room and corridor. It becomes a security drawing only when someone marks which doors need a badge, and whose badge.

saying these in an interview costs you the question

  • Says a trust boundary is just a firewall or subnet line
  • Draws only the internet perimeter and stops
  • Treats everything inside the cluster as one trust level
  • Says boundaries can be added after threats are listed
  • Assumes shared storage implies shared trust

context

open as a page

A threat model's boxes are 'Team Alpha', 'Team Bravo' and 'Platform' — what is wrong with it?

level: juniorimportance: should knowfreq 40%

basics

~20 s

The boxes are organisational units, not system elements. A data-flow diagram is decomposed by where data moves — external entities, processes, stores, flows — so an org chart leaves an adversary nowhere to stand and no boundary to draw.

open as a page

A 200-element data-flow diagram and a two-box 'monolith to database' one both fail review — why?

level: seniorimportance: should knowfreq 52%

basics

~20 s

Both defeat the walk. The 200-element page spreads a reviewer's attention evenly so boundary crossings vanish into noise; the two-box page hides every privilege change inside a box, so each threat comes out as an unactionable 'tamper with the monolith'.

open as a page

A data-flow diagram predates a move to three cloud regions and a mobile client — what can you still conclude?

level: principalimportance: nice to knowfreq 31%

basics

~20 s

Very little about security, and nothing by omission. The data classes and business flows probably still hold; every claim the page makes about boundaries, surface and the adversary set has expired, and absence from it proves nothing.

open as a page