Помимо доступа к диску, есть ли снижение производительности при запуске программы из USB-накопитель?

bash сам использует некоторые переменные окружения. К тому времени, когда bash запускается и готов интерпретировать свою первую команду, уже слишком поздно, вредоносное окружение уже может заставить bash нанести ущерб.

Перед вызовом bash необходимо, чтобы среда была очищена. Вы можете очистить окружение с помощью функции clearenv() C на большинстве систем или просто вызвать execve() в вашем сценарии и передать пустой список в параметре envp.

Даже если сценарий содержит:

#! /bin/bash -
:

(: - специальный встроенный модуль), если окружение содержит SHELLOPTS=xtrace PS4='$(reboot)', команда reboot будет вызвана при :.

Если bash динамически связан, LD_PRELOAD/LD_LIBRARY_PATH может заставить bash выполнять произвольный код сразу после его вызова.

bash также учитывает charset локали при разборе, так что с переменными LOCPATH и LC_* вы можете получить даже #! /bin/bash - вызывать произвольный код (например, сделав символы #!/bina пустыми).

См. также:

env SHELLOPTS=noexec any-bash-script

Это мешает bash делать что-либо.

Это лишь несколько примеров.

Также обратите внимание, что переменные окружения - это не единственные вещи, которые команда наследует при запуске и которые могут повлиять на ее поведение (например, аргументы, umask, ограничения, текущий рабочий каталог, открытые дескрипторы файлов, расположение сигналов, управляющий терминал...).

1
09.11.2016, 18:55
0 ответов

Теги

Похожие вопросы