Farid Zakaria превратил SQLite-файл в исполняемый Linux-бинарник

Разработчик Simon Willison в записи блога от 24 августа 2026 года пересказал приём Farid Zakaria: обычный файл базы данных SQLite можно превратить в рабочий исполняемый файл Linux. Формат SQLite содержит 4-байтовое поле application ID, расположенное в 68 байтах от начала файла; Farid устанавливает в это поле значение SELF, сокращение от "Structured Executable & Linkable Format" (структурированный формат исполняемых и компонуемых файлов). Компоненты обычного ELF-исполняемого файла при этом раскладываются по нескольким таблицам SQLite согласно отдельной схеме. Извлекает и запускает эти части специальный self-exec интерпретатор, написанный на C и опубликованный в открытом доступе. Чтобы такие файлы запускались автоматически, Farid задействует механизм ядра Linux binfmt_misc, он позволяет зарегистрировать бинарный шаблон (сигнатуру SELF по указанному смещению), при обнаружении которого ядро само вызовет нужный интерпретатор для запуска файла. В своей демонстрации Farid использует NixOS. Simon Willison от себя добавляет предположительную команду регистрации через binfmt_misc для систем без NixOS, прямо оговаривая, что не проверял её и приводит как собственную догадку ("I think registration looks something like this").

Ключевые факты

  • Farid Zakaria показал способ сделать SQLite-файл одновременно исполняемым Linux-файлом
  • 4-байтовое поле application ID SQLite (смещение 68 байт) получает значение SELF, "Structured Executable & Linkable Format"
  • Компоненты ELF-исполняемого файла раскладываются по таблицам SQLite согласно отдельной схеме
  • Извлекает и запускает эти данные self-exec интерпретатор на C
  • Для автозапуска задействован механизм ядра binfmt_misc; демонстрация, на NixOS, команда регистрации для систем без NixOS, непроверенное предположение автора заметки

Почему это важно

Это демонстрация того, насколько гибок формат файла SQLite: его метаданные и структура таблиц позволяют упаковать внутрь совершенно постороннее содержимое, исполняемый код, так, что файл остаётся валидной базой данных и одновременно работает как программа. Приём не связан с ИИ, это чистая системная инженерия и трюк с форматами файлов на Linux.

Кому это важно

Материал адресован системным программистам и инженерам, работающим с внутренним устройством Linux, форматом ELF и SQLite: тем, кто интересуется низкоуровневыми трюками с форматами файлов и механизмом binfmt_misc.

Как это применить

Практически приём демонстрируется как self-exec интерпретатор (исходный код на C доступен по ссылке) и схема раскладки ELF-компонентов по таблицам SQLite. Для автозапуска такого файла как исполняемого нужно зарегистрировать бинарную сигнатуру SELF через /proc/sys/fs/binfmt_misc/register, в источнике показан пример для NixOS, а для систем без NixOS команда регистрации приведена автором заметки как непроверенное предположение.

Можно ли доверять

Источник, Simon Willison, известный технический блогер, который ссылается на оригинальную работу Farid Zakaria (код и схема доступны по ссылкам). При этом сам Willison прямо помечает часть материала, команду регистрации binfmt_misc для систем без NixOS, как свою неподтверждённую догадку, а не проверенный факт.

Риски и подводные камни

В источнике не объясняется, зачем создан этот приём и какую практическую задачу он решает, не разбираются вопросы производительности, безопасности или совместимости такого способа упаковки исполняемого кода в базу данных. Команда регистрации binfmt_misc для систем без NixOS не тестировалась автором заметки лично.