7

Я наткнулся на файл с именем ld.so.preload и не могу найти для него реального применения. Это как-то связано с переменной env LD_PRELOAD ?

1 ответ1

10

Хороший вопрос! На самом деле, /etc/ld.so.preload , в некотором роде, заменяет LD_PRELOAD.

LD_PRELOAD подвергается строгим ограничениям из-за проблем безопасности: он не может выполнять произвольные двоичные файлы setuid, потому что, если это возможно, вы можете заменить библиотечные подпрограммы собственным вредоносным кодом, см., Например, здесь для хорошего обсуждения. На самом деле, вы можете прочитать в руководстве пользователя ld.so'user:

LD_PRELOAD

Список дополнительных пользовательских ELF-библиотек, которые должны быть загружены раньше всех остальных. Элементы списка могут быть разделены пробелами или двоеточиями. Это может быть использовано для выборочного переопределения функций в других общих библиотеках. Поиск библиотек осуществляется по правилам, приведенным в разделе ОПИСАНИЕ. Для двоичных файлов ELF set-user-ID/set-group-ID пути предварительной загрузки, содержащие косые черты, игнорируются, а библиотеки в стандартных каталогах поиска загружаются, только если в файле библиотеки включен бит разрешения set-user-ID.

Вместо этого файл /etc/ld.so.preload не имеет таких ограничений, идея состоит в том, что, если вы можете читать / записывать в каталог / etc, у вас уже есть учетные данные root. Отсюда и его использование. Просто имейте в виду, что вы можете использовать /etc/ld.so.preload, даже если у вас, по-видимому, сначала его нет: это всего лишь функция glibc, следовательно, всех дистрибутивов Linux (но не в лучшем случае я знаю, что такое Unix), поэтому вы можете создать его и вставить в него название любой библиотеки setuid в любом дистрибутиве Linux, и она будет работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .