NixOS: исследователи провели атаку «доверия к доверию» через GNU strip
Классическая атака «доверия к доверию» (trusting-trust), которую в 1984 году описал Кен Томпсон, устроена так: скомпрометированный компилятор незаметно вставляет бэкдор в программы, которые собирает, и при этом воспроизводит тот же бэкдор в собственных последующих пересборках, из-за чего заражение переживает даже пересборку компилятора из «чистого» исходного кода. Атаку принято считать угрозой, специфичной именно для компиляторов. Авторы новой работы показывают, что это не так, и строят полную атаку такого рода вокруг GNU strip, обычной утилиты для удаления отладочной информации и символов из бинарных файлов, которая не читает и не генерирует исходный код, а лишь редактирует уже готовые бинарники. Атака целиком построена на манипуляциях с готовыми ELF-файлами, без единой строчки исходного кода.
Целью выбран процесс сборки дистрибутива NixOS. В его бутстрапе используется так называемый seed, стартовый набор бинарных файлов, из которого затем собираются все остальные инструменты. Авторы подменяют находящийся в этом seed strip на заражённую версию. Заражённый strip внедряет вредоносную нагрузку, которая при каждой последующей пересборке strip передаётся в новое поколение утилиты, и продолжает жить даже после того, как исходный заражённый seed окончательно уходит из dependency closure (набора зависимостей сборки) и, казалось бы, перестаёт на что-либо влиять.
Авторы проверили атаку на реальной версии (ревизии) репозитория пакетов nixpkgs. С заражённым strip процесс сборки прошёл до конца без единого сбоя и произвёл полноценный графический установщик NixOS, у которого оказались заражены бэкдором почти все бинарные файлы. Это, по словам авторов, открывает возможность произвольного вредоносного поведения у любого из скомпрометированных пакетов. В открытом тексте статьи не названы ни имена и организации авторов, ни точное число или доля заражённых бинарников, сказано лишь «почти все», ни сведения об уведомлении разработчиков NixOS или nixpkgs и о выпуске исправления, ни данные о том, применима ли та же схема атаки к другим дистрибутивам, кроме NixOS.
Ключевые факты
- Атаку «доверия к доверию» Кена Томпсона (1984) принято считать угрозой только для компиляторов, авторы показывают, что она работает и вокруг обычной утилиты GNU strip, которая не читает и не генерирует код
- Атака построена целиком на манипуляциях с готовыми ELF-файлами, без изменения исходного кода
- Заражённый strip встраивается в стартовый бинарный seed бутстрапа NixOS, передаёт заражение от одного поколения strip к следующему и переживает выход исходного seed из dependency closure
- На реальной ревизии nixpkgs атака без единого сбоя собрала полноценный графический установщик NixOS с бэкдором почти во всех его бинарных файлах
- В тексте не указаны авторы и организации, точная доля заражённых бинарников, факт уведомления мейнтейнеров NixOS и применимость атаки к другим дистрибутивам
Почему это важно
Работа расширяет угрозу, которую 40 с лишним лет считали узкой и специфичной. Атака «доверия к доверию» Томпсона всегда преподносилась как проблема компиляторов: зарази компилятор, и он будет заражать себя и всё, что собирает. Здесь показано, что тот же принцип работает и на куда более скромном инструменте, strip, который просто вырезает отладочную информацию из уже готовых бинарников. Это означает, что круг звеньев цепочки поставки ПО (supply chain), которым в принципе нужно доверять, шире, чем принято думать: заражённым может оказаться не только компилятор, но почти любой инструмент, который трогает бинарный файл на пути от исходного кода до установленного пакета.
Кому это важно
В первую очередь, разработчикам и мейнтейнерам дистрибутивов и систем сборки, использующих подход с бинарным bootstrap-seed, то есть стартовым набором готовых бинарников, из которого затем воспроизводится вся остальная цепочка инструментов. NixOS выбран как площадка демонстрации именно потому, что его бутстрап устроен так. Важно это и для всех, кто занимается воспроизводимыми сборками (reproducible builds) и цепочкой поставки открытого ПО в целом, исследование бьёт по самому фундаменту доверия к тому, что собранный из открытого кода бинарник действительно соответствует этому коду.
Как это применить
Прямого рецепта защиты в тексте абстракта нет. Но общий вывод для практиков таков: проверка одного лишь исходного кода компилятора и утилит сборки недостаточна, если сама цепочка bootstrap начинается с непрозрачных бинарных seed-файлов, их происхождение и целостность нужно проверять отдельно, а не считать безопасными по умолчанию. Для дистрибутивов с похожей архитектурой бутстрапа имеет смысл сверяться с результатами этой работы при аудите собственной цепочки сборки.
Можно ли доверять
Работа опубликована на arXiv 27 июля 2026 года как препринт, то есть без независимого рецензирования на момент публикации. В доступном тексте абстракта не указаны имена авторов и их организации, что не позволяет самостоятельно оценить их репутацию и опыт в этой области. При этом заявленный результат, работающая атака, проверенная на реальной ревизии nixpkgs с успешной сборкой заражённого графического установщика, представлен как конкретный воспроизведённый эксперимент, а не гипотетическая конструкция.
Риски и подводные камни
Главный открытый вопрос, применимость атаки за пределами NixOS: в тексте не сказано, работает ли та же схема против других дистрибутивов с другой архитектурой бутстрапа, поэтому оценить масштаб угрозы для экосистемы Linux в целом по одной этой работе нельзя. Также неизвестно, был ли кто-то из разработчиков NixOS или nixpkgs уведомлён о находке и появилось ли какое-либо исправление, то есть на момент публикации абстракта неясно, остаётся ли эта конкретная техническая возможность открытой.
«Атака «доверия к доверию» широко считается угрозой, специфичной для компиляторов. Мы показываем, что это не так.»
— авторы работы