⇤ ← Версия 1 от 2006-11-20 12:42:52
6885
Комментарий:
|
6973
|
Удаления помечены так. | Добавления помечены так. |
Строка 2: | Строка 2: |
==== а также об официантке, самоделке, уникумах, горшке мёду, чёрной шляпе и о единстве в трёх лицах ==== | ==== а также об официантке, самоделке, уникумах, горшке мёду, чёрной шляпе, о псевдосуперпользователе в частносте и о единстве в трёх лицах вообще...==== |
О надёжной и безопасной сборке пакета
==== а также об официантке, самоделке, уникумах, горшке мёду, чёрной шляпе, о псевдосуперпользователе в частносте и о единстве в трёх лицах вообще...==== Лекция подготовлена по материалам доклада Дмитрия Левина на Первой Конференции разработчиков свободных программ на Протве в 2004 году. Формулировки во многих случаях авторские.
Предыстрория: "самодельные" дистрибутивы
- Обозримое число пакетов
- Кждый член сообщества пользуется почти всеми пакетами
- Разработчиков дистрибутива (maintainres) очень мало
Всё это позволяет:
- Собирать пакеты на собственной машине безо всякой изоляции
- Не (пере)собирать пакеты автоматически
- Безраздельно доверять всем разработчикам
- Оперативно отслеживать и исправлять (в основном, невольные) нарушения безопасности при сборке
Сборка на собственном ("боевом") компьютере
Ненадёжность
"Полная" сборочная среда (инструменты для сборки всей пакетной базы)
- неоправданно большой размер
- несовместимость инструментов для сборки различных пакетов
- "Настраиваемая" сборочная среда
- необходимость прав администратора для установки и удаления произвольных пакетов
необходимость удаления каких бы то ни было пакетов из работающей системы
- Невозможность параллельной сборки пакетов с несовместимыми сборочными зависимостями
- Уникальность и неповторимость образующейся сборочной среды
Небезопасность
- Небезопасность самой хост-системы
- запуск произвольного кода с правами администратора при установке пакетов, требуемых для сборки
- Небезопасность пользователя, занимающегося сборкой
- запуск произвольного кода с правами сборщика непосредственно во время сборки
- Небезопасность сборок друг от друга
- изменение сборочного окружения
- непосредственное воздействие на последующие сборочные процессы
Дистрибутив как предмет атаки
Дистрибутив привлекателен как объект атаки ("объект атаки" -- "предмет атаки"):
- Сборочный сервер -- все сборочные серверы
- Пакет в пакетной базе -- компьютер любого пользователя этого пакета
- Ключевой пакет в "коробочном" дистрибутиве -- все компьютеры с этим дистрибутивом
- blackhat community
Слабые места при сборке дистрибутива:
- большое число разработчиков разной квалификации
- компрометация клиентского ПО, используемого разработчиком
- компрометация ПО, собираемого разработчиком
- непосредственная атака на сборочную систему
Hasher: надёжность, безопасность, масштабируемость
Пример сборочной среды "нового поколения" -- hasher, использующийся в ALT Linux === Требования к сборочной технологии == Технология сборки элементов дистрибутива должна
- не снижать уровень безопасности хост-системы
- обеспечивать собственную безопасность от атак со стороны пакетов
- обеспечивать безопасность сборки одних пакетов от атак со стороны других пакетов
- гарантировать надёжность (воспроизводимость) результатов сборки
- обеспечивать приемлемый уровень производительности
Трёхпользовательская модель Hasher
Хост-система |
Сборочная среда |
|
C Вызывающий пользователь |
Переключатель hasher-priv (root) |
R Псевдо-root |
U Псевдо-пользовтель |
Сборочная среда изолируется от хост-системы с помощью chroot()
Псевдо-root не получает прав суперпользователя (fakeroot())
Выполняющийся от root переключатель hasher-priv
- не выполняет самостоятельных действий (возмодна проверка на отсутствие НДВ)
- около 50 Kb кода
"Путь пакета" в Hasher
- Порождение среды (aptbox) для работы с apt (C)
- Удаление предыдущей сборочной среды (U, R, C)
- Создание каркаса новой сборочной среды (С)
- Порождение базовой установочной среды (C, R)
- Порождение базовой сборочной среды (C, R)
- Проверка исходного пакета (U)
- Порождение сборочной среды для пакета (U, C, R)
- Сборка пакета (U)
Сайт Hasher: ftp://ftp.altlinux.org/pub/people/ldv/hasher