Damus

Recent Notes

Michael Stapelberg 🐧🐹😺 profile picture
Paper: “Trusting-Trust Attack against an Entire Linux Distribution through Binary Manipulation”

"""
Ken Thompson's trusting-trust attack, in which a compromised compiler backdoors the programs it builds and reproduces the backdoor in subsequent rebuilds of itself, is widely regarded as a threat specific to compilers. We show that it is not. We construct a complete trusting-trust attack around GNU strip, an ordinary build utility that neither inspects nor generates source code, using only manipulations of finished ELF files. […] On a real nixpkgs revision, the attack builds a complete graphical installer without failures and backdoors almost every one of its binaries, enabling arbitrary malicious behavior of the subverted packages.
"""

https://arxiv.org/abs/2607.24888
Michael Stapelberg 🐧🐹😺 profile picture
Milestone achieved! For Debian Code Search, I no longer need to use cgo to link in the AVX2-optimized TurboPFor C library that powers our index since 2019: https://michael.stapelberg.ch/posts/2019-09-29-dcs-positional-turbopfor-index/

Instead, thanks to Go 1.27’s SIMD support, I can use AVX2 (and AVX512) natively from Go :)

Turns out that upstream C TurboPFor does not use AVX512 yet, so my Go implementation is now *faster* than C (for our use-case) 😲

So, as of today, Debian Code Search is running with CGO_ENABLED=0 (and GOEXPERIMENT=simd GOAMD64=v3) 🎉

A blog post with more details is in the works, if you’re curious. Let me know if you run into any bugs.

#golang #debian #simd
Michael Stapelberg 🐧🐹😺 profile picture
New blog post: Tracking down a Zsh history data loss bug 🐞

For many years, I sometimes discovered that commands I was sure I had run were no longer present in my Z shell history file (~/.zsh_history). In this article, I will show you how I tracked down the bug. Spoiler: ultimately, patching Zsh to make it crash loudly and analyzing the crash’s core dump was the winning strategy!

https://michael.stapelberg.ch/posts/2026-08-09-zsh-history-truncation-bug/

Michael Stapelberg 🐧🐹😺 profile picture


I cannot relate. IPv6 has been on in my home network since ≈2010 and I can’t even remember the last time I encountered an IPv6-related bug.

But I guess statements like this is what Jeff means when he says “*Cosplaying* as a sysadmin”?

Because if you throw your hands in the air over IPv6 (in 2026!), you’re definitely not a sysadmin I would want to work with.

vollkorn (DECT 5676/"korn") · 21w
Die Ausgabe 109 der #datenschleuder (Interner Name: Die Feminismusschleuder) hat zu einem Mini-Austrittswellchen beim #ccc geführt. Lauter enttäuschte Männer, die zu wenig Technik bekommen, sich al...
Michael Stapelberg 🐧🐹😺 profile picture
@nprofile1q... Hast du ein paar Ausgaben auf der gpn dabei? Würde gern mal reinschauen.

Oder gibt’s die auch irgendwie niederschwelliger? Soweit ich das sehe dauert eine Mitgliedschaft eher so O(wochen) und dann gibt’s die DS nicht online (oder wird zumindest nicht erwähnt)?
1
vollkorn (DECT 5676/"korn") · 21w
nostr:nprofile1qy2hwumn8ghj7un9d3shjtnyd968gmewwp6kyqpqvvdhecrmge3m0fqxa4w5tt2hcqeet8npupz8cwfhedqq7s46cg2q5h9fnr Hast du https:// chaos.social/@vollkorn/116691034251950046 gesehen? Auf der GPN habe ich ein paar, aber die sind für die Chaos Catalysator Stipendiat:innen. Kannst du vielleicht mal dur...
Michael Stapelberg 🐧🐹😺 profile picture
New blog post 🥳

How my minimal, memory-safe #golang rsync steers clear of vulnerabilities

Back in January 2025, multiple different security researchers published a total of 6 security vulnerabilities in rsync[…], so naturally I was wondering whether/how my gokrazy/rsync implementation was affected. Did implementing my own (compatible, but minimal) rsync in Go, a modern and memory-safe programming language, really rule out entire classes of security vulnerabilities?

→ https://michael.stapelberg.ch/posts/2026-05-24-minimal-memory-safe-go-rsync-vulns/