Cloud & DevOpsNote
Two projects' own accounts, November and December 2025: a Cloudflare outage that began with a Rust panic, and the first Linux kernel CVE in Rust code, inside an unsafe block.
On 18 November 2025, from 11:20 UTC, most of Cloudflare’s core traffic stopped flowing because its proxy, written in Rust, met a file larger than it allowed and stopped itself. Cloudflare called it its worst outage since 2019.1 Four weeks later the Linux kernel published the first CVE for its Rust code: a bug that corrupted memory, inside a block the programmer had marked unsafe.35 Rust is a memory-safe language. Both accounts, read in each project’s own words, show what that covers and what it does not.
At 11:05 Cloudflare changed database permissions. A query that builds the feature file for its Bot Management model began returning duplicate rows, and the file doubled in size. The proxy allows 200 features, against about 60 in use, and reserves memory for them in advance. The new FL2 proxy, in Rust, hit the limit and stopped with the message “called Result::unwrap() on an Err value”, serving errors to visitors. The older FL proxy, built on NGINX and Lua, read the same file without an error but gave every request a bot score of zero, so customers who block bots blocked real users. Core traffic was largely back by 14:30 and every system by 17:06.1
unwrap means “this step worked; if it did not, stop”. The proxy never read or wrote memory it should not have. It stopped, as written, on an input nobody expected. Cloudflare’s fixes are about inputs and failure: treat its own configuration files as carefully as user input, add more global kill switches, and review how every proxy module fails.1
Seventeen days later, on 5 December, about 28% of Cloudflare’s HTTP traffic failed for some 25 minutes on a Lua error in the old FL proxy. Cloudflare wrote that “this type of code error is prevented by languages with strong type systems” and that in FL2, in Rust, “the error did not occur”.2
Binder is how Android apps and services talk to each other; Linux 6.18, released on 30 November 2025, shipped a Rust version of its kernel driver.7 CVE-2025-68260, published on 16 December, quotes the line at fault: an unsafe list removal whose comment assumed no other thread could touch the item. One could. Two threads changed the same pointers, which “leads to memory corruption” and crashes. Linux 6.18.1 fixed it on 12 December.37
unsafe marks code the Rust compiler does not check, where the programmer vouches for memory instead. Greg Kroah-Hartman, who runs the kernel’s CVE process, wrote that day that Rust is not “a ‘silver bullet’” but “will cut out huge swatches of Linux kernel vulnerabilities”, that this bug “just causes a crash”, and that 159 other kernel CVEs issued the same day were for C code.5 The record, as updated on 5 August 2026, scores it 7.8 (High) and describes a path from the corruption to a use-after-free and, potentially, to control of the kernel.3
Memory safety means the compiler refuses code that reads or writes memory it should not: running past the end of a buffer, or using memory after it has been freed. It does not check whether an input fits a limit, what a program does when a step fails, or the promise a programmer makes inside unsafe. Cloudflare wrote this in September 2025, when it moved traffic to FL2: Rust “eliminates entire classes of bugs”, yet “it’s easy to write code in Rust, which causes memory corruption”, so it adds linting, coding standards and review.4
Within four weeks, Cloudflare's Rust proxy stopped on a bad file and kernel Rust code corrupted memory inside unsafe
Events in each project's own record, September 2025 to August 2026
| Date | Event | Detail |
|---|---|---|
| 26 Sept 2025 | Cloudflare: FL2 in Rust | “entire classes of bugs” removed; memory corruption still “easy to write” |
| 18 Nov 2025 | Rust proxy panics | Oversized Bot Management file; 11:20 to 17:06 UTC; old proxy scored all traffic zero |
| 30 Nov 2025 | Linux 6.18 | First release with the Rust Binder driver |
| 5 Dec 2025 | Lua proxy fails | About 28% of HTTP traffic for 25 minutes; did not occur in the Rust FL2 |
| 12 Dec 2025 | Linux 6.18.1 | Fixes the death_list race |
| 16 Dec 2025 | CVE-2025-68260 | First kernel CVE for Rust code; memory corruption in an unsafe block |
| 5 Aug 2026 | Record updated | CVSS 3.1 score 7.8, High |
Source: Cloudflare blog; Linux kernel CVE record, announcement and git tags · as of 18 October 2026 · Cloudflare times are UTC; kernel dates are release or publication days
Each record says what failed and what changed: at Cloudflare, how the proxy treats its own configuration and fails; in the kernel, the one line whose safety comment assumed too much.
Sources
Related on TechBag: the Cloudflare hub and the observability guide.
Disclosure. TechBag is a software reseller: it earns a margin when a reader buys through it, including from vendors named here. The analysis is TechBag’s own; no vendor paid for or saw this piece before publication. Facts are labelled reported, TechBag count or our view.