Part 3 of 4 · 2 min read
Exercises
Easy
Easy 1: Run it (30 minutes)
Run python -m pytest -q and python run_all.py in code/mini-threats.
Done when: you report the threat count and the three flagged flows.
Easy 2: Draw your own (30 minutes)
Draw the data-flow diagram of an agent you know with trust boundaries.
Done when: every flow crossing a boundary is labelled with its control or "none".
Easy 3: Change a number (30 minutes)
Change the probability that the model obeys from 0.3 to 0.9.
Done when: you report the new goal probability and say which path dominates.
Hint
path 1 probability is the product of its four leaves.
Medium
Medium 1: Egress rule (3 hours)
Add a check for flows from a sensitive node to an untrusted destination.
Done when: the email flow is flagged before and cleared after an approval or allowlist control.
Hint
a flow from sensitivity at least 2 to an untrusted node needs approval or an allowlist control.
Medium 2: Sensitivity analysis (3 hours)
Vary each leaf probability by plus or minus 50 percent.
Done when: you show whether the ranking of the four paths changes.
Hint
rerun prob with modified leaf values.
Medium 3: Map to MAESTRO (3 hours)
Tag each node and flow with a MAESTRO layer.
Done when: you list a layer with no assets or controls recorded.
Hard
Hard 1: Real threat model (8 hours)
Threat-model a real agent with a colleague. (I did not run this, so your results are the ground truth.)
Done when: you have a one-page model with decisions, owners and linked tests.
Hard 2: Scale the cut search (6 hours)
Replace brute force with an integer program or greedy search for 30 controls. (I did not run this.)
Done when: you compare cost against the brute-force answer on a 12-control case.
Hint
model each path as a constraint that at least one of its mitigations is chosen.
Hard 3: Check against incidents (8 hours)
Compare your top threats with published agent incidents. (I did not run this.)
Done when: you list one threat you had missed and update the model.