Email me

Dev · · 5 min read · Matt Busel

By , who built the apps, crates and game he writes about · every number links to its source and every dataset is downloadable (methods) · corrections · featured in Kirino, gamebiz, This Week in Rust, New Mobile Life, By-Press

Filed under Rust

systemd lets Rust in: 0 of its last 14 CVEs were memory bugs

systemd lets Rust in: 0 of its last 14 CVEs were memory bugs
On this page · 9 sections
  1. Key numbers
  2. Rust got into PID 1's house, on a short leash
  3. The data: systemd's memory bugs already stopped
  4. What broke systemd since 2023: logic, not memory
  5. So is Rust in systemd pointless? No. Here is the real bet
  6. By the numbers: three eras of systemd bugs
  7. Who blocks it? We looked, and the answer is nobody
  8. What this means for you
  9. Sources

Short answer: Yes, systemd now accepts programs written in Rust. Christian Brauner's pull request #44324 merged on October 24 2026, adding 5,144 lines. But our pull of every systemd CVE in the US National Vulnerability Database says the bug Rust kills best, memory corruption, has not shown up in systemd since November 2022. The next systemd bugs will be logic bugs, and no language fixes those for you.

TL;DR: NVD lists 55 CVEs against systemd, and 15 of them (27%) are memory-safety weaknesses like buffer overflows and use-after-free. All 15 landed between 2013 and 2022; the 14 CVEs published from 2023 to October 2026 contain zero. Rust is 0.36% of the systemd codebase today and the maintainers limited it to new leaf programs, no cargo and no outside crates, so the real win is the next new component, not the 45 MB of C already there.

Key numbers

WhatNumberSource, checked Oct 27 2026
systemd CVEs in NVD55NIST NVD API
Memory-safety CVEs (overflow, out-of-bounds, use-after-free, null deref, unbounded allocation)15 (27%)NIST NVD API, our CWE tagging
Memory-safety CVEs, 2018-202211 of 27NIST NVD API
Memory-safety CVEs, 2023-Oct 20260 of 14NIST NVD API
Last memory-safety CVECVE-2022-3821, Nov 8 2022NVD
Rust PR size+5,144 / -11 lines, 54 filessystemd PR #44324
Rust share of systemd source0.36% (185 KB of 51 MB)GitHub languages API
Animated bars of systemd memory-safety CVEs by era: 4 of 14 in 2013-2017, 11 of 27 in 2018-2022, 0 of 14 in 2023-2026
systemd memory-safety CVEs by era. Source: NIST NVD, pulled Oct 27 2026

Rust got into PID 1's house, on a short leash

systemd is the program that boots most Linux machines and keeps their services alive. When it breaks, the box breaks.

The rules came out of the maintainers' Berlin hackfest, and Brauner spelled them out in the PR: Rust only for new leaf components, existing C is not ported, nothing other parts depend on is written in Rust, no cargo, everything built with meson.

The code is no_std (Rust without its standard library) and uses only the core, alloc and libc crates. It even skips Rust's own collections, because they abort when memory runs out. systemd ships its own Box and Vec that return an error instead, the same trick the Linux kernel uses.

The first customer is systemd-keyring-setup, a new tool that enrolls certificates into kernel keyrings. That is the pattern: new security-sensitive code gets the safe language first.

The data: systemd's memory bugs already stopped

We pulled all 55 systemd CVEs from NVD and tagged each by its weakness type (CWE). Overflows, out-of-bounds reads and writes, use-after-free, null dereference, integer overflow and unbounded allocation count as memory-safety.

The worst ones are exactly what Rust prevents. CVE-2015-7510 was a stack buffer overflow in nss-mymachines, scored 9.8. CVE-2022-2526 was a use-after-free in systemd-resolved, also 9.8. CVE-2018-15688 let a hostile DHCPv6 server overflow a buffer in the client.

Then the line goes flat. After the off-by-one in CVE-2022-3821 in November 2022, NVD has no memory-safety CVE against systemd at all.

Line chart of systemd CVEs per year 2013-2026, all CVEs versus memory-safety CVEs; memory-safety count is zero every year from 2023 to 2026
systemd CVEs per year by NVD publish date. Source: NIST NVD, pulled Oct 27 2026

What broke systemd since 2023: logic, not memory

The 14 CVEs since 2023 are integrity-check gaps in sealed journal logs (three of them), privilege handling, authorization, and data crossing a trust boundary it should not cross.

The April 2026 batch alone had six: a local privilege escalation in systemd-machined via varlink (CVE-2026-40224), local root via malicious hardware in udev (CVE-2026-40225), and an nspawn container escape (CVE-2026-40226).

Rust's borrow checker does not stop any of those. A Rust program can trust the wrong input, grant the wrong permission or forget to check a signature just as easily as C can.

Bars of weakness types on the 14 systemd CVEs from 2023 to Oct 2026: integrity check 3, privilege management 2, wrong-sphere transfer 2, then single cases; none are memory bugs
CWE types on systemd CVEs since 2023. Source: NIST NVD, pulled Oct 27 2026

So is Rust in systemd pointless? No. Here is the real bet

Our read: the quiet since 2022 is not C getting safe. It is years of fuzzing, hardening and a few very careful people paying a tax on every line. That tax does not scale to new code written by new contributors.

Rust moves the tax to the compiler. New leaf programs like keyring-setup start life with a whole bug class closed, so reviewers spend their attention on the logic bugs that actually ship now.

The people who should be nervous are the "rewrite it all in Rust" crowd and the "Rust is a fad" crowd at the same time. systemd picked neither: no rewrite, no ban, a fenced yard for new code. Our bet is that this fence is the template Debian, Fedora and the kernel tooling copy next.

Bars of systemd source by language in megabytes: C 44.9, Shell 3.2, Python 2.3, Meson 0.6, Rust 0.18, which is 0.36% of the total
systemd source by language. Source: GitHub languages API, pulled Oct 27 2026

By the numbers: three eras of systemd bugs

2013 to 2017: 14 CVEs, 4 memory-safety (29%). The young project, with an integer overflow in journald and the stack overflow in nss-mymachines.

2018 to 2022: 27 CVEs, 11 memory-safety (41%). This was the peak, when researchers hammered journald, resolved and the DHCP client. Three of them (CVE-2018-16864, 16865 and 16866) were published the same day, all against journald.

2023 to October 2026: 14 CVEs, 0 memory-safety. Severity did not vanish either: the 2026 batch includes local root and a container escape, scored up to 6.7.

Across all 55, 19 scored 7.5 or higher, and 9 of those 19 were memory bugs. So when systemd had a truly dangerous bug, close to half the time it was the kind Rust closes by construction. That is the limit worth pushing back: the next new daemon should never be able to add a tenth.

Who blocks it? We looked, and the answer is nobody

The PR merged with five comments and a split Lennart Poettering asked for to make review easier. No veto, no flame war in the thread. The limits on Rust (no cargo, no crates, leaf only) are engineering choices about build reproducibility and supply chain, not a turf fight.

That matters given what we found this week: a 10.0 RCE in the zip crate left Rust projects stuck on old versions. systemd's "no outside crates" rule means that class of bug cannot reach PID 1 through a dependency.

What this means for you

  • If you run Linux servers: Rust in systemd changes nothing today. Patch for the April 2026 CVEs (systemd 260/261), which are logic bugs. Download our CSV of all 55 CVEs and check your version against it.
  • If you maintain a C project: copy the systemd recipe. Fence Rust to new leaf code, ban outside crates in the core, keep your build system. You close the memory class for everything new without a rewrite.
  • If you write Rust: the next wave of bugs is logic. Spend review time on permissions, input trust and signature checks, the things the compiler will not catch.

More: our Rust hub, the Rust article archive, the crates we track and the news desk.

Stuck on a Rust build, a dependency bump or a CVE you cannot patch cleanly? Get it fixed: fixed within 24 hours or a full refund.

Sources

First published here on tensorust.com on Oct 27, 2026. Related: .

Up next

More on Rustzip crate CVE: 77% of top Rust dependents can't get the 10.0 fixThe zip crate fixed a critical CVE in 9.0.5, but 232 of the 300 biggest crates using it pin an older major. Only 16.4% of daily downloads are patched.Read it next →

Cite this

Free to cite and reuse under CC BY 4.0 with a link back. How it was collected: methods. Spotted an error? Corrections.

Did this answer your question?

Get the next one by email.

What my AI agents tried this week, with the real numbers: what worked, what flopped, what made money. One email when there is something worth reading.

No spam, never sold. Every email has a one-click unsubscribe.

What are people saying about this? Read and post on The Floor →

More: the author, related reading, share this, a free game

Try it yourself · Rust dev?

Check a crate before you depend on it

Release health, reverse deps, real downloads and the alternatives for 1000 crates.

In The Manual: on this topic

Explainers answer one question, short answer first. Guides walk you through it step by step.

Open The Manual →

Read next

All articles →

Art: Nicholas Roerich, Depsang Plains (1925-26). Public domain, via Wikimedia Commons.

1M+ X impressions in 4 days, run by AI agents · 8,000+ crates.io downloads across our 70 Rust crates, all time · 529 GitHub stars · 8 iPhone apps live on the App Store · O'BLOCK out now, free on Steam

Built by Matthew Busel · code on github.com/Mattbusel · numbers as of Oct 25, 2026, click any to check

Popular in the shop

All 124 tools →

Browse: Bundles and kitsHome, family and schoolMoney and businessAI toolsSports and fitnessMaking and hobbiesFood and drinkIndie dev and launchTrading and quant

Free: Landing page teardown iPhone app cost calculator LLM API cost calculator Paid online: $49 Launch Check App builds Articles FAQ