skip to content

You set aside a flaw because it "requires a user to click". What have you just claimed?

level: seniorimportance: should knowfreq 38%

answer

  1. write the dismissal as a sentence
  2. population, actor set, window
  3. the action is something people do daily
  4. honest downgrade is not wormable
  5. turns a severity argument into an estate question

basics

~20 s

You have claimed that nobody in the reachable population will perform an ordinary action once during the flaw's remaining life, while anyone who can contact them may ask. Written out, that claim is usually false.

solid answer

~50 s

Setting a precondition aside is an assertion, so write it as one: "no one of the N people in scope will take this action during the W days before the fix ships, although any of the actors who can reach them may ask them to." The action is normally something people do dozens of times a day, the actor set for anything reachable by mail is unbounded, and W is often months. Once stated that way the dismissal is falsifiable, and the argument moves from severity opinions to a checkable question about your own estate. What a user-interaction requirement honestly buys you is different and narrower: the attacker loses timing control and self-propagation, so the correct downgrade is "not wormable" rather than "not a real risk". Run the same audit on "needs an account", "needs local execution" and "needs adjacency" and most of those claims fail too.

code

text · 11 lines
text
Written in the ticket            The claim it commits you to
-------------------------------  ------------------------------------------
"needs a valid account"       ->  none of 5,200 staff + 300 contractor
                                  accounts is ever an adversary's
"needs local execution on the ->  nobody who can open a pull request counts,
 build runner"                    though every fork build executes there
"adjacent network only"       ->  no untrusted device sits on the build VLAN,
                                  which also carries the laptop fleet
"requires a user to click"    ->  none of 5,200 mailboxes clicks once in the
                                  90 days before the fix ships
...

go deeper

for a junior

Know that setting a finding aside because it needs a click is a claim about people, and be able to name the three parts of that claim: how many people, who can reach them, for how long.

for a middle

Explain what a user-interaction requirement genuinely removes, namely self-propagation and timing control, and why that is a narrower downgrade than 'not a real risk'.

for a senior

Show you can run the audit live in a triage argument, convert a colleague's ranking into stated claims, and identify which of those claims your own estate has already falsified.

for a principal

Own the discipline as a norm rather than a trick: dismissals in your programme should be recorded as falsifiable statements about the estate, so they can be rechecked when the estate changes.

## The commitment audit Every time a precondition is used to set a finding aside, an assertion about the world has been made silently. The audit is the habit of writing it down in full, with three parts that the shorthand always omits: 1. **The population.** How many principals could satisfy the precondition. 2. **The actor set.** Who can reach that population and ask. 3. **The window.** How long the flaw remains unfixed. "Requires user interaction" becomes: *I claim that none of the 5,200 people who receive external mail will open an attachment, approve a prompt or follow a link during the 90 days before this ships, even though anyone on the internet who knows an address format can ask each of them to.* Nobody defends that sentence out loud. That is the point of writing it: the dismissal survives only while it stays implicit. ## Why the claim usually fails Three properties make user interaction a weak barrier in most estates: - **The required action is ordinary.** Opening a document, approving an authentication prompt, following a link in a message that looks like the twenty legitimate ones received that morning. A precondition that asks the target to do their job is not much of a precondition. - **The actor set is unbounded.** Anything reachable by mail, chat federation, a support portal or a public contact form can be reached by anyone. Unlike an account or a network segment, you cannot enumerate the people who can attempt it. - **The window is long and the attempts are cheap.** The claim is not that a given attempt fails; it is that every attempt across the whole population and the whole window fails. A precondition satisfied by one success in thousands is satisfied. ## What user interaction genuinely buys you The audit is not an argument that preconditions never matter. A required human step really does change the attack, just not in the direction the dismissal assumed: - **No self-propagation.** A technique that needs a person cannot spread by itself. This is the single most important honest downgrade available: it is the difference between something that touches machines at the speed of a network and something that advances at the speed of people reading messages. - **No timing control.** The attacker cannot choose the moment. That matters for anything time-sensitive, such as a step that has to land inside a maintenance window or before a credential rotates. - **An extra failure point.** The step can simply not happen, which lowers the yield of any single attempt without bounding the total across many. So the correct sentence is "this is not wormable and the attacker does not control timing", which is defensible, rather than "this needs a click, so it is low", which is not. ## The audit generalises to every precondition Run the same three-part rewrite on the others and the pattern holds: - *Needs an account:* I claim no adversary will hold any of the accounts we have issued, including contractor accounts and self-service registrations. - *Needs local execution on a host of this class:* I claim no adversary will run code on that host class, even where running submitted content is what the host is for. - *Needs network adjacency:* I claim no untrusted device sits on that segment, even though the segment's membership is a floor-plan decision made years ago. Most of these are already falsified by facts you can look up in your own estate. That is the value of the exercise: it turns a severity argument, which is an exchange of intuitions, into an estate question, which has an answer. ## Where the claim is legitimately true Preconditions are sometimes genuine barriers, and pretending otherwise is its own failure. On an isolated system with four named operators, no external messaging path and physical access control, "requires a user to click" has a population of four, an actor set that is nearly empty, and a window you control. The claim is true, and setting the finding aside is correct. The audit is how you tell that case apart from the 5,200-mailbox case, and the two look identical in a spreadsheet column that says only "user interaction required". ## Saying it to the peer who ranked by precondition count The useful move in that conversation is not to argue that their ranking is too generous. It is to ask them to read their own ranking out loud in claim form. "Three preconditions, so low" becomes three assertions about populations, actor sets and windows, and at least one of them will be a statement about the estate that somebody in the room can immediately correct. The conversation stops being about how severe things feel and becomes a series of checks, which is the only version of it that converges.

  • What is the defensible version of downgrading a user-interaction flaw?
    State the two things the requirement actually removes: self-propagation and attacker control of timing. "This cannot spread on its own and the attacker cannot choose the moment" is checkable and true. It does not license "low risk", because a single success anywhere in the reachable population over the whole window satisfies the precondition.
  • Your peer says the audit is just rhetoric, since every finding sounds bad once you write it as a claim about thousands of people. How do you answer?
    By running it on a case where the claim holds. On an isolated system with four operators and no external messaging path, the sentence comes out true and the dismissal stands. The audit is a discriminator, not an amplifier: it produces different answers for different estates, which is exactly what a precondition count cannot do.
  • How does the window term change the audit?
    It converts a per-attempt intuition into a cumulative one. People reason about whether one message would fool them; the claim is about every message to every recipient across months. Shortening the window is therefore a real way to make the claim true, and it is the one lever the audit shows you that a severity label never does.

saying these in an interview costs you the question

  • Treats one user's alertness as evidence about the whole population
  • Says user interaction makes a flaw not exploitable rather than not self-propagating
  • Leaves the dismissal implicit instead of stating the population and window
  • Assumes the actor set for a mail-reachable target can be enumerated
  • Applies the audit as if every precondition always fails it

context