skip to content

Where does spoofing sit on a flow where a ward terminal reaches its formulary service by hostname alone, and what closes it?

level: seniorimportance: should knowfreq 56%

answer

  1. which end of the arrow is unproven
  2. name resolution answers where, not who
  3. encryption is the wrong property here
  4. verify against an anchor you carry
  5. one-way proves exactly one end

basics

~20 s

The threat is a spoofed server: anything on the hospital network that answers to that hostname can feed the terminal dosing data. A resolved name is not an identity, so the terminal must verify a credential cryptographically bound to the expected name against a trust anchor it carries.

solid answer

~50 s

Spoofing sits on the callee end of that flow. The terminal decides who it is talking to by resolving a name on a network it shares with everyone else on site, so whatever answers to that name gets to be the formulary service — and the asset at stake is not customer data, it is the safety of a physical dispensing decision. The fix family is authentication of the server: the terminal must verify a credential bound to the expected name, checked against a trust anchor it ships with, and must fail closed when verification fails. Two traps to call out. Encrypting the channel does not help, because a confidential session with an impostor is still an impostor. And this is one-way only: if the service also acts on what the terminal sends — overrides, refill requests — the caller end is unauthenticated too, and that direction needs its own control.

go deeper

for a junior

Be ready to say that a hostname only tells the client where to send traffic, and that something must prove it is really the intended service before the client trusts the answer.

for a middle

Explain the mechanics: the client checks a credential bound to the expected name against a trust anchor it holds, and refuses the connection on failure. Say clearly why an encrypted channel to an impostor is still an impostor.

for a senior

Demonstrate the walk. Take each end of the arrow, say what is proven and what is assumed, name the trust anchor, ask what happens on verification failure, and decide whether the reverse direction needs proving because of what the callee does with the input.

for a principal

Own the boundary argument itself: whether the shared site network counts as trusted is a written decision with a name against it, not a habit. Set the rule that one-way stays acceptable only for flows with no state-changing effect.

## Reading the flow The diagram has an external-facing process (the formulary service), a client process on a terminal inside a ward, and an arrow between them crossing a trust boundary — the hospital LAN, which is shared with printers, contractors' laptops, medical devices and anyone who reaches a network port in a corridor. The terminal's only statement about who it is talking to is a hostname. STRIDE walks the arrow's ends. The callee end carries **Spoofing**: something other than the formulary service can be what answers. The asset is not a database of records — it is the correctness of a dispensing decision, which makes the impact a safety and integrity impact rather than a privacy one, and that reframing usually changes the priority of the finding. ## Why a name is not an identity Name resolution answers the question *where do I send the bytes*. It does not answer *who is on the other end*. On a network segment you do not fully control, the party that manages to answer to a name is the party the client will talk to, and the client has no way to notice — the response looks exactly like a valid response, because there is nothing in it to check. That is the whole finding, and you can state it without naming any particular network technique: **the client accepts an answer from whoever holds the name, and the model must not assume the network decides identity honestly.** The corollary is the trust-boundary rule of thumb: if you would not accept the flow from an arbitrary machine on that segment, then the segment is not inside your boundary, and the boundary must be enforced by something the client verifies rather than by where the wire runs. ## What actually closes it The answering family is **server authentication**: the terminal verifies a credential that is cryptographically bound to the expected service name, chained to a trust anchor the terminal carries rather than one supplied by the network, and it refuses the connection when verification fails. Three details do the real work in a review: 1. **Verification, not encryption.** A channel can be encrypted and still terminate at an impostor. Confidentiality answers Information Disclosure; only verification answers Spoofing. "We use TLS" is not a mitigation until someone says what the client validates and what happens when validation fails. 2. **The trust anchor is part of the model.** If the terminal will accept anything signed by any anchor in a broad, unmanaged trust store, the anchor set becomes the attack surface. A device with a narrow, pinned or organisation-controlled anchor set has a much stronger claim. 3. **Fail closed.** A client that falls back to an unverified connection when verification fails has a control that any attacker can switch off by causing a failure. ## The other direction, and the other shape One-way authentication proves exactly one end. Ask what the service does with what the terminal sends. If it only serves read-only lookups, the caller end may genuinely not need proving, and saying so explicitly is a legitimate modeling decision. If the service accepts an override, a refill or anything that changes state, then the caller end is unauthenticated and carries its own spoofing threat — anything on the LAN can also pose as a ward terminal. That is when the answer becomes **mutual authentication**, both ends proving an identity to the other. The mirror-image shape is worth recognising because it looks different and is the same threat: an inbound callback whose only protection is an unguessable URL — for example a carrier posting shipment-delivered events that release a payment. Here the receiver, not the caller, is the one with no verifiable claim, and the attacker is any anonymous party on the internet who learns the URL rather than someone on the local network. A URL is not an identity: it cannot be attributed to one sender, cannot be scoped to what that sender may assert, and cannot be revoked for one caller without breaking all of them. It is a secret in the same sense a shared password is, and it leaks the same ways — logs, referrers, browser history, screenshots, a support ticket. ## Weak answers to expect and to reject - *"It is an internal network."* That claims a trust boundary exists where the diagram shows one does not. Make it explicit and see whether anyone will sign it. - *"We allowlist the terminal's address."* An address is a routing locator that the network assigns; it is an obstacle, not an identity claim you can verify, attribute or revoke. - *"The traffic is encrypted."* See above: the wrong property. - *"The device is physically inside a controlled ward."* Physical control of one endpoint says nothing about the other end of the flow. ## Writing the finding A usable entry names the element, the claim and the consequence: *Threat: the terminal accepts formulary responses from any host answering the service name on the ward network (Spoofing, callee end). Impact: falsified dosing data reaches a dispensing decision. Control: verify a service credential bound to the expected name against a device-held trust anchor, fail closed. Open question: does the service accept state-changing calls, and if so does the caller end need proving too?* That last line is what turns a category into a design conversation.

  • The service also accepts dispensing overrides from the terminal. Does one-way authentication still suffice?
    No. One-way authentication proves the server to the client and tells the server nothing about the caller, so anything that can reach the endpoint can submit an override while looking like a ward terminal. Once the callee acts on state-changing input, the caller end carries its own spoofing threat and the answer becomes mutual authentication, with a per-terminal identity so the service can attribute and revoke. If read-only lookups are all that flow, one-way is a defensible decision — but write it down as a decision.
  • The team proposes allowlisting the terminal's network address instead. Why is that not authentication?
    An address is a routing locator handed out by the network, not a claim the receiver can verify, attribute or revoke. Anything that can occupy or emit from that address inherits the trust, and there is no cryptographic binding between the address and the device. It can be a useful reduction of exposure — fewer parties can even reach the port — so record it as a defence-in-depth measure, not as the control that answers the spoofing threat.
  • Same threat category, different shape: an inbound callback protected only by an unguessable URL. What do you tell the team?
    That knowledge of a URL is a shared secret, not an identity. It cannot be attributed to one sender, cannot be scoped to what that sender is allowed to assert, and cannot be revoked for one caller without breaking every caller — and it leaks through logs, referrers and support tickets. If acting on the callback moves money or state, the receiver needs a verifiable per-sender credential, and the callback should be treated as a hint to go and confirm the fact from the source rather than as the fact itself.
  • How do you rate this finding when the asset is a dispensing decision rather than records?
    State the impact in the domain's terms: falsified data reaching a decision that affects a patient, not rows exposed. That usually moves it above findings with larger data volumes, because the consequence is safety and integrity rather than confidentiality, and it is the framing clinical and safety stakeholders can actually act on. Keep the technical control separate from the rating so a debate about severity does not stall agreement on what the fix is.

Dialing a number written on a corridor poster gets you whoever picked up that number today; only a code you both agreed in advance tells you it is the pharmacy.

saying these in an interview costs you the question

  • Says TLS is enabled so spoofing is handled
  • Treats a hostname or IP address as an identity
  • Assumes the internal network is a trust boundary
  • Proposes encrypting the channel to stop impersonation
  • Believes one-way authentication proves both ends
  • Accepts a client that falls back to an unverified connection

context