Мне интересно, как оставить корневую оболочку внутри отдельного сеанса экрана. Я обычно никогда не делаю этого.
Помимо вероятности того, что моя учетная запись пользователя без полномочий root может быть скомпрометирована (пароль раскрыт, ssh-ключ скомпрометирован и т. Д.), Существуют ли другие векторы входа в отдельный сеанс экрана, защищенный паролем, о котором я должен беспокоиться, или может быть отключенный экран сеанс считаться инертным?
security
gnu-screen
root
Майкл
источник
источник
sudo
.sudo
деактивируется, в то время как истинная корневая оболочка остается открытой.Ответы:
Я думаю, что это проблема безопасности, потому что «помимо возможного взлома моей учетной записи пользователя без полномочий root» может быть довольно большой.
Но помимо этого есть и другие повышенные риски. Например, вы теперь открыли для себя теоретический эксплойт, который позволяет изменять разрешения в dir сокета экрана (
/var/run/screen
в моей системе, но иногда/tmp
используется). У этого эксплойта теперь есть путь к получению root-прав, что иначе не могло бы быть.sudo
имеет другие преимущества, если вы можете научиться использовать его для каждой команды, а не делатьsudo su -
. Он регистрирует действия (которые, если вы не входите удаленно, не значимо повышают безопасность, но дают вам след того, что вы сделали). И это помогает предотвратить аварии, требуя преднамеренного эскалации для каждой команды, а не переключения на полностью привилегированный сеанс.источник
Если у вас есть корневая оболочка в сеансе экрана (отсоединен или нет, защищен паролем или нет), и ваш
screen
исполняемый файл не имеет setxid, то злоумышленник, который получает ваши привилегии, может запускать команды в этой оболочке. Если ничего другого, они могут сделать это, отслеживая процесс экрана.Если на экране установлен setuid или setgid, а сеанс отсоединен и защищен паролем, то в принципе для запуска команд в этой оболочке требуется экранный пароль. Если этот принцип действует, то кто-то, кто только скомпрометировал вашу учетную запись, должен будет поставить троян на место и ждать, пока вы введете пароль. Однако поверхность атаки (т. Е. Количество мест, где что-то может пойти не так из-за ошибки или неправильной конфигурации) неудобно велика. В дополнение к базовым функциям безопасности системы вы доверяете:
«Еще одна особенность - не кусать тебя»: да, это расплывчато. Но это всегда проблема безопасности. У вас может возникнуть соблазн отмахнуться от этого как от простого желаемого за действительное, но действительно ли вы об этом думаете? Например…
Пока вы можете записывать на терминальное устройство, вы можете вводить данные на вход этой оболочки. Под настройками экрана по умолчанию на моей машине:
Это вставляет
␛]lfoobar␛l
во входной поток оболочки.\ek
является последовательностью управления, которая позволяет приложению (или всему, что может записать на терминальное устройство) установить заголовок окна (см. раздел «Имена окон» в руководстве по экрану ) и\e[21t
заставляет терминал сообщать свой заголовок на стандартном вводе приложения ( screen не документирует эту последовательность, но реализует ее, вы можете найти ееCSI Ps ; Ps ; Ps ; t
в списке управляющих последовательностей xterm . Фактически, по крайней мере, на экране 4.0.3 все управляющие символы удаляются из указанного заголовка, поэтому оболочка читаетlfoobar
(при условии, что␛]
он не привязан к команде редактирования) и никакой новой строки. Таким образом, злоумышленник не может выполнить команду таким образом, но может набрать такую команду, какchmod u+s /bin/sh
сопровождаемый большим количеством пробелов и вероятного вида подсказки.Screen реализует несколько других аналогичных рискованных последовательностей управления, я не знаю, какова их потенциальная уязвимость. Но, надеюсь, теперь вы можете видеть, что защита, обеспечиваемая паролями экранной сессии, не так уж велика. У специального инструмента безопасности, такого как sudo, гораздо меньше уязвимостей.
источник
Каналы, созданные экраном, доступны только владельцу, поэтому это не должно быть проблемой безопасности.
источник