You closed module 3 with an unanswered question: Nimbus has 38 people, a limited budget and a list of improvements that does not fit into a year, so what gets done first? This lesson is the method for answering that defensibly. You will not learn any new technology: you will learn to turn what you already know — the asset inventory from 01-04, STRIDE, the attack catalogue from 02-02, the measures from 02-04 and the cryptographic protections from module 3 — into a justified, written, reviewable order of priority. It is the least technical and the most decisive lesson of the course, because a team that protects whatever it fancies protecting spends the entire budget and still leaves open the hole the attacker in 02-06 walked through.
Contents
- Without prioritisation there is no security
- The risk equation and what it really means
- The full process: ISO 31000 and ISO 27005 in an SME
- Establishing the context: the step almost everyone skips
- Identifying risks: from the asset and STRIDE to a well-written risk
- Qualitative analysis: scales, the 5×5 matrix and acceptance levels
- What the matrix cannot tell you
- Quantitative analysis: SLE, ARO, ALE and ROSI
- Inherent risk, control and residual risk
- Risk appetite and tolerance: who sets the threshold
- The four treatment strategies
- The risk register as a living artefact
- When it is reviewed and what triggers a reassessment
- Without prioritisation there is no security
Marta, Nimbus's CTO, comes out of module 3 with a list of 47 possible improvements. She has an annual security budget of 18,000 € (a fictitious figure, but of a realistic order for an SME of 38 people) and a single systems person: optimistically, Lucía can devote 25 % of her working time to security without operations falling over — around 440 hours a year. Iván has no hours allocated at all: his job is to ship features.
The 47 improvements do not fit, and no combination of effort makes them fit. The decision, therefore, is not "what do we do" but "what do we leave undone", and that is exactly the decision a risk assessment lets you take with arguments instead of with intuition.
| Prioritisation method | How it works | Why it fails |
|---|---|---|
| By recent fear | You do whatever was in the news last week | Nimbus's real risk does not match the headline |
| By convenience | You do what Lucía knows how to do and enjoys doing | Hammer bias: everything looks like a systems nail |
| By risk | You order by expected harm and work down the list | It is defensible to the board, to a customer and to an auditor |
Defensible is the key word. When a customer asks a year from now "why didn't you have EDR?", the right answer is not "we didn't get round to it", but "we assessed it, it came twelfth on the list, it was planned for the second half of the year and management accepted that in writing". That is risk management.
- The risk equation and what it really means
It is, almost literally, the most misinterpreted sentence in security. Three clarifications make it useful:
(a) It is not a formula, it is a conversation tool. Nobody knows the true likelihood of Nimbus suffering ransomware next year. What the equation does is force you to separate two questions that people mix together: "how often does this happen?" and "how much does it hurt when it does?". When Lucía says "we need to renew that certificate now", the equation asks: how likely is it to expire without anyone noticing, and what exactly happens if it goes down? If the answer is "high" and "the entire platform for two hours", that competes seriously with the rest of the list.
(b) Impact is business impact, not technical impact. "The database is compromised" is not an impact: it is an event. The impact is "40 clinics with no diary, notification to the supervisory authority, an estimated loss of two customers and legal costs". A risk whose impact is written in technical terms cannot be prioritised by management, which is precisely who has to do it.
(c) ISO 27005 adds a third factor: the threat exploits a vulnerability on an asset. In an SME it is enough to fold that into the likelihood, because the vulnerability is what makes the likelihood high. That ransomware exists is a constant for everyone; that Nimbus's backups sit in the same cloud account is what drives its likelihood of suffering an irreversible disaster.
- The full process: ISO 31000 and ISO 27005 in an SME
ISO 31000 is the generic risk management standard — it applies to financial, occupational or any other kind of risk — and ISO 27005 is its application to information security risk. Both describe the same cycle:
flowchart TB
C["1. ESTABLISH THE CONTEXT\nScope, impact criteria,\nscales, risk appetite"]
C --> I["2. IDENTIFY\nAssets (01-04) + STRIDE +\nattack catalogue (02-02)\n-> written risks"]
I --> A["3. ANALYSE\nLikelihood x Impact.\nQualitative and, where relevant,\nquantitative (ALE)"]
A --> E["4. EVALUATE\nCompare against the appetite.\nRank. Decide what is treated\nand what is accepted"]
E --> T["5. TREAT\nMitigate / Transfer /\nAvoid / Accept\n-> residual risk"]
T --> M["6. MONITOR AND REVIEW\nQuarterly review and\nreassessment triggers"]
M -->|"changes, incidents,\nnew suppliers"| I
COM["COMMUNICATION AND CONSULTATION\nwith management and the business"] -.-> C
COM -.-> E
COM -.-> T
Two details of the diagram matter more than the diagram itself: communication is not a step, it runs across all of them — an assessment done by Lucía on her own and presented at the end is an assessment management does not feel is theirs and will therefore not fund; and the cycle closes back on "Identify", not on "Analyse", because a review does not merely rescore what is already there: it looks for new risks, since the architecture has changed.
- Establishing the context: the step almost everyone skips
Before you identify a single risk you have to fix four things in writing. Without them, the rest of the exercise produces numbers that cannot be compared with one another.
| Context element | Nimbus's decision |
|---|---|
| Scope | Production SaaS platform, corporate systems and third parties with access. Financial and occupational risk are out of scope |
| Impact criteria | Five dimensions: financial, operational, personal data, legal/regulatory and reputational (A-20) |
| Scales | Five likelihood levels and five impact levels, with objective criteria (section 6) |
| Who decides | Marta proposes; management approves the appetite and the formal acceptances |
| Time horizon | 12 months; likelihoods are expressed as an annual frequency |
The time horizon is what saves the most arguments. "It's likely" means nothing unless you say over what period. At Nimbus every likelihood is expressed as times per year, and that makes two different people score similarly.
- Identifying risks: from the asset and STRIDE to a well-written risk
You already have the two inputs: the A-01…A-22 inventory from 01-04 and the STRIDE modelling from the same chapter. The procedure is mechanical: asset → applicable STRIDE category → known vulnerability → written risk → owner (who is the asset owner).
5.1 The drafting formula
A badly written risk cannot be scored; always use this structure:
If [THREAT] exploits [VULNERABILITY] on [ASSET],
then [TECHNICAL IMPACT] with [BUSINESS CONSEQUENCE].| Poor wording | Correct wording |
|---|---|
| "Ransomware" | "If an external attacker exploits the consultancy's permanent, shared remote access (A-19), then they gain administrative control of the infrastructure and encrypt data and backups, with weeks of service outage for 40 clinics and notifiable exfiltration" |
| "No MFA" | "If an attacker with leaked credentials reaches an administrative account with no second factor (A-13), then they operate as a legitimate administrator, with access to every customer's data and no traces distinguishable from normal use" |
| "The backup fails" | "If a malicious deletion affects the backups (A-03) and a restore has never been tested, then recovery is not possible within the committed timeframe, with data loss and possible closure of the service" |
Notice that the correct wording already contains, implicitly, the missing control. That is no accident: a well-written risk all but proposes its own treatment.
5.2 Sources for identification
Do not invent risks: collect them from where they already are.
| Source | Concrete Nimbus example |
|---|---|
| Asset inventory (01-04) | One risk per critical asset: A-05, A-01, A-03, A-19 |
| STRIDE over the DFD (01-04) | Elevation of privilege at the API↔DB boundary |
| Discovery findings (01-04) | PostgreSQL on 0.0.0.0:5432, Redis with no authentication, a python -m http.server forgotten for 94 days, SSH open to 0.0.0.0/0, payroll behind a public link. Confirmed risks, not hypothetical ones |
| Attack catalogue (02-02) and incidents (02-06) | OWASP Top 10, supply chain, BEC. Incidents are the best likelihood calibration there is |
| Planned changes and audits | The new mobile app; the results of the penetration test in 05-03 |
- Qualitative analysis: scales, the 5×5 matrix and acceptance levels
The quality of a qualitative analysis depends entirely on the scales having objective criteria, not adjectives. "Medium" means nothing; "between once every 3 and once every 10 years" does.
6.1 Likelihood scale (12-month horizon)
| Level | Label | Objective criterion | Nimbus reference point |
|---|---|---|---|
| 5 | Very high | Several times a year, or already happening | Automated scanning against the public IP |
| 4 | High | At least once a year | An employee receives a credible phishing message |
| 3 | Medium | Once every 1-3 years | Loss or theft of a laptop |
| 2 | Low | Once every 3-10 years | Compromise of the cloud account |
| 1 | Very low | Less than once every 10 years | Fire at the provider's data centre |
6.2 Impact scale
You score the worst of the five criteria, never the average.
| Level | Financial | Operational | Personal data | Legal | Reputational |
|---|---|---|---|---|---|
| 5 Critical | > 150,000 € | Outage > 24 h | Leak of health data or mass leak | Notification + probable fine | Loss of key customers |
| 4 Major | 50,000-150,000 € | Outage 8-24 h | Leak of identifying data | Notification to the authority | Negative coverage |
| 3 Moderate | 10,000-50,000 € | Outage 2-8 h | Improper internal access | Contractual breach | Complaints |
| 2 Minor | 1,000-10,000 € | Outage < 2 h | No personal data | No implications | Internal |
| 1 Insignificant | < 1,000 € | Degradation | None | None | None |
That Nimbus has a dedicated personal data column is not decorative: its customers are clinics and the appointment history indirectly reveals health information. It is the dimension that drives level 5 impacts.
6.3 The 5×5 matrix and the bands
| L \ I | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| 5 Very high | 5 Medium | 10 High | 15 High | 20 Critical | 25 Critical |
| 4 High | 4 Low | 8 Medium | 12 High | 16 Critical | 20 Critical |
| 3 Medium | 3 Low | 6 Medium | 9 Medium | 12 High | 15 High |
| 2 Low | 2 Low | 4 Low | 6 Medium | 8 Medium | 10 High |
| 1 Very low | 1 Low | 2 Low | 3 Low | 4 Low | 5 Medium |
| Band | Score | Nimbus decision rule |
|---|---|---|
| Critical | 16-25 | Immediate treatment. Plan within 7 days. Management is told |
| High | 10-15 | Treatment planned within the quarter. Named owner |
| Medium | 5-9 | Treat if the cost is low; otherwise, documented acceptance and six-monthly review |
| Low | 1-4 | Accepted by default. Annual review |
Without that last table the matrix decides nothing. Scoring is half the job; the other half is having agreed in advance what happens with each band, because agreeing it after seeing the numbers invites you to move the threshold until the result is comfortable.
- What the matrix cannot tell you
- Misleading aggregation. Ten "medium" risks that share a root cause — all of them depend on A-05 — are not ten middling problems: they are one critical problem in disguise, and the matrix will not see it because it scores risks in isolation. Remedy: group by root cause before deciding.
- Mid-point bias. Anyone who is unsure scores a 3. A register with 60 % of its entries at 3×3 is not being assessed: it is being filled in. Remedy: ban a 3 without written justification, or use an even scale with no centre.
- The bands are ordinal, not cardinal. A 16 is not "twice as bad" as an 8; you cannot add or average scores. And there is compression at the top end: everything catastrophic ends up as a 5, so a 200,000 € leak and a 2 million € one score the same. For those few cases you fall back on the quantitative approach.
- Assessor bias. Lucía overrates what she controls; Iván underrates what he wrote. Remedy: score as a group, not by e-mail.
- Quantitative analysis: SLE, ARO, ALE and ROSI
The quantitative approach puts euros where the qualitative one puts colours. It does not replace the matrix — it is far too expensive for 47 risks — but it is indispensable for justifying a specific investment to management.
| Term | Meaning | Formula |
|---|---|---|
| SLE (Single Loss Expectancy) | Expected loss from one occurrence | Asset value × Exposure factor |
| ARO (Annualised Rate of Occurrence) | Times per year it is expected to happen | Estimate (0.1 = once every 10 years) |
| ALE (Annualised Loss Expectancy) | Expected loss per year | SLE × ARO |
8.1 Calculation for two real Nimbus risks
# ale_nimbus.py - Quantitative analysis of two Nimbus Reservas risks.
# All amounts are fictitious and are REASONED ESTIMATES, not measurements.
def eur(x):
return f"{x:,.0f}" + " EUR" # English thousands separator
RISKS = [
# value = TOTAL cost if it materialises (notification, legal advice, surge
# support, possible fine, loss of customers)
# ef = exposure factor: fraction of the value actually lost
# aro = times per year; 0.10 = once every 10 years (likelihood 2, Low)
{"id": "R-04", "name": "Attachment leak from bucket A-02",
"value": 240_000, "ef": 0.80, "aro": 0.10},
# value = unbilled revenue + SLA credits + overtime + churn
# aro = 0.50: once every 2 years (likelihood 3, Medium)
{"id": "R-11", "name": "48-hour platform outage",
"value": 65_000, "ef": 0.80, "aro": 0.50},
]
for r in RISKS:
r["sle"] = r["value"] * r["ef"] # loss per event
r["ale"] = r["sle"] * r["aro"] # expected loss per year
print(f'{r["id"]} {r["name"]:34} SLE={eur(r["sle"]):>14} '
f'ARO={r["aro"]:.2f} ALE={eur(r["ale"]):>14}')
print("Total ALE of the portfolio:", eur(sum(r["ale"] for r in RISKS)))R-04 Attachment leak from bucket A-02 SLE= 192,000 EUR ARO=0.10 ALE= 19,200 EUR
R-11 48-hour platform outage SLE= 52,000 EUR ARO=0.50 ALE= 26,000 EUR
Total ALE of the portfolio: 45,200 EURRead that result carefully, because it contains the whole lesson. The leak is far more serious per event (192,000 € against 52,000 €), but the outage has the higher ALE because it is expected five times more often. If Nimbus chose by ALE alone, it would invest in availability before confidentiality. That counter-intuitive result is exactly what the method contributes: it forces the decision to be discussed rather than assumed.
8.2 Comparing the ALE against the cost of the control: ROSI
ROSI (Return On Security Investment) answers "is this control worth it?". It is calculated as (Saving − Annual cost of the control) / Annual cost of the control × 100, where the saving is the difference between the ALE before and after applying it.
# rosi_nimbus.py - Three controls against ransomware risk R-01.
# ALE of R-01 = 96,000 EUR (SLE 320,000 x ARO 0.30), calibrated with the 02-06 case.
ALE_RANSOMWARE = 96_000
# (name, estimated ALE reduction, TOTAL annual cost including operation)
CONTROLS = [
("Phishing-resistant MFA", 0.70, 900),
("Immutable backups + quarterly test", 0.80, 3_600),
("Managed EDR on 40 laptops", 0.25, 9_600),
]
def eur(x):
return f"{x:,.0f}" + " EUR"
for name, reduction, cost in CONTROLS:
ale_after = ALE_RANSOMWARE * (1 - reduction)
saving = ALE_RANSOMWARE - ale_after
rosi = (saving - cost) / cost * 100
print(f"{name:40} ALE_after={eur(ale_after):>13} "
f"saving={eur(saving):>13} cost={eur(cost):>10} ROSI={rosi:>7.0f} %")Phishing-resistant MFA ALE_after= 28,800 EUR saving= 67,200 EUR cost= 900 EUR ROSI= 7367 %
Immutable backups + quarterly test ALE_after= 19,200 EUR saving= 76,800 EUR cost= 3,600 EUR ROSI= 2033 %
Managed EDR on 40 laptops ALE_after= 72,000 EUR saving= 24,000 EUR cost= 9,600 EUR ROSI= 150 %This reproduces, in numbers, the conclusion of the 12 measures in 02-04: MFA and immutable backups are the two highest-return investments, and EDR — the only one with a real mid-range cost — comes a long way behind. It is not that EDR is bad: it is that it is in the wrong place in the order.
Essential warning. The four input numbers on each line are human estimates. A ROSI of 7,367 % conveys a precision that does not exist. What the calculation demonstrates is not "7,367", but the order of magnitude and the relative order: MFA is two orders of magnitude better as an investment than EDR. Always present these numbers with their range ("between 3,000 % and 12,000 % depending on the ARO estimate") and document where each assumption comes from. A quantitative analysis with hidden assumptions is worse than an honest qualitative one.
- Inherent risk, control and residual risk
| Concept | Definition | Nimbus example |
|---|---|---|
| Inherent risk | The risk that exists before any control is applied | The consultancy's remote access with no MFA and no expiry: L=4, I=5 → 20, Critical |
| Control | The measure that reduces likelihood, impact or both | MFA + just-in-time access + named accounts |
| Residual risk | What is left after the controls, if they work | L=2, I=5 → 10, High |
| Accepted risk | The residual risk you decide to live with | Those 10 points, with a quarterly review |
Three rules that are broken daily. (1) Residual risk is never zero: anyone presenting a register with residuals of 1 is either lying or has not understood the exercise; the goal is to take it below the appetite, not to eliminate it. (2) A control only reduces risk if it genuinely works: scoring the residual assuming MFA on every account when it is on half of them is accounting fraud, so the residual is scored against the verified state, and that verification is the subject of 04-03. (3) It is worth knowing whether the control reduces likelihood or impact: MFA reduces likelihood — they do not get in; immutable backups do not reduce it at all and reduce impact — they get in, but you recover. A risk treated only with likelihood controls is left without a safety net when the likelihood materialises anyway.
- Risk appetite and tolerance: who sets the threshold
Appetite is the amount of risk the organisation is willing to take on in order to achieve its objectives: a strategic statement. Tolerance is the acceptable deviation around that appetite, expressed per category and in measurable terms. This is how Nimbus has it written down:
RISK APPETITE STATEMENT - Nimbus Reservas, S.L.
Approved by: Board of directors Date: 2026-01-15 Review: annual
1. CONFIDENTIALITY OF HEALTH DATA: NIL appetite. No risk with impact 5 in the
personal data dimension may remain in the High or Critical band.
2. SERVICE AVAILABILITY: LOW appetite. Cumulative unplanned downtime of up to
8 hours a year is tolerated (target 99.9 %).
3. LEGAL COMPLIANCE: NIL appetite for known breaches.
4. OPERATIONAL AND PROJECT RISK: MEDIUM appetite. Documented technical debt is
accepted provided it does not affect points 1 to 3.
ACCEPTANCE THRESHOLD: no residual risk above 9 (Medium band) may be left without
a treatment plan with a date and an owner.
ACCEPTANCES: High band residuals require acceptance signed by management, with a
maximum expiry of 12 months.Without this document the matrix decides nothing. You can score 47 risks perfectly and still not know which ones have to be treated, because "High" only means something once somebody has said in advance what happens with High. At Nimbus management sets it on Marta's proposal, and it is deliberately asymmetric: nil appetite on health data and medium on technical debt. That asymmetry is the company's security strategy, written in ten lines.
- The four treatment strategies
| Strategy | What it does | Nimbus example | When it is the right one |
|---|---|---|---|
| Mitigate | Apply controls that lower likelihood or impact | MFA on A-19; immutable backups; closing 0.0.0.0:5432 |
By default, if the control costs less than the expected harm |
| Transfer | Move the financial consequence to a third party | Cyber insurance; card tokenisation at the payment gateway; liability clauses with the consultancy | High impact, low likelihood, disproportionate mitigation |
| Avoid | Remove the activity that generates the risk | Take real data out of pre-production (A-22); do not store the DNI if it is not used; switch off python -m http.server |
The value of the activity does not justify its risk |
| Accept | Live with the risk, knowingly and on the record | Accept dependence on a single cloud region for 12 months | The residual is below the appetite, or no viable treatment exists |
The fifth option, which does not exist: ignore. Accepting and ignoring produce the same bill and are entirely different things. Accepting has a name, a signature, a date and an expiry; ignoring has none of that. The difference shows up on exactly the day of the incident.
11.1 Cyber insurance and its real limits
| Usually covers | Does not cover |
|---|---|
| Response: forensics, legal advice, communications agency | Reputation: A-20 has no policy |
| Notification to those affected and customer care | The loss of customers over the medium term |
| Loss of profit from interruption, with an excess | Incidents predating the policy |
| Liability towards third parties | Harm arising from breaching your own declarations |
And the three traps that stop a policy paying out: (1) the prerequisites — current policies require in writing MFA on administrative access, verified backups and patch management, so if Nimbus declares it has MFA and the incident shows the consultancy was getting in without it, the insurer can reject the claim for a misstatement in the declaration; (2) the exclusions — acts of war or of a state, relevant in attributed ransomware; failure of an undeclared supplier; regulatory fines in some jurisdictions; and (3) the process obligations, because many policies require you to use the insurer's forensic and legal team and to notify within a short deadline: calling your trusted consultancy first can invalidate the cover.
Validation note. Taking out cyber insurance, reading its exclusions and the declarations you sign in the underwriting questionnaire have serious contractual consequences. Review it with a specialist broker and with legal advice before signing, and review it again whenever your architecture changes. Transferring the risk is not transferring the responsibility.
- The risk register as a living artefact
This is the deliverable of the lesson, and you will need it in the final project of module 7. A register is a living document: if its last modification date is more than six months old, it is not a register, it is a memory.
12.1 Reusable field template
# TEMPLATE - risk register. One block per risk.
- id: "R-NN" # stable identifier; never reused
title: "" # short recognisable phrase
description: "" # formula 5.1: if [threat] exploits [vulnerability]
# on [asset], then [impact] with [consequence]
assets: ["A-NN"] # ids from the 01-04 inventory
stride: "" # Spoofing|Tampering|Repudiation|InfoDisclosure|DoS|Elevation
vulnerability: "" # the specific weakness that makes it possible
inherent: {l: 0, i: 0, level: 0, band: ""} # before controls
controls: [] # ids from the control catalogue (04-03)
residual: {l: 0, i: 0, level: 0, band: ""} # with the VERIFIED controls
strategy: "" # Mitigate|Transfer|Avoid|Accept
treatment: "" # what is going to be done, specifically
owner: "" # a PERSON, not a department
target_date: "YYYY-MM-DD"
acceptance: {approved_by: "", date: "", expires: ""} # only if Accept
status: "" # Open|In treatment|Accepted|Closed
last_review: "YYYY-MM-DD"
next_review: "YYYY-MM-DD"12.2 Nimbus risk register (extract)
# nimbus-risk-register.yaml - v3 - 2026-02-10 - Process owner: Marta (CTO)
- id: R-01
title: "Ransomware through third-party remote access"
description: "If an external attacker exploits the consultancy's permanent, shared
remote access with no MFA (A-19), then they reach the cloud account (A-05), encrypt
data and backups and exfiltrate information, with weeks of outage for 40 clinics and
a notifiable breach of data that reveals health information."
assets: [A-19, A-05, A-01, A-03]
stride: ElevationOfPrivilege
vulnerability: "Shared account, no MFA, no expiry, no session recording"
inherent: {l: 4, i: 5, level: 20, band: Critical}
controls: []
residual: {l: 4, i: 5, level: 20, band: Critical}
strategy: Mitigate
treatment: "Mandatory MFA, named accounts and just-in-time access (04-04)"
owner: Marta
target_date: 2026-03-15
status: "In treatment"
next_review: 2026-03-15
- id: R-02
title: "Destruction of backups during an incident"
description: "If an attacker with A-05 credentials reaches the backup bucket (A-03),
which sits in the same account and is not immutable, then recovery becomes
impossible, with irreversible data loss and an indefinite service outage."
assets: [A-03, A-05]
stride: Tampering
vulnerability: "Backups not immutable, same account, restore never tested"
inherent: {l: 3, i: 5, level: 15, band: High}
controls: [C-14]
residual: {l: 3, i: 5, level: 15, band: High}
strategy: Mitigate
treatment: "Immutable backups in a separate account + quarterly test (04-06)"
owner: Lucia
target_date: 2026-03-31
status: "In treatment"
next_review: 2026-03-31
- id: R-04
title: "Leak of clinical attachments from the bucket"
description: "If an authorisation flaw or an over-long signed URL allows access to the
attachments bucket (A-02), then scanned reports that reveal health data are exposed,
with mandatory notification and serious reputational impact."
assets: [A-02]
stride: InfoDisclosure
vulnerability: "History of IDOR; risk of signed URLs without a short expiry"
inherent: {l: 3, i: 5, level: 15, band: High}
controls: [C-05, C-06, C-07] # WHERE tenant_id + RLS, 120 s URL, audit
residual: {l: 2, i: 5, level: 10, band: High}
strategy: Mitigate
treatment: "Automated per-tenant authorisation tests in CI (05-05)"
owner: Ivan
target_date: 2026-04-30
status: "In treatment"
next_review: 2026-04-30
- id: R-10
title: "Prolonged unavailability of the cloud provider"
description: "If the cloud provider (A-05) suffers a regional outage of more than
8 hours, then the platform is unreachable for 40 clinics, with SLA credits and
reputational harm, and with no ability whatsoever for Nimbus to act."
assets: [A-05]
stride: DoS
vulnerability: "Deployment in a single region, no failover plan"
inherent: {l: 2, i: 4, level: 8, band: Medium}
controls: [C-19]
residual: {l: 2, i: 4, level: 8, band: Medium}
strategy: Accept
treatment: "Multi-region would double the cost. Compensated with manual emergency
procedures (04-06)."
owner: Marta
acceptance: {approved_by: Management, date: 2026-02-10, expires: 2027-02-10}
status: Accepted
next_review: 2027-02-10The remaining seven risks follow exactly the same scheme; they are summarised here so as not to repeat the structure:
| id | Title | Assets | Inherent | Controls | Residual | Strategy and treatment | Owner |
|---|---|---|---|---|---|---|---|
| R-03 | Production PostgreSQL exposed on 0.0.0.0:5432 |
A-01 | 5×5=25 Critical | C-02 | 4×5=20 Critical | Mitigate: close the security group to the VPC (20 minutes) | Lucía |
| R-05 | Fraud through e-mail impersonation (BEC) aimed at Sara | A-13, A-08 | 4×3=12 High | — | 4×3=12 High | Mitigate: SPF -all, DKIM, DMARC p=reject + verification through an alternative channel (02-03) |
Sara |
| R-06 | Secrets in the repository or in .env files |
A-10, A-06, A-05 | 4×5=20 Critical | — | 4×5=20 Critical | Mitigate: secrets manager (03-06) + secret scanner in CI | Iván |
| R-07 | Forgotten services exposed (Redis with no auth, http.server) |
A-22, A-04 | 5×4=20 Critical | — | 5×4=20 Critical | Mitigate: immediate closure + monthly external scan (05-01) | Lucía |
| R-08 | Theft or loss of a laptop with no verified encryption | A-14 | 3×3=9 Medium | C-24 | 3×2=6 Medium | Mitigate: mandatory encryption with escrow of recovery keys | Lucía |
| R-09 | Dependence on a single systems person | A-21, A-17 | 3×4=12 High | C-17 | 3×3=9 Medium | Mitigate: complete runbooks + external on-call retainer + train Iván | Marta |
| R-11 | Nimbus's own platform outage of more than 24 h | A-04, A-01 | 3×5=15 High | C-19 | 3×5=15 High | Mitigate: RTO/RPO targets and a restore test (04-06) | Lucía |
Look at the register as a whole and you will see three things that no single entry says on its own: four of the eleven risks name the A-05 cloud account directly and almost all the rest depend on it (01-04), most of the treatments are cheap, and the only formal acceptance carries a signature, a date and an expiry. That last field is what stops an acceptance turning into a permanent oversight. Notice R-09 too: it has no adversary and is still in the High band.
- When it is reviewed and what triggers a reassessment
Monthly, Marta and Lucía review the status of the open treatments: are they moving? Quarterly, with Iván, the Critical and High risks are reviewed: is the score still valid? And annually management carries out the full review: new risks, closure of obsolete ones and the appetite.
On top of that, the triggers that force a reassessment without waiting for the calendar: an architecture change (a new integration, a migration, the new mobile app); an incident of your own or in your sector — any incident reassesses the likelihood of its entire class: the case in 02-06 should push ransomware to level 5 for all healthcare SaaS; a new supplier or a change in an existing one (04-04); a regulatory or contractual change, such as a customer requiring ISO 27001; an organisational change, such as Lucía leaving; and the result of an audit or a penetration test (05-03, 06-04).
Common Mistakes and Tips
- Doing the assessment once and filing it away. This is mistake number one and the most expensive: a register from 18 months ago describes a company that no longer exists. Tip: put the quarterly review in the calendar with the invitation accepted, and treat the register like code: version control, reviewed changes, history.
- Scoring without written criteria. If two people score the same thing 4 and 2, the problem is not them: it is that "likely" is not defined. Do not score anything until the tables in section 6 are approved, and keep them in front of you during the session.
- Letting only the technical team do the assessment. Lucía knows what can break; only Sara and Marta know what it costs when it does. A purely technical assessment produces badly estimated impacts and, worse still, no authority to allocate budget.
- Confusing the register with the to-do list. "Update the server" is not a risk, it is a treatment. If your register is full of infinitives, you are using it as a backlog: apply the formula in 5.1 to every entry. And do not inflate everything to Critical to get budget: it works once; the second time, management stops reading the document. If more than 15 % of your register is Critical, you are not prioritising.
- Scoring the residual with controls that do not yet exist. It is called project optimism and it falsifies the whole register. The desired state goes in
treatment, not inresidual. - Forgetting the risks with no adversary. R-09 (Lucía is the only systems person) and R-10 (provider outage) have no attacker and are just as real. Availability breaks on its own.
Exercises
Exercise 1 — From finding to a written and scored risk
The discovery work in 01-04 turned up a spreadsheet with the payroll of all 38 employees shared through a public link, created by Sara 14 months ago and never revoked.
- Write the risk using the formula in section 5.1.
- Score likelihood and impact with the scales in 6.1 and 6.2, justifying each number.
- Determine the band and the applicable decision rule.
- Propose a strategy and a treatment, and estimate the residual risk.
Exercise 2 — Is the control worth it?
Nimbus is considering a managed detection service that would watch the logs, at a cost of 14,400 € a year. Its main effect is to reduce the time to detect, not to prevent entry.
- For R-01 (ransomware, ALE of 96,000 €), which factor of the equation does a detection service change: the likelihood or the impact? Reason it through with the timeline in 02-06.
- If you estimate it reduces the ALE by 35 %, calculate the ROSI.
- Compare it against the three options in section 8.2 and decide what you would recommend to Marta this year. Would your answer change if Nimbus already had MFA and immutable backups?
Exercise 3 — Diagnosing a sick register
Marta receives the risk register of a comparable company and you spot: 34 of 40 risks scored 3×3; every owner is "IT Department"; the residual column empty in 31 entries; 6 risks with an "Accept" strategy and no signature or date; and last_review identical across all 40 entries, 19 months ago. Identify what problem each symptom reveals, what correction you would apply and in what order.
Solutions
Exercise 1
(1) "If anyone who receives or discovers the public link accesses the payroll spreadsheet held in corporate storage (A-16), which has been shared for 14 months with no restriction and no expiry, then the salaries, DNI (the Spanish national ID number) and bank details of all 38 employees are exposed, breaching data protection law, with probable notification to those affected and to the supervisory authority, and serious damage to internal trust."
(2) Likelihood = 4 (High): it requires no technical capability at all, you only need the link; it has been live for 14 months, has probably circulated by e-mail and may be indexed. This is not a remote hypothesis, it is an exposure in progress. Some assessors would argue for a 5; the real difference is whether there is evidence of access, and that is checked in the storage access log before scoring. Impact = 4 (Major): identifying and financial personal data of employees — but not of customers and not health data, which keeps it below 5 — probable notification, severe internal impact, moderate financial impact. Level = 16 → Critical band.
(3) Critical band → immediate treatment, plan within 7 days, management informed. With one important nuance: revoking the link takes two minutes, so the treatment must not wait for the plan. First you stop the exposure; then you document it.
(4) Strategy Mitigate, in three layers: (a) revoke the link today and review the access log to establish whether there was real exposure — information you need in order to decide on notification; (b) move the file to a folder restricted to Sara and management; (c) attack the cause by disabling the creation of public links at organisation level and reviewing all the existing ones. With (a)+(b) the residual falls to 2 × 4 = 8, Medium; with (c) in place, to 1 × 4 = 4, Low. Part (c) is the only one that turns a one-off fix into a control, and the only one that stops the same risk reappearing in six months with a different file.
Exercise 2
(1) Detection does not reduce the likelihood: the attacker gets in anyway. It reduces the impact, by shortening the dwell time. In the 02-06 case the attacker was inside for 20 days; exfiltration happened between days 13 and 19 and the destruction of the backups on day 20. Detecting on day 2 would not have prevented the compromise, but it would have prevented the exfiltration of 1.2 TB and the destruction of the backups, which is where most of the harm sits. That is why detection has a high value despite preventing nothing.
(2) Saving = 96,000 × 0.35 = 33,600 €. ROSI = (33,600 − 14,400) / 14,400 × 100 = 133 %.
(3) At 133 % it falls below MFA (7,367 %) and immutable backups (2,033 %), and is practically level with EDR (150 %). Recommendation for this year: no, and not because it is bad, but because order matters: detecting an incident quickly and then being unable to restore still ends in disaster. And yes, the answer changes if those two are already in place: once the cheap prevention and recovery controls are done, the remaining ALE concentrates precisely on what detection attacks, its effective reduction rises and it becomes the next logical investment. This reveals something an isolated ROSI hides: the return on a control depends on which other controls already exist, so the calculation is redone every year.
Exercise 3
| Symptom | What it reveals | Correction |
|---|---|---|
| 34 of 40 at 3×3 | Mid-point bias: there are no scales with objective criteria | Approve the scales and rescore in a joint session, banning a 3 without written justification |
| Owner "IT Department" | A risk with no real owner: what belongs to everyone belongs to no one | Assign a named person with decision-making authority |
| Residual empty in 31 | The effect of the controls has not been assessed: the register cannot guide decisions | Score the residual against verified controls; the blanks are, in fact, residual = inherent |
| 6 "Accept" with no signature or date | These are not acceptances: they are omissions | Explicit management signature with an expiry of ≤ 12 months, or change the strategy |
| Last review 19 months ago | The register is dead: it describes an earlier company | Full review and a quarterly cadence with triggers |
Order of correction: 5 → 1 → 2 → 3 → 4. First bring the document back to life, because correcting everything else on top of a dead register is putting make-up on a corpse; then fix the scoring method, on which everything else depends; then the owners, who are the ones who execute; then the residual; and finally formalise the acceptances, which is a signing formality once the rest is right.
Conclusion
You have learned the method that turns an unmanageable list into a defensible order, which was exactly the promise module 3 closed on. You know that without prioritisation there is no security, because Nimbus's budget and Lucía's 440 annual hours are finite, and that of the three ways of prioritising only one can be defended to a customer, to management or to an auditor.
You handle the risk equation for what it genuinely contributes: not an exact formula, but the obligation to separate "how often does it happen" from "how much does it hurt", and to write the impact in business terms so that whoever holds the budget can prioritise it. You know the ISO 31000/27005 cycle adapted to an SME, with communication as a cross-cutting activity, and you know how to identify risks from the A-01…A-22 inventory, from STRIDE and from the discovery findings, writing them with a formula that makes the risk all but propose its own treatment.
You are on top of qualitative analysis with scales built on objective criteria — not adjectives — and the 5×5 matrix with its acceptance bands, along with its limits: misleading aggregation, mid-point bias, ordinals that cannot be added and compression at the top end. And you know when to move to the quantitative: SLE, ARO and ALE calculated for the attachment leak and for the 48-hour outage, with the uncomfortable result that the outage has the higher ALE despite being far less serious per event, and with the ROSI that reproduces in euros the conclusion of 02-04 — MFA and immutable backups are two orders of magnitude better as an investment than EDR — always with the warning that the input data are estimates and what counts is the order, not the decimal. You distinguish inherent, control and residual with their three rules — the residual is never zero, only the verified control counts, and it is worth knowing whether it reduces likelihood or impact — you have the appetite and tolerance statement that management signs and without which the matrix decides nothing, you know the four treatment strategies with cyber insurance and its three real traps, and you take away the artefact: the risk register template and a Nimbus register with eleven risks that converge again and again on A-05, where the only acceptance carries a signature, a date and an expiry.
But a risk register, however good it is, expires with the person who wrote it. It says what Marta decided in February 2026; it does not say what a new employee should do next Tuesday, nor what is mandatory and what is merely recommended, nor who can authorise an exception. The decisions you have taken here — mandatory MFA, just-in-time access, a ban on public links, secrets in a manager and not in .env — need to stop living in the heads of three people.
In the next lesson, Security Policies (04-02), you will see how a decision is fixed in writing so that it outlives whoever took it: the hierarchy policy → standard → procedure → guideline, the anatomy of a policy with a complete reusable template, two Nimbus policies written out in full, the approval and communication process, and the exceptions register with mandatory expiry, where you will meet again — this time in writing — the consultancy's permanent access.
Fundamentals of Information Security Course
Module 1: Introduction to Information Security
- Basic Concepts of Information Security
- Types of Threats and Vulnerabilities
- Principles of Information Security
- Assets, Attack Surface and Threat Actors
Module 2: Cybersecurity
- Definition and Scope of Cybersecurity
- Types of Cyber Attacks
- Social Engineering and Phishing
- Protection Measures in Cybersecurity
- Identity, Authentication and Access Control
- Cybersecurity Incident Case Studies
Module 3: Cryptography
- Introduction to Cryptography
- Symmetric Cryptography
- Asymmetric Cryptography
- Hash Functions, HMAC and Password Storage
- Cryptographic Protocols
- Key Management, Certificates and PKI
- Applications of Cryptography
Module 4: Risk Management and Protection Measures
- Risk Assessment
- Security Policies
- Security Controls
- Third-Party and Supply Chain Risk
- Incident Response Plan
- Disaster Recovery and Business Continuity
Module 5: Security Tools and Techniques
- Vulnerability Analysis Tools
- Monitoring and Detection Techniques
- Penetration Testing
- Network Security
- Application Security
- System Hardening and Endpoint Security
- Cloud and Container Security
Module 6: Best Practices and Regulations
- Best Practices in Information Security
- Security Regulations and Standards
- Personal Data Protection and GDPR in Practice
- Compliance and Auditing
- Training and Awareness
- Ethics, Legal Aspects and Responsible Disclosure
