Incident · Mid
CrowdStrike 2024: Channel File 291 takes down 8.5 million machines
Real incident. Key points: progressive deploys and cell-based architecture.
Short answer
Real incident. Key points: progressive deploys and cell-based architecture. On July 19, 2024, a content update to CrowdStrike's Falcon sensor took down Windows hosts. The source for this case is the root cause analysis (RCA) report published by the company itself, complemented by its preliminary incident report.
01 · CONTEXT
A kernel sensor and two update paths
On July 19, 2024, a content update to CrowdStrike's Falcon sensor took down Windows hosts. The source for this case is the root cause analysis (RCA) report published by the company itself, complemented by its preliminary incident report. The sensor reaches the customer through two paths: Sensor Content, shipped along with the sensor, and Rapid Response Content, delivered from the cloud to react quickly to new threats.
Rapid Response Content is configuration, not code. Sensor Content, on the other hand, follows a staged release, with internal use, early adopters, and only then general availability, and the customer chooses which version to install. The RCA is precisely about bringing that staged discipline to the fast path.
Detection engineers create new rules, and the configuration system turns them into template instances.
Before publication, the validator checks the content against the template type definition.
The channel file is published and delivered to online sensors.
On the host, the sensor runs as a kernel driver: an error in it takes down the entire system, not just the application.
02 · THE INCIDENT
A short window, an entire Windows fleet
The faulty update was published at 04:09 UTC on July 19, 2024 and reverted at 05:27 UTC. Anyone who was online in that window and received the channel file was affected; anyone who connected after the revert, or did not connect during the window, was not.
| In scope | Out of scope | |
|---|---|---|
| Sistema | Windows with sensor 7.11 or higher | Mac and Linux |
| Momento | Online between 04:09 and 05:27 UTC and with the update received | Online only after the revert, or without a connection during the window |
On July 29, the company reported that about 99% of Windows sensors were online compared with before the update.
03 · THE ROOT CAUSE
Twenty values delivered, twenty-one expected
The cause was not a single error but the combination of three: the template type definition called for 21 inputs while the integration code supplied 20, the interpreter had a latent out-of-bounds read, and no test exercised a non-wildcard criterion in the 21st field.
The template type definition said it received 21 input fields, and the validator checked the content against that definition.
The sensor's integration code gave the interpreter only 20 values, one fewer than the definition promised.
In the tests and the first instances, the 21st field used a wildcard, so the test did not expose the missing value.
On July 19, an instance came in with a non-wildcard criterion in the 21st field. The validator, which assumed 21 inputs, approved it.
The interpreter tried to read the 21st value, which did not exist: an out-of-bounds read, an unhandled exception, and a system crash.
Memory dump analysis points to the csagent.sys driver, a kernel driver, as the source of the invalid read.
This is a classic case of an inconsistent contract: two parts of the system disagreed on the data format, and each one passed the checks that were based on its own assumption.
04 · WHY NOBODY SAW IT
Passing tests and inherited confidence
The automated tests used a static set of 12 cases, and the test channel included a wildcard criterion in the 21st field of every instance. As a result, the out-of-bounds read was never exercised. Between April 8 and 24, 2024, three additional instances were deployed and worked as expected.
The decision to deploy the July instances weighed the tests done before the template type launched, confidence in the validator's checks, and earlier successful deployments.
05 · WHAT CHANGED
Closing the cause and reducing the blast radius
| What was missing | Announced fix | |
|---|---|---|
| Sensor build | The number of fields in the template type was not validated | A compiler patch began validating the number of inputs |
| Interpretador | There was no bounds check on the input vector | Bounds check added to the function that reads the inputs |
| Testes | Only wildcard criteria in the last field | Automated tests with a non-wildcard criterion in every field |
| Validador | Approved content over more fields than the sensor supplied | New checks against criteria beyond the supplied fields |
Besides closing the cause, the RCA addresses limiting the damage of a next failure. The finding is direct: each template instance must be deployed in stages. Instances approved in the canary are promoted to progressively wider rings, or reverted if problems arise, and promotion to the next ring comes with extra observation time, during which telemetry is collected.
Validated content goes first to a canary ring, a small group of sensors.
Canary telemetry shows whether there are system crashes, a rise in false detections, or performance problems.
With healthy signals, the system promotes the content. With bad signals, it reverts.
Promotion proceeds ring by ring until the full fleet, and each ring accumulates observation time before the next.
The customer also gains control over where and when content is deployed.
06 · LESSONS
What to take into your design
The first lesson is about disponibilidade: every path that reaches the entire fleet must have a stage that limits the damage before the failure signal, whether it is code or configuration. The second is about observabilidade: promoting content only makes sense if the previous stage's telemetry can say it is healthy.
The third is about recovery: reverting the content at the source does not, by itself, fix the machines that already loaded the faulty file. A disaster recovery plan must account for the case where the agent that failed is on all hosts at the same time.
Frequently asked questions
What is CrowdStrike 2024: Channel File 291 takes down 8.5 million machines?
Real incident. Key points: progressive deploys and cell-based architecture.
What does the CrowdStrike 2024: Channel File 291 takes down 8.5 million machines design cover?
It is organized in these sections: A kernel sensor and two update paths, A short window, an entire Windows fleet, Twenty values delivered, twenty-one expected, Passing tests and inherited confidence, Closing the cause and reducing the blast radius, and What to take into your design.
How long is CrowdStrike 2024: Channel File 291 takes down 8.5 million machines and what level is it?
It takes about 12 minutes to read and is rated Mid level.
Now design it yourself
Run this case as an interview in the System Design school: you make the decisions, the tutor challenges them and you see how your design scores.