Почему переменная PATH может стать точкой атаки
👋
Приветствую в мире цифровой безопасности!Когда вы вводите ls или python, Linux ищет нужную программу в каталогах из переменной PATH. Но что произойдёт, если в этом списке окажется каталог, куда может записывать другой пользователь?⏺Посмотреть порядок поиска можно командой:
echo "$PATH"Например:
/usr/local/bin:/usr/bin:/binСистема проверяет каталоги слева направо и запускает первый подходящий исполняемый файл.
⏺Где появляется проблема: Допустим, скрипт администратора вызывает команду без полного пути:
#!/bin/bash
backup-tool /var/wwwЕсли в начале
PATH находится доступный для записи посторонним каталог, там можно разместить другую программу с именем backup-tool. Скрипт запустит её вместо ожидаемой утилиты.⏺Особенно опасно, когда такой скрипт выполняется с повышенными привилегиями. Тогда подменённая программа может получить права процесса, который её запустил. Проверить, какой файл будет найден, можно через:
type -a backup-tool
command -v backup-tool⏺Как защититься? Для привилегированных скриптов лучше задавать безопасный
PATH и использовать абсолютные пути к важным утилитам:PATH=/usr/sbin:/usr/bin:/sbin:/bin
export PATH
/usr/bin/idТакже стоит проверить, что каталоги из
PATH не доступны на запись непривилегированным пользователям.⏺Есть и менее очевидный случай: пустой элемент в
PATH, например :/usr/bin, означает поиск программы в текущем каталоге. Если скрипт запускается из недоверенной директории, это создаёт дополнительный риск. Сам по себе PATH не уязвимость. Проблемы начинаются, когда привилегированная программа доверяет окружению и запускает команды, не контролируя, откуда они берутся.🤖Бесплатный ChatGPT