проблемы безопасности при установке из исходного кода с правами root

проблемы безопасности при установке из исходного кода с правами root

У меня возник вопрос о том, почему установка из исходного кода в учетной записи root не является хорошей идеей по соображениям безопасности.

Моя позиция по этому поводу такова, что на самом деле не имеет значения, есть ли у пользователя учетная запись root, начиная с распаковки кода и заканчивая выполнением шагов по его установке.

#./configure 
#make 
#make install

в отличие от:

$./configure
$make
$sudo make install

Моя логика такова: это на самом деле не имеет значения, потому что если это и создаст угрозу безопасности, то это из-за самого кода, а не из-за того, как он устанавливается, поскольку команда end использует root для установки финального двоичного файла и любых файлов, которые он устанавливает вместе с ним.

Независимо от того, находитесь ли вы в сеансе пользователя без прав root или нет, если в исходном коде закодировано вредоносное ПО, то оно теперь в системе, несмотря ни на что. Поэтому это всегда риск, несмотря ни на что.

Это не имеет ничего общего с вашим собственным кодом, это больше связано с вашим репозиторием, в него не включено приложение, поэтому перейдите на git hub или на сайт человека, который его написал, и используйте исходный код, чтобы установить его. Что-то такое же простое, как установка дерева.

В этом случае пользователь будет больше беспокоиться о том, как он получил исходный код, чем если бы он или она вошли в систему под учетной записью root или под учетной записью «обычного» пользователя.

Я уже слышал все аргументы о том, почему не следует использовать root, потому что невнимательность к тому, что пишут в терминале, может нанести непоправимый вред системе; можно нанести такой же вред, используя sudo, поэтому это само по себе излишний аргумент и система убеждений. Поэтому это даже не должно быть частью того, что включено в этот аргумент.

Это более или менее вопрос типа «да» или «нет». Да, я прав, в долгосрочной перспективе не имеет значения, использует ли пользователь свою учетную запись root для компиляции и установки приложений с исходным кодом в систему или нет.

или

Нет, я ошибаюсь, это важно, поскольку для того, чтобы сделать то же самое, вам понадобятся права root.

решение1

Если вы злоупотребляете запуском программ как root, то вы даете потенциальному злоумышленнику больше мест для атаки, чем просто "необходимые". Попытки взломать вашу систему в большинстве случаев не сработают (или будут более сложными) без привилегий root. Ваш подход со всеми командами как root также может привести к тому, что вы просто будете делать все как root (перечисление каталога, открытие изображения, воспроизведение музыки ...), а это означает множество потенциально проблемных мест.

Даже непреднамеренно - ошибка в программе, которую вы запускаете, может нанести гораздо больший вред, если она запущена как root (и практически невозможно удалить все ошибки из SW). Или когда пользователь вводит неверные параметры (гораздо более вероятная возможность).

Кроме того, когда вы ./configureи make, вы, возможно, не захотите устанавливать программу для всех (например, это может быть библиотека, которая нужна только вам).

решение2

Если вы подозреваете, что устанавливаемая вами программа может бытьвредоносный, не запускайте его как root или как ваш обычный пользователь. Это включает в себя как запуск скомпилированной программы, так и запуск предоставленных скриптов сборки. Как только злоумышленник запустит код от вашего имени, он станет владельцем вашей учетной записи (и он станет владельцем вашей машины, как только вы получите root-доступ из этой учетной записи, самое позднее). Неважно, был ли код злоумышленника выполнен, потому что вы запустили makeили потому что вы запустили make install.

Цель сборки от имени обычного пользователя и установки от имени root заключается в том, чтобы снизить рискислучайныйпроблемы. Тем не менее, вам обычно не следует устанавливать самодельные программы как root, если это не является необходимым (например, для установки драйвера или системной службы). Установите как своего собственного пользователя, в отдельный каталог, а затем используйте программу, напримерукладыватьсделать программу доступной в стандартных каталогах ( /usr/local/binи т. д.). Это снижает риск того, что на этапе установки будет перезаписано существующее программное обеспечение (может возникнуть конфликт имен) или будет произведена запись в непреднамеренные каталоги, а также упрощает удаление программы, поскольку все файлы находятся в одном месте.

решение3

Как пользователь joe,

./configure
make
sudo make install

Обычно вы этого не делаете.нуждатьсябыть root для настройки или компиляции кода, только для его установки. Если вы этого не сделаетенуждатьсячтобы быть пользователем root, не будьте им.

Оба configureи makeвыполняют код. Запуск их от имени root, когда это не нужно, просто представляет собой еще один вектор атаки (кто-то может скомпрометировать makefile, но не исходный код, например).

решение4

Окончательная версия программы (и ее установка) предположительно выполнены более тщательно, чем само здание.ЛюбойОшибка в процессе сборки или завершения проверки работоспособности при запуске от имени root может привести к обрушению системы. Лучше максимально снизить риск.

Связанный контент