In a parcel-locker threat model, 'more logging' is proposed against a spoofed-courier threat - how do you check a control answers the threat?
answer
- which property does it restore?
- prevent, or merely record?
- where on the flow is it enforced?
- re-run the attack, control assumed working
basics
~20 sAsk three things: does the control restore the property the threat violates, does it sit where the attack crosses the flow, and does the attack still complete once you assume it works. Logging fails the first - impersonation needs authentication.
solid answer
~50 sSpoofing violates authentication: someone who is not the courier convinces the locker to open. Audit logging is a detective control - it produces a record after the goods have gone - so it answers a different threat than the one it was booked against, and the row looks green while the attack still works. My check has three parts. First, name the property the threat violates and ask whether the control restores that property. Second, put the control at a point on the data flow and confirm the attack actually crosses that point. Third, and most useful in a live review, assume the control is built and working and narrate the attacker's path again; if they still reach the asset, whatever is left is the real residual. Logging still belongs in this design - just against threats to audit truth, not as the answer to impersonation at the door.
go deeper
Know the difference between stopping an act and recording it. A control that only produces a log entry has not turned the attacker away, whatever the mitigation column says.
Be able to take a proposed control, name the security property the threat violates, and say whether the control restores that property or a neighbouring one.
Demonstrate the re-run habit live: assume the control is built and working, narrate the attacker's path again, and state plainly what is still reachable and what is now a separate threat.
Be ready to argue where detective-only answers are acceptable - a real response path inside the detection window - and to refuse them where instantaneous, irreversible loss means the row is a documented gap dressed up as a mitigation.
## The failure being diagnosed The most common defect in the mitigation pass is not an empty row. It is a filled row that answers a neighbouring threat. Some control is genuinely useful, genuinely in the design, and genuinely records something about the incident - so it gets written next to a threat it does not close, and the model reports coverage it does not have. A parcel-locker network makes it concrete. The threat: an unauthenticated person presents themselves at the locker bank as the collecting courier and the locker opens, so the parcels and their value walk away. The attacker is anonymous and physically local; the asset is goods and the money they represent. The team writes 'add more logging' in the mitigation column. ## Check one: which property does it restore? Every threat is the violation of a security property. Impersonation of a party is a violation of authentication - the system accepted a claimed identity it should not have accepted. So the control that answers it must be one that decides identity better: a credential the real courier holds and an impostor does not, bound to the specific consignment, verified by the locker before it opens. Audit logging restores nothing about authentication. It restores the ability to say afterwards what happened - which is a real and valuable property, and the right answer to a different family of threats entirely. Booking it here is the classic wrong-neighbour mapping. A sharper way to say it: distinguish **preventive** controls, which stop the act, from **detective** controls, which observe it, and **corrective** ones, which undo or contain it. A detective control is an honest answer only when harm accrues slowly enough, or reverses easily enough, that a response inside the detection window actually helps. When the harm is instantaneous and physical - the door opens, the parcels leave - detection alone leaves the threat open, and saying so is the point of the check. ## Check two: where on the flow does it sit? The second failure is subtler, because the control family is right and only its position is wrong. Consider a business-to-business payments integration: your service sends payment instructions to a partner, and the modeled threat is tampering with instruction amounts and beneficiaries while the messages sit in the partner's queue, at the hands of a compromised operator or a compromised component inside the partner's estate. The proposal is 'encrypt in transit'. The family is right - this is an integrity concern and cryptography is the family that answers it - but transport security protects a hop and terminates when the message is received. Once the message is written to the partner's queue it is plaintext inside a system you do not control, which is precisely where the threat was placed. What answers it is integrity protection that survives the hop: sign each instruction at the point of authorization, carry the signature with the payload, and have the final consumer verify it before acting, so tampering anywhere in between is detectable and the instruction is rejected rather than executed. So the check is: draw the attacker's position on the flow, draw the control's enforcement point, and see whether the second is actually between the first and the asset. ## Check three: re-run the attack with the control assumed The habit that catches both failures, and several more, is to assume the control exists and works perfectly, then tell the attack story again out loud. 'The impostor arrives. The locker asks for a consignment credential. They do not have one. The door stays shut.' That narration either completes or it does not, and if it completes you have found a control that does not answer the threat, no matter how good the control is on its own terms. This also surfaces partial answers honestly. Perhaps the credential is a code shared with the courier company by email, and the impostor's route is to obtain that code. The narration now runs again through a different move, and that move is a threat in its own right that needs its own entry. ## What to do with the misplaced control Do not delete it. A control answering a neighbouring threat is usually still wanted - it is just filed wrong. Move the logging entry to the threats it does answer, such as disputes about whether a collection occurred and by whom. Then leave the impersonation row with an authentication-family entry, or leave it visibly uncovered, which is a far better outcome than a green row that lies. ## The habit to demonstrate In a review, ask of every mitigation entry: which property, at which point, and does the attack still complete? Three short questions, applied to a whole table, will find more real gaps than any amount of re-enumeration.
- A partner integration answers tampering-in-the-partner's-queue with transport encryption. What is wrong with that?Right family, wrong point on the flow. Transport security protects one hop and terminates on receipt, so the message sits in plaintext inside the partner's queue - exactly where the threat was placed. The answer is integrity protection that survives the hop: sign each instruction where it is authorized and have the final consumer verify the signature before acting, so tampering in between causes rejection rather than execution.
- When is a detective-only control an honest answer to a threat?When the harm accrues slowly or reverses cheaply, and there is a defined response inside the detection window. A reconciliation job that catches and reverses a bad transfer within hours genuinely answers the threat. If nobody acts on the signal, or the loss is instantaneous and physical like parcels leaving a locker, detection is a record of the incident, not a mitigation, and the row should say so.
- What do you do with a control that turns out to answer a neighbouring threat?Move it, do not delete it. It is usually a wanted control filed against the wrong row - logging belongs against disputes about whether a collection happened, not against impersonation at the door. Then leave the original row with a control from the right family, or leave it visibly uncovered. An honestly empty row is far more useful than a green one that is wrong.
- How do you keep this check from becoming a debate about wording?Force it into narration. Assume the control is built and working, then tell the attack story again in order: the attacker's position, each step, the asset. Either the story completes or it stops at the control. That is a factual question about the design rather than an argument about whether a control sounds strong enough.
A smoke alarm and a sprinkler both answer fire, but only one of them puts it out. Writing the alarm next to the burning-building threat still leaves the building burning - it just makes sure you know.
saying these in an interview costs you the question
- Counts audit logging as a mitigation for impersonation
- Confuses detecting an act with preventing it
- Assumes transport encryption protects data after the hop ends
- Never re-runs the attack with the control assumed in place
- Marks a threat mitigated because the row is non-empty
- Deletes a misfiled control instead of moving it to the right threat