Как укорененный процесс может получить доступ к зависимостям своей библиотеки?

#chroot

#chroot

Вопрос:

  1. После того, как я помещаю процесс в chroot тюрьму, он может получить доступ к libc.so библиотеке, которая находится за пределами тюрьмы. Почему или, может быть, как?

  2. Если у нас есть программная ссылка, ссылающаяся на файл за пределами тюрьмы, можем ли мы получить доступ к основному файлу?

  3. можем ли мы использовать chroot в многопоточных приложениях? или, если мы изменим корневой каталог из одного потока, изменится корневой каталог всего процесса?

  4. Я читал, что chroot функция не обеспечивает реальной безопасной среды, есть ли какое-либо альтернативное решение в Linux?

Ответ №1:

  1. До тех пор, пока он был открыт перед вызовом chroot , он все еще открыт, точно так же, как его собственный двоичный файл. Однако, chroot это привилегированная операция, поэтому вызывающий ее процесс, вероятно, изменит идентификатор и запустит реальный процесс, к которому не будет доступа, libc.so если он не доступен в chroot.
  2. Программная ссылка разрешена в пространстве имен процесса, поэтому она не разрешится для файла за пределами chroot .
  3. Я не уверен (и подозреваю, что это не так). Обычно это не имеет значения, поскольку, будучи привилегированной операцией, она выполняется в простой оболочке, которая не является многопоточной, но запускает многопоточное приложение только после укоренения, закрытия всех дескрипторов файлов, изменения текущего каталога на chroot и удаления привилегий.
  4. Chroot небезопасен. Root можно легко удалить (например, путем повторного монтирования устройства). Существуют Linux-Vserver, lxc и OpenVZ, которые обеспечивают безопасную изоляцию процесса. LXC использует функцию cgroups Linux (начиная с ядра 2.6.29), двум другим, похоже, требуется исправленное ядро. Вы также можете просто настроить cgroup самостоятельно, если вам просто нужно заключить в тюрьму одно приложение.

Комментарии:

1. Я не уверен, что lxc более безопасен, root все равно сможет смонтировать любое устройство на / .