Якщо ви маєте кореневу оболонку під час сеансу на екрані (відірваний чи ні, захищений паролем чи ні), а ваш screen
виконуваний файл не встановлений, а зловмисник, який отримує ваші привілеї, може виконувати команди в цій оболонці. Якщо нічого іншого, вони можуть це зробити, відстежуючи процес екрана.
Якщо екран налаштовано або налаштовано жорстко, а сеанс від'єднаний та захищений паролем, то в принципі потрібен пароль екрана для запуску команд у цій оболонці. Якщо цей принцип дотримується, хтось, хто лише скомпрометував ваш обліковий запис, повинен був би поставити троян на місце і чекати, коли ви введете пароль. Однак поверхня атаки (тобто кількість місць, де все може піти не так через помилку чи неправильну конфігурацію) незручно велика. Окрім основних функцій безпеки системи, ви довіряєте:
- екран, щоб правильно перевірити пароль.
- екран, щоб запобігти доступу до сеансу іншими способами.
- екрану, щоб правильно використовувати механізми контролю доступу до ОС (наприклад, дозволи на труби).
- ядро правильно виконувати перевірки безпеки ptrace (це часте джерело вразливостей).
- біг оболонки не робити нічого дурного.
- якась інша особливість не кусати вас.
"Якась інша особливість не кусати вас": так, це невиразно. Але це завжди турбота про безпеку. Можливо, вам сподобається відкинути це як просто бажання думати, але ви справді все думали? Наприклад…
Поки ви можете записувати на термінальний пристрій, ви можете вводити дані у вхід цієї оболонки. Під конфігурацією екрана за замовчуванням на моїй машині:
printf '\ekfoo\017bar\e\\' >/dev/pts/33
printf '\e[21t' >/dev/pts/33
Це вставляється ␛]lfoobar␛l
у вхідний потік оболонки. \ek
- це керуюча послідовність, яка дозволяє додатку (або що-небудь, що може записати на термінальний пристрій) встановлювати заголовок вікна (див. розділ «Іменування вікон» у посібнику з екрана ) і \e[21t
змушує термінал повідомляти його назву на стандартному вході програми ( екран не документує цю послідовність, але реалізує її, ви можете знайти її CSI Ps ; Ps ; Ps ; t
в списку контрольних послідовностей xterm . Насправді, принаймні під екраном 4.0.3, всі контрольні символи викреслюються з повідомленого заголовка, тому оболонка зчитується lfoobar
(припускаючи ␛]
, що не пов'язана з командою редагування) і ніякої нової лінії. Отже, зловмисник фактично не може виконати команду таким чином, але може заповнити команду, якchmod u+s /bin/sh
після чого багато місця та вірогідний підказ.
Екран реалізує кілька інших подібних ризикованих послідовностей управління, я не знаю, у чому полягає їх потенціал щодо вразливих місць. Але, сподіваємось, на даний момент ви можете побачити, що захист, запропонований паролями сеансу екрану, не настільки великий. Спеціалізований інструмент безпеки, такий як sudo, набагато рідше має вразливості.
sudo
.