IT Support & Help Desk Fundamentals Module 4 – Operating systems: install, update and recover
Case study: recovering from a mass boot failure
Reconstruct a 2024 mass boot failure from the vendors' own documents, estimate recovery at scale with and without retrievable keys, and write a runbook.
What you will learn
- Trace the 2024 boot-loop incident from the vendors' own published documents
- Choose a recovery route from the keys, the local administrator accounts and the USB access a fleet has
- Estimate how long a mass recovery takes from technicians, minutes per PC and key lookup time
- Explain how staged rollouts and recovery-key escrow limit the damage of a bad update
- Write a mass-incident runbook with roles, a communication cadence, key retrieval, media and verification
Before you start
What you’ll learn · Before you start
What you will learn
- Trace the 2024 boot-loop incident from the vendors' own published documents
- Choose a recovery route from the keys, the local administrator accounts and the USB access a fleet has
- Estimate how long a mass recovery takes from technicians, minutes per PC and key lookup time
- Explain how staged rollouts and recovery-key escrow limit the damage of a bad update
- Write a mass-incident runbook with roles, a communication cadence, key retrieval, media and verification
Before you start
On this page
An estimated 8.5 million Windows devices stopped at a blue screen in 2024 and restarted into the same one. Microsoft put that at less than one percent of all Windows machines, and for a help desk it still meant a floor of PCs that nobody could fix by restarting, each one possibly asking for a 48-digit BitLocker key. The cause was not an attack. A security vendor’s content update made a kernel driver read a value that did not exist.
You will rebuild the chain of events from the vendors’ own documents, choose among the recovery routes Microsoft published, estimate how long a recovery of 500 PCs takes with and without retrievable keys, see what staged rollouts and key escrow would have changed, and write a runbook for your own organisation.
One content update crashed Windows at start-up
The product at the centre of the case is a security sensor that runs a driver in the Windows kernel. The sensor gets its detection rules from two places: code shipped with each sensor release, and configuration called Rapid Response Content, delivered between sensor releases in files the vendor calls channel file: A file by which a security vendor delivers detection rules to its software on a PC between releases. In the 2024 incident a faulty update to one such file crashed Windows at start-up.. The rules in Channel File 291 describe how to match activity on named pipes and other ways that programs on one PC talk to each other.
CrowdStrike’s own root cause analysis describes a confluence of issues. Read as a chain, five conditions had to hold. A template type for those rules, added with sensor version 7.11, defined 21 input fields, but the sensor code supplied only 20 values. The mismatch passed the build because the number of fields was not validated. It passed testing because the test content and the first deployments used a wildcard for the 21st field, which matches without reading the value. Then a content update delivered a rule that matched the 21st field for real. The interpreter asked for a value past the end of a 20-value array, an out-of-bounds read: A program reading memory beyond the end of the data it was given, for example the 21st value of a 20-value array. In a kernel driver it can stop Windows with a blue screen.. Step through the chain:
The drawing shows the whole scene; its 7 steps are listed below.
Every step as text
- A template defines 21 inputs. The new template type for named pipes and other interprocess communication, introduced with sensor version 7.11, defined 21 input fields for the matching rules that use it.
- The code supplies only 20. The sensor code that called the content interpreter handed it 20 input values. Nobody noticed, because the mismatch was not checked when the sensor was built.
- Tests never read field 21. The test content and the first deployments used a wildcard for the 21st field, which matches without reading the value. So no test and no early deployment ever touched the missing input.
- A rule that must read it. Two further template instances were delivered in a content update on day 0. One used a non-wildcard criterion for the 21st field, so the sensor now had to inspect an input it did not have. The content validator had assumed 21 inputs and passed it.
- The read goes past the array. At the next notification from the operating system the interpreter evaluated the new rule and asked for the 21st value of a 20-value array. That is an out-of-bounds read, a memory access beyond the end of the data.
- The kernel driver faults. The sensor runs a driver in the kernel, and a fault there stops Windows with a blue screen. The crash analysis in the report names the sensor driver as the faulting module.
- The start-up repeats it. The driver loads from an early phase of start-up and reads the same content again, so a restart brings the same crash. The PC is in a boot loop that no amount of restarting cures.
The last two steps explain why the failure became a boot loop. The sensor’s driver runs in kernel mode: The privileged processor state the operating system core and device drivers run in, with direct access to hardware; a fault here can crash the whole PC. More in “Windows apps, drivers and Device Manager”, so a fault there stops Windows with a blue screen and a stop code: A hexadecimal code that Windows records when a blue screen occurs, pointing to the type of failure. Also called a bug check code. More in “Slow PCs, crashes and Event Viewer”: the report’s crash dump shows the page-fault stop code and names the sensor driver as the faulting module. And the driver is loaded from an early phase of start-up, so the same content is read again at every start. A restart repeated the crash, which is why the repair had to happen before the sensor loaded, from outside the installed Windows.
Companies named on this page
MySmartCoPilot has no link with any company named here. The case is described from three documents that two of them published, listed under References, and the recovery estimates are this lesson’s own model.
Checkpoint
Check: The chain of failures
The first three weeks, counted in days
A case study needs a clock, and the clock here has a trap: the vendors’ documents date the same update a day apart. CrowdStrike’s analysis says the content update reached sensors on one day; Microsoft’s post says the update was released the day before. Both can be honest, because a clock in one time zone and a clock in another place the same moment on different days, and the lesson in it is a habit from the ticket-writing lessons: write a time with its zone, in the ISO 8601 timestamp: A date and time written in the international ISO 8601 order, from the largest unit to the smallest, with a UTC offset after the time, as in a time written 14:05+05:30, or a trailing Z for UTC. More in “Ticket notes and handoffs people can use” form, so that nobody has to guess. This page counts from the day in the vendor’s own analysis, day 0, and shows no calendar dates.
- Sensor 7.11
A template type ships with a mismatch before the incident
CrowdStrike's analysis says sensor 7.11 introduced a template type that defines 21 inputs while the code supplies 20. Tests used a wildcard for the 21st field, so the mismatch went unseen.
- Day 0
The content update reaches the sensors update
Two further template instances are delivered, one of them with a non-wildcard match on the 21st input. Sensors that receive it crash at the next notification. Microsoft's post dates the release a day earlier than the vendor's own analysis does.
- Day 1
A number, a script and a recovery tool scale
Microsoft estimates that 8.5 million Windows devices were affected, less than one percent of all Windows machines, and publishes manual remediation steps. Its Intune support team publishes a recovery tool that builds boot media for the repair.
- Day 2
The tool gains a safe mode route and a network route recovery
The Intune support team's post is rewritten around two options. The new safe mode option may avoid the BitLocker recovery key. Media can be made as an ISO or a USB drive, and a network-boot route is added.
- Day 3
Version 3.1 of the tool recovery
The tool is updated with more logging, retry and error handling in the WinPE route, and clearer cues for when to run the repair in the safe mode route. Microsoft's advice stays: test on several devices before using it widely.
- Day 10
About 99 percent of sensors back online recovery
CrowdStrike reports that, in a week-over-week comparison, about 99 percent of Windows sensors are online compared with before the content update. The usual week-to-week variation is about 1 percent.
- Day 18
The root cause analysis is published analysis
CrowdStrike publishes its external technical root cause analysis, with the findings, the mitigations (staged deployment, more tests, bounds checks) and a crash dump walkthrough.
- Day 21
The hotfix is due fix
The analysis says the sensor hotfix that adds the bounds checks and the correct input count will be generally available by this day, and that customers can now choose where and when content updates are deployed.
The timeline has 8 events, from Sensor 7.11 to Day 21.
Read the figures in the order the documents gave them. On day 1 Microsoft estimated 8.5 million affected devices, and less than one percent of all Windows machines. That sentence carries a second number: if 8.5 million is under 1 percent, the Windows base is above 850 million devices. By day 10, CrowdStrike’s own measure had about 99 percent of Windows sensors back online compared with before the update, against a normal week-to-week variation of about 1 percent. By that measure the fleets were back within about ten days, and what a runbook has to plan for is the stretch before that, when thousands of PCs at one organisation can be down at once.
Notice also what arrived late. The vendor’s analysis came on day 18, and its sensor hotfix was due on day 21, so support teams worked through the first days with a repair and without an explanation. The communications part of any runbook has to work in that gap: state the facts known so far, the repair under way and the time of the next message, before anyone can explain the cause.
Checkpoint
Check: Scale and the first weeks
Recovery was a key problem as much as a boot problem
What did the repair have to do? Both of the routes Microsoft published run the same remediation: remove the faulty channel files, the files whose names start C-00000291 in the vendor’s drivers folder, before the sensor loads them again. That meant starting the PC into something other than its installed Windows, and on an encrypted PC that meant the volume had to be opened first. So the boot failure became a BitLocker question for every device that had it on.
Microsoft’s Intune support team published a recovery tool that builds boot media, and its post compares two options. The first, recovery from Windows Preinstallation Environment: a small Windows that starts from media or the network to install, service or repair an installed Windows. WinRE is built on it., is the one Microsoft recommends: it recovers systems quickly and directly and needs no local administrator privileges, but you may need to type the BitLocker recovery key by hand for each encrypted device. The second, recovery from safe mode: A start that loads only a limited set of files and drivers, to show whether default settings and basic drivers cause a problem. Windows and macOS both have one, reached differently. More in “Fix boot problems: WinRE, Safe Mode, Recovery”, may recover BitLocker-enabled devices without the key: it suits PCs with TPM-only protectors, but it needs an account with local administrator rights, and a PC protected with a TPM and a PIN needs the PIN or the key.
The post gives the practical details too. The media is a USB drive of 1 to 32 GB, which is wiped and formatted FAT32, made on a 64-bit Windows client with at least 8 GB of space to spare and administrator rights. The same tool can build an ISO for virtual machines. For PCs that cannot boot from USB there is a network-boot route, which needs wired PCs on the same subnet as the server. And Microsoft’s advice is to test on several devices before using any route widely. The table lets you choose by the three conditions that decide it:
Answer the questions above: the table then marks what fits your case and says why the rest does not.
| Route | No recovery key typed | No local admin needed | Works without USB | Keeps the user's data |
|---|---|---|---|---|
| Recovery USB drive (WinPE) How it starts: boot media, repair runs on its own | Poor may need the BitLocker recovery key for each encrypted PC | Good does not require local administrator privileges | Poor needs a USB drive of 1 to 32 GB, which is wiped | Good repairs the installed Windows in place |
| Recovery USB drive (safe mode) How it starts: boots to safe mode, repair run by hand | Mixed TPM-only PCs need no key; TPM plus PIN needs the PIN or key | Poor needs an account with local administrator rights | Poor needs a USB drive or an ISO for a virtual machine | Good repairs the installed Windows in place |
| Network boot (PXE) How it starts: boot image from a server | Mixed depends on the image chosen: WinPE asks for the key, safe mode may not | Mixed depends on the image chosen, as for the USB routes | Mixed no USB, but a wired PC on the same subnet as the server | Good repairs the installed Windows in place |
| Reimage the PC How it starts: a fresh image replaces Windows | Good no key is entered to repair the old installation | Good no local account on the old installation is used | Mixed the post names it for PCs that cannot use USB or PXE | Poor local data not stored elsewhere is lost |
How the answers decide
- “Can you retrieve the BitLocker recovery keys of the affected PCs in bulk?” No, or only one by one: adds a caveat to Recovery USB drive (WinPE). The WinPE route may ask for the recovery key of every encrypted PC, so retrieving them one by one sets the pace of the whole recovery.
- “Does every affected PC have a local administrator account you can sign in to?” No, not on all of them: rules out Recovery USB drive (safe mode). The safe mode route needs an account with local administrator rights on each PC, so it is ruled out where there is none.
- “Can the PCs boot from a USB drive?” No, policy or ports forbid it: rules out Recovery USB drive (WinPE) and Recovery USB drive (safe mode) and adds a caveat to Reimage the PC. Without USB the post offers network boot, and names reimaging for PCs that can use neither, at the cost of local data.
A detail of the safe mode route is worth keeping: the tool’s own screens warn that in some cases a BitLocker recovery key may be needed after it runs. A fleet that plans on “no key needed” should hold the keys anyway.
Mass incidents are when keys leak
Typing hundreds of 48-digit keys invites shortcuts: a spreadsheet on a shared drive, keys pasted into a team chat. Decide beforehand who may release keys, read each one only to the person at the PC, and keep keys out of tickets and chat, as the recovery-key lesson says.
Checkpoint
Check: Recovery routes and keys
A model of 500 PCs: where the hours go
How long does a recovery take? Nobody knows for a fleet they have not measured, and the honest way to talk about it is a model with assumptions you can read and change. This program takes 500 PCs, 12 minutes of technician time to repair each one with a recovery USB drive, and an assumption that 80 percent of the PCs are encrypted, so 400 of them need a key. It compares two ways of getting the keys, exported in bulk at 1 minute a PC and looked up one by one at 6 minutes a PC, for 5, 10 and 20 technicians. Press Edit and change the numbers:
# A model, not data: how long does it take to repair a fleet that cannot start?
# Every number below is an assumption chosen to be read and changed, not a measurement of any real incident.
PCS = 500
MINUTES_PER_PC = 12 # boot the recovery USB drive, run the repair, restart
ENCRYPTED_SHARE = 0.8 # share of the PCs that ask for a BitLocker recovery key
LOOKUP_MINUTES = {"keys exported in bulk": 1, "keys looked up one by one": 6} # per encrypted PC
ESCROW_GAP = 0.10 # share of the encrypted PCs whose key was never stored anywhere
TECHNICIANS = [5, 10, 20]
WORKDAY_HOURS = 8
def total_minutes(pcs, encrypted, lookup):
"""Technician minutes for the whole fleet: the repair on every PC plus one key lookup per encrypted PC."""
return pcs * MINUTES_PER_PC + encrypted * lookup
encrypted = round(PCS * ENCRYPTED_SHARE)
print(f"{PCS} PCs, {MINUTES_PER_PC} minutes each, {encrypted} of them encrypted")
print()
print("technicians".ljust(13) + "".join(name.ljust(28) for name in LOOKUP_MINUTES))
for techs in TECHNICIANS:
cells = []
for lookup in LOOKUP_MINUTES.values():
hours = total_minutes(PCS, encrypted, lookup) / 60 / techs
cells.append(f"{hours:5.1f} h = {hours / WORKDAY_HOURS:3.1f} working days".ljust(28))
print(str(techs).ljust(13) + "".join(cells))
bulk, slow = (total_minutes(PCS, encrypted, m) for m in LOOKUP_MINUTES.values())
print()
print(f"One-by-one lookup costs {slow - bulk} extra technician minutes = {(slow - bulk) / 60:.1f} technician hours")
stuck = round(encrypted * ESCROW_GAP)
print()
print(f"If {ESCROW_GAP:.0%} of the encrypted PCs have no stored key, {stuck} PCs cannot be opened with a key.")
rest = PCS - stuck
minutes = total_minutes(rest, encrypted - stuck, LOOKUP_MINUTES["keys exported in bulk"])
print(f"The other {rest} take {minutes / 60 / 10:.1f} h with 10 technicians; the {stuck} need another route.") Output
500 PCs, 12 minutes each, 400 of them encrypted technicians keys exported in bulk keys looked up one by one 5 21.3 h = 2.7 working days 28.0 h = 3.5 working days 10 10.7 h = 1.3 working days 14.0 h = 1.8 working days 20 5.3 h = 0.7 working days 7.0 h = 0.9 working days One-by-one lookup costs 2000 extra technician minutes = 33.3 technician hours If 10% of the encrypted PCs have no stored key, 40 PCs cannot be opened with a key. The other 460 take 9.8 h with 10 technicians; the 40 need another route.
Recorded with Python 3.14.8 on macOS 26 arm64. To run it yourself: mise exec python@3.14.8 -- python3 triage_sim.py
Runs on this device, in your browser. The first run downloads Python (about 13.5 MB), which is kept for the next runs.
Your run, in this browser
This is a model, not data: every number in it is an assumption, and the lesson uses it to see shape. The shape is clear. The repair itself is 6,000 technician minutes. Bulk key export adds 400, giving 6,400 minutes, which 10 technicians clear in 10.7 hours, or 1.3 working days of 8 hours. One-by-one lookup adds 2,400, giving 8,400 minutes and 14.0 hours for the same 10 technicians. The difference is 2,000 minutes, or 33.3 technician hours.
Compare that with adding people. Getting from 14.0 hours back to 10.7 by hiring takes about 13 technicians instead of 10, so exporting the keys in bulk was worth about three technicians for this fleet, and it needed no new hires, only a process that existed before the incident. That is the case for key work done in calm weeks.
The last block of the output adds the gap that matters most. If 10 percent of the encrypted PCs have no stored key, 40 PCs cannot be opened with a key at all. The other 460 take 9.8 hours with 10 technicians, and the 40 need another route: safe mode where the PC has TPM-only protectors and a local administrator account, otherwise a wipe or a decision about the data.
Key idea
Recovery time depended on preparation as much as on headcount: keys that can be retrieved in bulk were worth about three technicians in the model, and keys that were never stored left 40 PCs without a key route.
Checkpoint
Check: A model of recovery time
What staged rollouts and key escrow change
CrowdStrike’s analysis lists what the vendor changed, and the list is a lesson in how a bad update is kept small. It added checks for the number of inputs at compile time, a runtime bounds check in the interpreter, a content validator that rejects rules matching more fields than the sensor supplies, and tests with non-wildcard criteria for every field. It also moved to staged deployment: a new rule goes first to a canary group, then to wider rings, with bake-in time between rings while telemetry is read, and rolled back if problems appear. Customers were given control over where and when content updates are deployed. A staged rollout: Releasing a change to a small group first, waiting while its health is watched, then widening in rings only if the group stays healthy. A bad change then harms only the first ring. keeps the blast radius: How many users, devices or services a single mistake or failure can affect. Staged rollouts, rings and separate failure domains exist to keep it small. of a mistake to the first ring.
A support team does not write the vendor’s validator, but it owns several defences of the same kinds:
| Defence | What it limits | Who owns it |
|---|---|---|
| Your own update rings and a pilot group | How many PCs get a bad change first | Endpoint team |
| The vendor’s content controls | Whether the whole fleet takes content at once | Security and endpoint teams |
| Recovery keys stored and audited | PCs that cannot be opened at all | Security and service desk |
| Recovery media made and tried | The hours lost before the first repair | Service desk |
| Quick machine recovery on a pilot group | PCs that wait for a technician | Endpoint team |
The last row connects to the boot problems lesson. Microsoft’s documentation describes quick machine recovery: A Windows 11 feature that, after repeated failed starts, boots into WinRE, connects to a network and applies a fix from Windows Update. It is best effort and does not reset the PC or touch files. More in “Fix boot problems: WinRE, Safe Mode, Recovery” as built to recover from widespread boot failures by fetching a fix from Windows Update, and it is off by default on managed devices, so an organisation has to choose it before a failure. It depends on Microsoft publishing a fix, so it is one defence among several, not a substitute for the rest. Updates, patches and drivers covers rings, and BitLocker and FileVault recovery keys covers escrow and the audit that finds a missing key before the day it matters.
Checkpoint
Check: Staged rollouts and escrow
Writing the runbook for your own mass incident
A runbook: A written plan for a known kind of incident: roles, decisions, steps, who speaks and how a fix is checked. It is written in calm weeks for the day when nobody has time to think. is the plan written for the day when nobody has time to think. The case suggests six phases, and each has a decision that someone owns before the phase begins. Step through them with the numbers of the model:
The drawing shows the whole scene; its 6 steps are listed below.
Every step as text
- Declare it and size it. A mass incident is declared when many PCs fail alike, and the first act is a number: how many are down, which groups, which are encrypted. Name an incident lead, a communications lead, a recovery lead and the person who may release recovery keys.
- Stop it growing. Pause the update ring or the content channel that delivered the change, so that PCs still working stay that way. Containing the cause comes before repairing any single PC.
- Pick the route from the facts. Use the three questions of the routes table: are keys retrievable in bulk, is a local administrator available, can the PCs boot from USB. The answers rule routes out before anyone prepares media.
- Recover in waves. Test the route on a handful of PCs, as the vendor's own advice says, then work in waves by group. In the model, 10 technicians need about 10.7 hours for 500 PCs when keys are exported in bulk.
- Check each repaired PC. A repaired PC is not finished until it signs in, the security agent is running again and BitLocker protection is on. Record the PC, the technician and the time, so that the count the manager hears is the count of PCs verified.
- Close it and change something. Close the incident with a short record of the cause, the route used, the PCs that needed another route and the gaps found, such as keys that were never stored. Then fix one gap before the next incident.
Three parts decide whether the runbook works. Roles come first: an incident lead who decides, a communications lead who speaks to everyone else, a recovery lead who runs the technicians, and the one person allowed to release recovery keys. Without a named communications lead, technicians answer every manager and recover nothing. Second is a communication cadence: choose a number of minutes and keep it, for example an update every 60 minutes in the first day, because silence produces more calls than bad news does. Third is verification: a PC is recovered when it signs in, the security agent runs again and BitLocker protection is on, and the count reported upward is the count verified, not the count touched. For the writing itself, the note habits of ticket notes and handoffs carry over: a timestamp with a zone, what was done, what is next.
A runbook that nobody has rehearsed fails at the first step. A tabletop exercise: A rehearsal in which a team talks through an invented incident, with surprises added as it goes, to find the gaps in a runbook while they are cheap to fix. walks the team through an invented incident around a table, with injects such as “the key export is not allowed” or “the recovery USB drives will not boot on the new model”, and it finds the gaps while they are cheap. Prepare the recovery media: A bootable USB drive, ISO or network image that starts a PC from outside its installed system so that it can be repaired. It should be made, tested on the models you own and kept ready. before then, and test it on the models you actually own.
Checkpoint
Check: The mass-incident runbook
Practise: audit a runbook for gaps
A runbook review starts with a checklist that a person or a program can apply: are the roles named, is there a cadence,
does it say where keys come from, who makes the media, how each PC is checked, and how the incident closes? Write
runbook_gaps(runbook) to report the sections that are missing, in a fixed order. A runbook in the wrong shape raises an error, so
that a mistake in the call is never reported as a complete runbook.
Exercise · Easy · Python
Find the gaps in a mass-incident runbook
Write runbook_gaps(runbook) so that it returns the list of gaps in a mass-incident runbook, in a fixed order. A runbook is a dictionary with these keys:
roles: a list of role names, such as["incident lead", "communications", "recovery"];comms_every_minutes: how often a status update goes out, a whole number of minutes;key_source: where recovery keys are retrieved from, a string;media: how the recovery media is made and tested, a string;verification: how each repaired PC is checked, a string;closure: how the incident is closed and what changes afterwards, a string.
Check the sections in this order and add one name to the result for each that fails:
"roles"fails whenrolesis missing or holds fewer than three roles."comms"fails whencomms_every_minutesis missing, is not a whole number (abooldoes not count), or is not between 1 and 120."keys","media","verification"and"closure"fail when their key is missing or its text is empty once leading and trailing spaces are removed (key_sourcegives"keys").
A complete runbook returns []. If runbook is not a dictionary, raise TypeError, so that a runbook passed in the wrong shape is never reported as complete.
Starter code · runbook_gaps.py
def runbook_gaps(runbook):
"""Return the names of the sections that a mass-incident runbook is missing, in a fixed order."""
return [] The sample tests · test_runbook_gaps.py
from runbook_gaps import runbook_gaps
FULL = {
"roles": ["incident lead", "communications", "recovery"],
"comms_every_minutes": 60,
"key_source": "directory export, owner: security team",
"media": "USB drives made and tried on three PCs",
"verification": "sign-in, agent running, BitLocker on",
"closure": "record cause, route and gaps; fix one gap",
}
def test_a_complete_runbook_has_no_gaps():
"""returns an empty list for a runbook with every section"""
assert runbook_gaps(FULL) == []
assert runbook_gaps(dict(FULL, comms_every_minutes=120)) == []
def test_missing_text_sections_are_named_in_order():
"""names the text sections that are missing or blank, in the fixed order"""
broken = dict(FULL, closure=" ")
del broken["key_source"]
assert runbook_gaps(broken) == ["keys", "closure"]
assert runbook_gaps({}) == ["roles", "comms", "keys", "media", "verification", "closure"]
def test_roles_need_three_entries():
"""reports roles when fewer than three are named"""
assert runbook_gaps(dict(FULL, roles=["incident lead", "recovery"])) == ["roles"]
assert runbook_gaps(dict(FULL, roles=[])) == ["roles"]
def test_the_update_cadence_must_be_a_whole_number_up_to_120():
"""reports comms for a missing, too long, zero or non-integer cadence"""
for bad in (180, 0, -5, 45.5, "60", True):
assert runbook_gaps(dict(FULL, comms_every_minutes=bad)) == ["comms"], bad
def test_a_runbook_in_the_wrong_shape_is_refused():
"""raises TypeError when the runbook is not a dictionary"""
for bad in (None, ["roles"], "runbook"):
try:
runbook_gaps(bad)
except TypeError:
continue
raise AssertionError(f"runbook_gaps({bad!r}) should raise TypeError") A hint
Build the result by checking the six sections in the prompt's order and appending a name for each failure, so the order is right without any sorting. Write one small helper for the four text sections: it returns True when runbook.get(key) is a string whose .strip() is not empty. For the cadence, remember that True is an int in Python, so test type(value) is int rather than isinstance(value, int).
Results of the sample tests
| Test | Result | Details |
|---|
What your code printed
The sample tests run on this device, in your browser (Pyodide): nothing is sent to mysmartcopilot.com. The first run downloads Python (about 13.5 MB), which is kept for the next runs. A check in your browser is feedback for you, not proof that the code is right for every input.
The self-check that follows asks about the chain of events, the recovery routes, the model’s numbers and the defences.
Practice that adapts to you
Practise this lesson
12 questions about 6 ideas of this lesson. Each answer is explained at once, and what you get right is kept in this browser.
Interview questions
Warm-up (fresher): why did the bad update cause a boot loop and not one crash that a restart would clear?
The sensor’s driver runs in the kernel and loads from an early phase of start-up. The faulty content was stored on disk and read at every start, so each restart reached the same rule, the same out-of-bounds read and the same blue screen. The repair had to happen from outside the installed Windows, by starting from recovery media or into safe mode, and removing the faulty channel files before the driver read them again.
Warm-up (fresher to 2-5 years): which of Microsoft’s two recovery options would you choose first, and what decides it?
WinPE, which Microsoft recommends, because it needs no local administrator account and repairs directly, if I can supply recovery keys quickly. The safe mode option may avoid the key on PCs with TPM-only protectors but needs a local administrator account on every PC, and a TPM plus PIN still needs the PIN or the key. So I decide by three facts: are keys retrievable in bulk, is a local administrator available, can the PCs boot from USB. I would try the route on a few PCs first.
Two harder calls follow, one at the start of the day and one about keys. Decide your first move before you read the model answer:
Model answers open with any pass: ₹79 for 1 week ($2.99), one payment that never renews.
-
Mid to senior
At 07:15, 800 of your 3,000 PCs show a blue screen and the desk has 120 calls. A security vendor confirms a bad content update. You have 20 technicians and recovery USB drives. The CEO's office wants a time for "everything working". What do you do in the first two hours, and what time do you give?
-
Senior to staff
You must recover 1,200 encrypted PCs with 12 technicians, at 12 minutes of repair each. 90 percent of the keys are in the directory, but policy forbids a bulk export; the other 10 percent have no key anywhere. Work out the time, decide what exception to ask for, and say what happens to the 10 percent.
Flashcards · 6 cards
Recall it, then check
Say the answer to yourself before you look: recalling it is what makes it stick.
-
Why did the faulty content update cause a boot loop rather than one crash?
The sensor's driver runs in the kernel and loads early, and the faulty content stayed on disk, so every restart reached the same out-of-bounds read and the same blue screen.
-
Which chain of conditions led to the crash?
A template defined 21 inputs while the code supplied 20, the tests used a wildcard for the missing input, and one content update then used it for real.
-
What did each of Microsoft's two recovery routes need?
Both removed the faulty channel files. The WinPE route could need a BitLocker key for each encrypted device, and the safe mode route needed a local administrator.
-
In the model of 500 PCs, what was bulk key export worth?
About 2,000 technician minutes, the work of about three technicians, while keys that were never stored left 40 PCs with no key route at all.
-
What limits the damage a bad update can do across a fleet?
Staged rollouts, which keep the blast radius small, and escrow of recovery keys. A support team owns its own update rings, key audit and tested recovery media.
-
What does a mass-incident runbook hold, and how are its gaps found?
Roles, a communication cadence, where keys come from, prepared media, a check of each PC and a single closing change. A tabletop exercise finds its gaps while they are cheap to fix.
Key takeaways
- The failure was a chain of conditions: a template defined 21 inputs while the code supplied 20, tests used a wildcard for the missing input, and one content update used it for real.
- A kernel driver that loads early and reads the same content every time turns a crash into a boot loop that restarting cannot fix.
- Microsoft’s two recovery routes both remove the faulty channel files, and the WinPE route may need a BitLocker key for each encrypted device while the safe mode route needs a local administrator.
- In the model of 500 PCs, bulk key export saved 2,000 technician minutes, worth about three technicians, and keys that were never stored left 40 PCs without a key route.
- Staged rollouts and recovery-key escrow limit the damage of a bad update, and a support team owns its own update rings, key audit and tested recovery media.
- A mass-incident runbook names roles, fixes a communication cadence, says where keys come from, prepares media, verifies each PC and closes with one change, and a tabletop exercise finds its gaps early.
Terms in this lesson
- blast radius
- How many users, devices or services a single mistake or failure can affect. Staged rollouts, rings and separate failure domains exist to keep it small.
- channel file
- A file by which a security vendor delivers detection rules to its software on a PC between releases. In the 2024 incident a faulty update to one such file crashed Windows at start-up.
- out-of-bounds read
- A program reading memory beyond the end of the data it was given, for example the 21st value of a 20-value array. In a kernel driver it can stop Windows with a blue screen.
- recovery media
- A bootable USB drive, ISO or network image that starts a PC from outside its installed system so that it can be repaired. It should be made, tested on the models you own and kept ready.
- runbook
- A written plan for a known kind of incident: roles, decisions, steps, who speaks and how a fix is checked. It is written in calm weeks for the day when nobody has time to think.
- staged rollout
- Releasing a change to a small group first, waiting while its health is watched, then widening in rings only if the group stays healthy. A bad change then harms only the first ring.
- tabletop exercise
- A rehearsal in which a team talks through an invented incident, with surprises added as it goes, to find the gaps in a runbook while they are cheap to fix.
References
- External Technical Root Cause Analysis, Channel File 291 (CrowdStrike)
- Helping our customers through the CrowdStrike outage (Microsoft)
- New recovery tool to help with CrowdStrike issue impacting Windows endpoints (Microsoft)
- Quick machine recovery (Microsoft)
- BitLocker recovery overview (Microsoft)
Report a problem with this lesson
Kept only in this browser. Your Learn progress