![Является ли fakechroot уязвимостью безопасности?](https://rvso.com/image/1642386/%D0%AF%D0%B2%D0%BB%D1%8F%D0%B5%D1%82%D1%81%D1%8F%20%D0%BB%D0%B8%20fakechroot%20%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C%D1%8E%20%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D0%B8%3F%20.png)
Недавно я узнал больше о fakechroot
. AFAIK это кажется опасным, так как оно повышает привилегии пользователя, даже если оно в chroot. Я знаю, fakeroot
но это не то же самое, так как вы не можете сделать с ним ничего, что требует root.
Однако с помощью которого fakechroot
вы можете на самом деле выполнять вещи, требующие привилегий root внутри chroot. Так означает ли это, что используя fakechroot
обычного пользователя, у вас есть возможность получить root-доступ к chroot, а затем выйти как root на хост?
Я прочитал на их странице руководства, что fakechroot
привилегии пользователя не повышаются, но не уверен, что до конца понимаю это.
решение1
Некоторые приложения Linux будут работать только если текущий пользователь — root
. Большинство этих приложений связаны с изменением самого Linux, поэтому защищены от обычных пользователей.
Однако иногда, работая в качестве обычного пользователя, нам хотелось бы запускать такие команды без повышения прав root
, только для временного использования этих команд для определенной цели.
Такие команды не являются уязвимостью безопасности, поскольку они выполняются от имени текущего пользователя и не оказывают никакого реального влияния на работающую версию Linux.
Лучшим примером таких команд является fakeroot
. Его функция заключается в том, чтобыпритворятьсячто текущий пользователь - это root
, хотя на самом деле этого не происходит.
Это позволяет программам, которые, как ожидается, будут запущены от имени пользователя root, на самом деле работать от имени обычного пользователя, ошибочно полагая, что операции, требующие прав root, выполнены успешно.
Обычно это используется при сборке пакета, чтобы процесс установки устанавливаемого пакета мог продолжаться без ошибок, даже если он запускается chown root:root
, или install -o root
и т. д.
fakeroot
запоминает поддельное владение, которое он якобы предоставил этим файлам, поэтому последующие операции, проверяющие владение, будут видеть root
в качестве владельца вместо настоящего.
Это позволяет, например, последующим tar
запускам сохранять файлы как принадлежащие root. fakeroot
в этом случае создаст tarball, содержащий файлы, принадлежащие root и suid. Однако вы не сможете извлечь этот tarball и сохранить эти разрешения, если не сделаете это как root, без повышения привилегий.
fakeroot
затем позволяет запустить сборку как обычный пользователь, сохраняя при этом эффекты, которые были бы у сборки, если бы она была запущена как root, позволяя воспроизвести их позже. Применение эффектов "по-настоящему" потребует настоящих привилегий root, для которых не fakeroot
предусмотрено никакого способа получения.
Другой пример:поддельныйchroot.
fakechroot
— это обычная не-setuid программа. Она не повышает привилегии пользователя и не снижает безопасность системы. Она создает среду, в которой можно использовать команду chroot(8) без привилегий root, что полезно для вызова apt
установки пакетов без необходимости привилегий root. Таким образом, пользователь создает среду root в своем собственном маленьком пузыре, не влияя ни на кого другого в системе.
fakechroot
не предоставляет fakeroot
функционал, поэтому требует вызова fakechroot
через fakeroot
команду. Эти две команды являются взаимодополняющими и часто используются вместе.