Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://uneex.mithril.cs.msu.su/static/HasherThesis2004/thesis-2004.html
Дата изменения: Mon Sep 26 12:35:48 2011 Дата индексирования: Mon Oct 1 23:47:39 2012 Кодировка: koi8-r |
Dmitry V. Levin, 2004
Со временем инструментальные дистрибутивы выросли в размере, увеличилось число принимающих участие в разработке дистрибутивов, и в результате сборка дистрибутива в хост-системе стала неудобной, ненадёжной и небезопасной.
В свою очередь, при таком размере среды проявляется несовместимость инструментальных средств, которые не всегда удаётся разрешить с помощью альтернатив, переключателей и других приёмов.
Поскольку все инструментальные средства установить в систему не удаётся, возникает необходимость прав администратора для установки произвольных требующихся для сборки пакетов в хост-систему.
Кроме того, невозможно обеспечить параллельную сборку пакетов с несовместимыми сборочными зависимостями.
И, наконец, при таком слабоконтролируемом составе сборочной среды, которой является хост-система, возникает неявная, не очевидная и нигде не обозначенная зависимость результата сборки от конкретной сборочной среды, возникают `неприкосновенные сборочные серверы '.
Небезопасность пользователя, занимающегося сборкой, связана с запуском произвольного кода с правами сборщика непосредственно во время сборки.
Небезопасность сборок друг от друга обусловлена двумя факторами: возможностью произвольного изменения сборочного окружения во время сборки, и возможностью непосредственного воздействия на последующие сборочные процессы.
Внимание blackhat community связано с привлекательностью компрометации дистрибутива, через который можно легко получить контроль над множеством серверов и рабочих станций.
Большое число разработчиков разной квалификации приводит к тому, что некоторые из них могут стать лёгкой добычей для злоумышленников и впоследствии могут быть использованы для атаки на дистрибутив.
Скомпрометированным может оказаться как клиентское ПО, используемое разработчиком, так и ПО, собираемое разработчиком. За последние два года были публичные случаи и того, и другого.
Нельзя исключать и возможность непосредственной атаки на сборочную систему.
В основе архитектуры hasher'а лежит трёхпользовательская модель: вызывающий непривилегированный пользователь (C) и два непривилегированных вспомогательных псевдопользователя; первый (R) играет роль root в порождаемой сборочной среде (далее псевдоroot), второй (U) - обычного пользователя, собирающего программы (далее псевдосборщик).
Переключение между вызывающим и вспомогательными пользователями осуществляется с помощью специальной привилегированной программы (вызываемой посредством sudo), написанной с применением параноидальных мер защиты от непривилегированных пользователей. Кроме того, с помощью этой программы удаляются процессы, запущенные вспомогательными псевдопользователями и не завершившиеся в срок, а также создаются устройства. Наконец, эта программа предоставляет возможность контролировать ресурсы, выделяемые процессам непривилегированных пользователей, для защиты от DoS-атак.
Путь пакета через сборочную систему в общих чертах выглядит следующим образом:
Такая схема призвана исключить атаки вида U->R, U->C, R->C, а также все виды атак на root.
Для повышения производительности, особенно важной при сборке большого числа пакетов, применяется кэширование базовой сборочной среды.
С помощью средств apt реализована возможность использования собранных ранее пакетов для сборки последующих пакетов.