skip to content

From Flaw to Weapon

A disclosed flaw, a crashing proof of concept, a reliable exploit and packaged tooling are four states landing on four different dates. Interviewers probe which one actually changed your exposure.

on this pageshow

explore

questions

16

A flaw requires a valid account to exploit. Why is that not a reason to call it low risk?

level: juniorimportance: must knowfreq 62%

answer

  1. position in an intrusion, not difficulty
  2. who already holds that position?
  3. count the population, not the steps
  4. authenticated is not the same as trusted
  5. self-service signup collapses the distinction

basics

~10 s

A precondition says where in an intrusion a flaw becomes usable, not how hard the attack is. Accounts are widely held and cheap to obtain, so "authenticated only" excludes almost no adversary.

solid answer

~50 s

A precondition is a position, not a barrier. "Requires a valid account" tells you the flaw is usable from the moment someone has any account, which places it just after initial access rather than out of reach. The next question is always who already holds that position: every employee and contractor, every self-service signup on a multi-tenant product, every service account whose password sits in a repository, and anyone who buys or phishes a working credential. On a product where anyone with an email address can register, "authenticated" is functionally the same audience as "unauthenticated". What the precondition genuinely changes is the actor set and the shape of the attack, because it forces a preceding step; it does not make the flaw unreachable. Ranking a backlog by how many preconditions each entry lists is the mistake this question is testing for.

go deeper

for a junior

Be ready to say what a precondition is and to give the population test in one line: who already has an account here? Do not equate 'needs authentication' with 'hard to reach'.

for a middle

Explain why the same wording carries different weight on a self-service multi-tenant product than on a hand-provisioned internal tool, and name the concrete ways an attacker obtains a working credential.

for a senior

Show that you rate chains rather than rows, and that you can spot the pair where an unauthenticated finding supplies the account that an authenticated finding needs.

for a principal

Own the consequence for how a whole programme sorts work: any ranking driven by advisory wording rather than by who holds the position will misorder the backlog consistently, not occasionally.

## What a precondition actually is A precondition is the state of the world that must already hold before an exploit's first instruction runs. The common ones are short and familiar: the attacker needs an account on the system, needs to be running code on the host already, needs a person to click something, or needs to be on the same network segment as the target. There are two ways to read that list, and only one of them is right. **The wrong reading is a difficulty scale.** Under this reading, preconditions are obstacles stacked in front of the flaw: three preconditions is harder than one, and harder means lower risk. This produces the classic backlog sorted by precondition count, where "unauthenticated, no interaction" floats to the top and "authenticated, local" sinks whether or not anyone has checked what those words mean in this particular estate. **The right reading is a coordinate.** A precondition names the stage of an intrusion at which the flaw becomes usable. "Requires a valid account" does not say the attack is hard; it says the flaw belongs to the phase after initial access. Since initial access is a thing adversaries do routinely, for a living, all day, that placement is a description of *when* the flaw pays out, not a claim that it never will. ## The population test The test that converts the coordinate into a real judgment is a single question: **who already holds this position?** Enumerate them honestly: - Every employee and every contractor with a directory account. - Every customer, if the product is multi-tenant and self-service. On a system anyone can sign up for with a credit card or a free trial, "requires authentication" describes the entire internet with one extra minute of work. - Every service account, including the ones whose credentials are checked into a repository or baked into an image. - Anyone holding a credential obtained by phishing, by reuse against a breach corpus, or by purchase. Working credentials are among the cheapest things an adversary can acquire, which is precisely why credential theft is such a large share of real intrusions. - Anyone holding a live session or token, which is not the same population as "people who know a password". If that enumeration returns thousands of principals, the precondition is not a barrier. It is a formality, and the honest severity of the flaw is close to what it would be with no precondition at all. ## Authenticated is not trusted A related confusion sits underneath the wrong reading: treating "authenticated" as a synonym for "an insider we vetted". Authentication proves that a credential was accepted. It does not prove who presented it, and on a self-service product it does not even imply an employment relationship. A flaw reachable by any authenticated principal on a multi-tenant system is reachable by any attacker willing to become a tenant. ## What the precondition does legitimately tell you It is not noise. Read as a position, it tells you three useful things: 1. **Which actors can use it.** A flaw needing physical presence in a locked facility genuinely does exclude most of the world. A flaw needing an account excludes almost nobody on a public product and quite a lot of people on an air-gapped one with four operators. The same wording carries different weight in different estates, which is the whole point. 2. **The shape of the attack.** A required preceding step means the technique cannot be fully self-driving; something has to supply the position first. That constrains how the attack composes with others. 3. **Where a chain can be cut.** Choosing the control class that removes a precondition is a separate discipline with its own substitution test, and it is not this question, but the precondition is the input to it. ## Preconditions compose, so ranking in isolation hides chains The most expensive version of the mistake is rating each entry alone. An unauthenticated flaw that yields a low-privilege account is often rated moderate because it grants "only" a weak account. An authenticated flaw that yields administrative control is rated moderate because it "needs an account". Chained, they are one unauthenticated path to administrative control, and no single row in the list says so. Preconditions are the joints where findings snap together; a list sorted by precondition count is exactly the list that makes those joints invisible. ## Saying it in an interview The answer an interviewer is listening for is the reframe plus the test: a precondition is a position in the intrusion rather than a barrier in front of it, so name the population that already occupies that position, and let the size of that population drive the judgment. Then add the honest caveat, which is that preconditions do matter in estates where the position is genuinely scarce, and that telling those two cases apart is the actual skill.

  • Where would 'requires a valid account' genuinely be a strong precondition?
    Where the population holding an account is small, vetted and not remotely reachable: an isolated control system with four named operators, or an internal tool whose accounts are issued by hand and cannot be self-served. The test is the same one; it simply returns a small number. That is why the answer is an enumeration rather than a rule of thumb about the word 'authenticated'.
  • Two findings each look moderate: one gives an unauthenticated attacker a low-privilege account, the other needs any account and gives admin. How do you rate them?
    Together, as one unauthenticated path to admin. The first supplies exactly the precondition the second needs, so the pair is worth far more than either row suggests. Rating entries in isolation systematically hides this, because the precondition is the joint where they connect. When you fix, breaking either link breaks the chain, which is often the cheaper of the two.
  • A peer sorts the backlog by how many preconditions each finding lists. What is the one sentence that shows the flaw in that method?
    Precondition count measures the wording of the advisory, not the reachability of the position in your estate. Three preconditions that your own architecture hands out for free rank below one precondition nobody can satisfy, and the sort has no way to see that. Sort by who already holds the position instead.

A precondition is a postcode, not a lock. It tells you where the flaw lives in the attack, and you still have to ask how many people already live there.

saying these in an interview costs you the question

  • Ranks findings by how many preconditions the advisory lists
  • Treats authenticated as meaning vetted employee only
  • Assumes an account can only be obtained by cracking a password
  • Calls a precondition a barrier the attacker must break through
  • Rates each finding alone and misses that one supplies the other's precondition

context

open as a page

Why can a missing server-side permission check be attacked with no exploit code at all?

level: juniorimportance: must knowfreq 70%

basics

~20 s

Because the attack is an ordinary, well-formed request. If the server never checks who owns the record, any account holder simply asks for someone else's identifier and is served it. Nothing is malformed, so nothing needs exploiting.

open as a page

A public proof of concept for a vulnerability only crashes the service - what has changed about your exposure?

level: juniorimportance: must knowfreq 78%

basics

~20 s

A crash proves the flaw is reachable, not that anyone can control your system. Vulnerability, working exploit and packaged tooling are three separate states with three separate dates, and only the last two widen who can attack you.

open as a page

What does calling a vulnerability a 'zero-day' actually assert about it?

level: juniorimportance: must knowfreq 76%

basics

~20 s

Zero-day is a patch state, not a quality grade. It asserts only that no vendor fix existed at the moment the flaw was used. It says nothing about the bug's elegance, the attacker's skill, or whether the attack was unstoppable.

open as a page

A flaw needs local execution on a CI runner. What does a fork pull-request build do to that precondition?

level: middleimportance: should knowfreq 44%

basics

~20 s

It hands the precondition away for free. Running contributor-authored build content is the runner's job, so anyone who can open a pull request already has local execution, and the flaw moves from post-compromise to initial access.

open as a page

Why does a memory-safety defect often stop at a crash rather than reach code execution?

level: middleimportance: should knowfreq 50%

basics

~20 s

A crash proves memory was corrupted, not that the corruption can be steered. Reaching execution needs a controlled write or read primitive plus defeat of non-executable data pages, address randomisation, stack cookies and control-flow integrity. Many defects never get there.

open as a page

When a reliable exploit is packaged into a public exploitation framework, what changes about who can attack you?

level: middleimportance: should knowfreq 60%

basics

~20 s

Capability does not change; audience does. Anyone able to write or drive the exploit could already attack you. Packaging removes the skill and time cost, so the population that can try it grows from a handful of operators to effectively everyone.

open as a page

Your renderer's vendor shipped a fix this morning — why can the number of capable attackers rise?

level: middleimportance: should knowfreq 55%

basics

~20 s

The shipped fix is a description of the bug. Comparing the corrected code with the previous version localises the defect and often reveals the missing check, so people who could never have found it can now trigger it — while your machines still run the old code until each application restarts.

open as a page

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

level: seniorimportance: should knowfreq 38%

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.

open as a page

A team says "we are fully patched, so we are fine" — what does patch level not cover?

level: seniorimportance: should knowfreq 58%

basics

~20 s

Patch level is a claim about third-party code someone else shipped a fix for. It says nothing about first-party authorization decisions, identifiers accepted as entitlement, workflow logic or configuration — flaws that never carry a version number at all.

open as a page

Your Kubernetes nodes run untrusted tenant workloads and a container-escape exploit just became reliable - what changed?

level: seniorimportance: should knowfreq 44%

basics

~20 s

Every tenant already holds the escape's only entry condition: code in a pod. Reliability turns a crash into repeatable takeover of the node and every workload on it, so this rung moves you far more than a single-tenant estate.

open as a page

An executive is told 'it was a zero-day, so nothing would have stopped it' — what do you fund?

level: principalimportance: should knowfreq 41%

basics

~20 s

First test the sentence: was a fix available on the day? Most such claims turn out to be n-day, where money spent shortening the gap between a fix existing and running pays off. If the claim holds, fund that shorter clock anyway and record the remainder as accepted residual risk.

open as a page

A state operator holds an unfixed exploit for your fleet's document renderer — why use it on one person?

level: middleimportance: nice to knowfreq 38%

basics

~20 s

An unfixed exploit is a wasting asset. Every use puts a copy somewhere the operator does not control, and one recovery leads to a fix that destroys its value everywhere at once. Broad use burns it fast, so it is spent narrowly.

open as a page

Why would a reliable hypervisor escape stay unpublished and unpackaged for years?

level: seniorimportance: nice to knowfreq 28%

basics

~20 s

Because publishing destroys most of its value. A working escape from a guest virtual machine is one of the most expensive capabilities to build or buy, so the holder keeps it private. The ladder tracks availability, not existence.

open as a page

Your fix policy gives "authenticated only" flaws 90 days and unauthenticated ones 7 — would you defend that split or change it?

level: principalimportance: nice to knowfreq 26%

basics

~20 s

Defensible only if the classes track a position your estate does not hand out. Re-cut the boundary from advisory wording to who already holds the position, add chain and population escalation clauses, and keep a window on every class.

open as a page

A guessable cross-tenant report identifier or a critical parser memory bug — which gets the one remediation slot you can fund this quarter against commodity criminals?

level: principalimportance: nice to knowfreq 30%

basics

~20 s

Fund the identifier. It is usable on reading by every account holder, so a crew with no exploit-development budget can use it today, while converting the parser defect needs funded research they would have to buy. Severity ranks impact, not distance.

open as a page