Topic

Did C++ cause the July 19th 2024 CrowdStrike outage?

12
Sources

Summary

On July 19th, 2024, a CrowdStrike Falcon sensor update crashed an estimated 8.5 million Windows machines globally, disrupting airlines, hospitals, 911 services, and critical infrastructure. The incident was traced to an out-of-bounds memory read when the sensor's Content Interpreter attempted to access the 21st element of a 20-element input array while processing Channel File 291. This immediately reignited debate across programming language communities: Was this a failure of memory-unsafe languages, inadequate testing processes, or deployment practices? Different communities drew different conclusions about what the outage revealed, occurring just five months after the White House urged adoption of memory-safe languages and 16 months before the CloudFlare Rust outage that would invert the tribal positions.

Timeline

Jul 19, 2024
Hacker News

CrowdStrike Update: Windows Bluescreen and Boot Loops

Hacker News user
View source
r/crowdstrike

BSOD error in latest crowdstrike update

Reddit user
View source
r/rust subreddit

CrowdStrike global outage; is it a memory error?

Reddit user
View source
Jul 20, 2024
r/rust subreddit

What would happen if CrowdStrike used Rust instead?

Reddit user
View source
r/programming subreddit

Inside The Outages: A Dangerous Null Pointer Exception Deployed On Friday

Reddit user
View source
The Stack

Crowdstrike promises RCA as C++ null pointer claim contested

The Stack
View source
Hacker News

CrowdStrike debacle provides road map of American vulnerabilities to adversaries

jmsflknr, Hacker News user
View source
Jul 23, 2024
Substack: Julio Merino

Rust doesn't solve the CrowdStrike outage

Julio Merino
View source
Congress.gov

The July 19th Global IT Outages

Chris Jaikaran
View source
Jul 24, 2024
CrowdStrike website

Preliminary Post Incident Review (PIR): Content Configuration Update Impacting the Falcon Sensor and the Windows Operating System (BSOD)

CrowdStrike
View source
Jul 25, 2024
SonarSource Blog

What Code Issues Caused the CrowdStrike Outage?

Sonar
View source
Aug 06, 2024
CrowdStrike website

CrowdStrike Official Root Cause Analysis

CrowdStrike
View source

Conclusion

In February 2024, the White House urged tech companies to ditch C/C++ for memory-safe languages like Rust. Five months later, CrowdStrike handed them the perfect case study: a C-based kernel driver crashed 8.5 million Windows machines, cost $5.4 billion, and grounded planes worldwide. The bug? An out-of-bounds memory read, exactly the kind of error Rust's bounds checking prevents at compile time. Rust advocates pounced immediately, flooding Medium and Hacker News with "this is why we need Rust" takes. Articles declared that had CrowdStrike used Rust, the whole disaster would've been avoided. The White House guidance looked prophetic. Memory-unsafe languages were killing critical infrastructure, and here was the proof everyone needed.

Except CrowdStrike's own August root cause analysis told a different story: Content Validator logic errors, missing test coverage, no staged rollout, and a config file that bypassed all the safety checks Microsoft's Hardware Lab Kit was supposed to enforce. The out-of-bounds read was the symptom, not the disease. The real failure was pushing untested configuration changes to 8.5 million machines simultaneously: a process failure that would've nuked a Rust codebase just as dead. Sixteen months later, when CloudFlare's Rust proxy panicked on .unwrap() and took down 20% of the internet, the tribes simply swapped positions. Rust skeptics who'd defended CrowdStrike's C code as a "process issue" now blamed Rust's language design. Rust advocates who'd spent July 2024 explaining why memory safety would've saved CrowdStrike suddenly pivoted to "this was poor code review, not a language problem." Both incidents had identical root causes: no input validation, no canary deployments, config changes pushed globally with zero safeguards. But admitting that would mean giving up the language war, and nobody's ready to do that.