skip to content

Attacker Cost Attributes

Each leaf gets annotated with money, skill, elapsed time, required access, equipment and how likely the step is to be noticed. Interviewers press on where those estimates actually come from.

on this pageshow

questions

3

On an attack tree, what attributes besides cost annotate a node, and why keep them separate?

level: middleimportance: must knowfreq 46%

answer

  1. one number hides too much
  2. several currencies, not one
  3. cash, skill, time, access, equipment, detectability
  4. cheap device, rare skill
  5. some attributes have no price

basics

~20 s

Annotate each leaf with independent attributes: money, skill level, elapsed time, required access, equipment and detectability. Collapsing them into one number hides that a step can be cheap in cash yet demand rare skill or insider access nobody can buy.

solid answer

~50 s

A node annotation is not one number, it is a small fixed vector. The attributes I use are monetary cost, skill level, elapsed time, required access or position, equipment, and detectability, and I keep them separate because they move independently. Cloning a hotel room-lock credential in a corridor is a cheap handheld device plus rare protocol skill plus two minutes of physical presence — a single "low cost" tag would tell a reader the wrong thing about why that branch is rare, and about what changes if someone publishes a tool. Some attributes have no honest cash equivalent at all: a cold-wallet withdrawal needing three of five signers is annotated "required access: three colluding signers", because the third signer is not priced like the first and may be unbuyable. I also mark unknown explicitly rather than writing zero, since zero reads as free.

go deeper

for a junior

Be ready to name the attributes an attack-tree node can carry — money, skill, time, required access, equipment, detectability — and to say that they are recorded separately rather than merged.

for a middle

Explain why the attributes are independent with a concrete case: cheap equipment paired with rare skill, or a step that costs nothing but takes months. Also explain why unknown must not be written as zero.

for a senior

Show judgment about which attribute actually gates a branch in a real design, and what that implies for the control you would propose. Expect to defend annotating required access as a position rather than a price.

for a principal

Own the choice of the programme-wide attribute set and its scales, so trees from different teams stay comparable, and decide which attributes get re-reviewed on a schedule because they decay — skill above all.

## What an annotation is An attack tree decomposes an attacker goal into the steps that achieve it, with leaves that are concrete actions. An **annotation** is a value written onto a node describing what that action demands of the attacker. The mistake people make on their first tree is to write one value — usually dollars — as if attacker effort had a single currency. It does not, and the reason to annotate at all is to support a comparison between branches that only survives if the annotation keeps the shape of the difficulty. ## The working attribute set A practical set, small enough to be filled in consistently: | Attribute | What it records | |---|---| | Monetary cost | Cash the attacker must spend: hardware, a purchased service, a bribe | | Skill level | Rarity of the expertise required, not hours worked | | Elapsed time | Wall-clock time from starting the step to holding its result | | Required access | The position the attacker must already occupy: on the local network, an authenticated low-privilege tenant, an employee with a caseload, N colluding insiders | | Equipment | Specialised kit that is not simply bought with money — restricted, bulky, or export-controlled | | Detectability | How likely the defender notices, and whether before or only after the step completes | Teams sometimes add legal or physical risk to the attacker, and repeatability (works once versus works at scale). Whatever the set, fix it for the whole programme so two trees can be read side by side. ## Why the attributes must not be collapsed **Equipment and skill move independently.** Consider a hotel chain's tree, branch "clone a guest room credential in the corridor". The equipment may be an inexpensive handheld device; the skill to use it against that particular lock protocol is rare; required access is two unobserved minutes outside a door; detectability at the moment of use is close to nil. Write "cost: low" and you have told the reader something false about why this branch has not been exploited at scale — the scarce ingredient is skill. That matters because skill is the attribute with the shortest half-life: the day someone packages the technique into a point-and-click tool, the skill annotation collapses while every other value on the node is unchanged. Attributes you have kept separate can be revised separately. **Required access has no linear price.** A crypto exchange moves funds from cold storage only with three of five signer approvals. The branch "obtain three signer approvals by collusion or coercion" is not usefully annotated "$2,000,000". The second signer costs more than the first because each recruitment raises the chance of exposure, and at least one signer may refuse at any price. "Required access: 3 of 5 distinct signers, concurrently; elapsed time: months; detectability: rises with each approach" tells a reviewer what to do about it — split the quorum across jurisdictions, or add an out-of-band delay — which a dollar figure never would. **Time is not money here.** Elapsed time constrains the attacker against your rotation schedules, expiry windows and audit cycles, and it is what a slow branch trades away to buy stealth. A step that costs nothing and takes nine months is a very different threat from one that costs a little and takes an afternoon. ## Filling values in honestly - **Unknown is not zero.** Zero means free, and a reader will treat it that way. Write "unknown" and treat it as a research task; a tree with three unknowns on one branch is itself a finding. - **Annotate leaves first.** Concrete actions are the only things anyone can estimate; interior nodes get their values from their children. - **Record the basis.** A value someone can trace to a red-team's actual hours is worth arguing about; one with no provenance quietly becomes fact. - **Keep the scale consistent per attribute.** Skill in three or four named bands, elapsed time in orders of magnitude (hours / days / months), required access as a named position rather than a score. ## Common failure modes Averaging the attributes into one index, which destroys exactly the information the vector was carrying. Treating equipment and money as the same column, so restricted kit looks purchasable. Annotating only the root, where no one can check anything. Assuming money substitutes for every other attribute — it buys equipment reliably, skill slowly, insider position sometimes, and elapsed time almost never.

  • Name an attribute where a dollar figure is actively misleading.
    Required access. A branch needing three of five signers to collude is not a linear purchase: each additional recruit costs more than the last because exposure risk compounds, and one may refuse at any price. Writing a cash figure invites the reader to assume a well-funded attacker simply pays it, when the real defence is structural — split the quorum, or add a delay window that gives the defender time to see it.
  • How do you annotate an attribute you have no estimate for?
    Explicitly as unknown, never as zero and never as a placeholder average. Zero reads as free and silently makes the branch look cheapest; a fabricated middle value is worse because it looks considered. Unknown is a legitimate output — it marks the node as the next thing to research or red-team, and reviewers can see that the branch has not really been assessed.
  • Should every tree in a programme use the same attribute set?
    Yes, with rare additions. The point of annotating is comparison, and comparison fails if one tree costs in dollars and skill while another uses time and detectability. Fix a small set — six is plenty — define each attribute's scale once, and let a team add an attribute only when a whole domain needs it, such as physical risk to the attacker in a facility tree.

Costing a node in dollars alone is like describing a mountain route by its distance: it says nothing about the weather window, the gear, or whether you need a permit only three people hold.

saying these in an interview costs you the question

  • Reduces every node to a single dollar figure
  • Treats skill and equipment as one attribute
  • Writes zero for an attribute nobody estimated
  • Assumes money substitutes for insider access or time
  • Annotates only the root goal, not the leaves
  • Averages the attributes into one index score

context

open as a page

Two attack-tree branches reach the same HR records — one bulk export, one 400 single lookups. Which annotations separate them?

level: seniorimportance: should knowfreq 40%

basics

~20 s

Detectability and elapsed time. For a caseworker with legitimate access, cost, skill, equipment and required access are near identical on both branches; the slow branch trades months of wall-clock time for a much lower chance of being noticed.

open as a page

Your team's attack-tree nodes carry point costs like $180,000 that nobody can source. What do you change?

level: principalimportance: nice to knowfreq 31%

basics

~20 s

Replace unsourceable point figures with a few named qualitative bands and record where each value came from. A precise-looking number nobody can trace survives review because it has digits, and it makes a guess look like evidence.

open as a page