Fetching from the wire…
Public story · 2026-08-24 · high
He set SQLite's application ID to a custom value, then registered a kernel handler that runs the same file as a program.
Why now: Zakaria posted the writeup on August 23.
Farid Zakaria built a single file that a SQLite client can open and the Linux kernel can run as a program. They needed no changes to SQLite or the ELF format. The only new piece is a kernel handler they registered themselves. That shows how little Linux checks before it runs a file, as long as some handler claims to know the format.
They set SQLite's 4-byte application ID field, at byte offset 68, to "SELF." Then they decomposed an ELF binary's components into rows across a custom schema inside that same database file, in their writeup.
SQLite reads its own header and ignores whatever else the file holds. A standard ELF loader does the same with its own header. Zakaria's addition is a self-exec interpreter registered with binfmt_misc, the kernel mechanism that hands a file type to a chosen program. When the kernel spots the SELF application ID, it hands the file to that interpreter, which queries the tables, rebuilds the binary, and runs it.
It only runs on a machine that already has the self-exec handler registered. That rules it out as a way to distribute one file that runs anywhere on Linux without setup.
Each link below shares sources, entities, or timing with this story.
Claude Code supports Linux / Shared entity: SQLite / Earlier coverage / Tension
Linked by a graph relationship (Claude Code supports Linux); both cover SQLite; earlier SQLite coverage from 2026-07-28.
Shared entities / Shared topic / What happened next
Both cover ELF, SELF, SQLite; overlapping topics (binary, database); picks up the ELF thread on 2026-08-25.
Claude Code supports Linux / Shared entity: SQLite / Earlier coverage
Linked by a graph relationship (Claude Code supports Linux); both cover SQLite; earlier SQLite coverage from 2026-06-02.
JAI uses Linux / Shared entity: Linux / Earlier coverage
Linked by a graph relationship (JAI uses Linux); both cover Linux; earlier Linux coverage from 2026-03-28.
Tailscale uses SQLite / Shared entity: SQLite / Shared topic / Earlier coverage
Linked by a graph relationship (Tailscale uses SQLite); both cover SQLite; overlapping topics (database, file, sqlite).
DuckDB benchmarked against SQLite / Shared entity: SQLite / Shared topic / Earlier coverage / Tension
Linked by a graph relationship (DuckDB benchmarked against SQLite); both cover SQLite; overlapping topics (directly, sqlite).
Claude Code supports Linux / Shared entities / Earlier coverage
Linked by a graph relationship (Claude Code supports Linux); both cover Linux, Self; earlier Linux coverage from 2026-08-12.
Claude Code supports Linux / Shared entity: Linux / Earlier coverage / Tension
Linked by a graph relationship (Claude Code supports Linux); both cover Linux; earlier Linux coverage from 2026-08-21.