Эксперты предупреждают, что сообщение Command Not Found в Ubuntu, открыто для эксплойтов

Исследователи из Aqua Security утверждают, что обнаружили недостаток в системе безопасности Ubuntu, связанный с функцией Command Not Found, который злоумышленники могут использовать, чтобы обманом заставить пользователей установить вредоносные snap-пакеты.

Настоящая опасность заключается в потенциальном масштабе этой проблемы: злоумышленники могут имитировать тысячи команд из широко используемых пакетов и прошлые случаи появления вредоносных пакетов в Snap Store подчеркивают эту проблему».
- исследователь Илай Голдман

Что это за проблема, насколько она опасна и стоит ли беспокоиться пользователям Ubuntu?

Предложения пакетов можно подтасовать

При попытке выполнить команду для пакета, который у вас не установлен, Ubuntu выдаст ошибку «Command Not Found».

Но, стараясь помочь, он также предлагает пакеты, необходимыйые для выполнения отсутствующей команды.

Показываются предложения соответствующих DEB-пакетов, доступных для установки из репозиториев Ubuntu (запрашиваются из локальной базы данных) и snap-пакетов (запрашиваются из базы данных Snap Store, которая часто обновляется, поэтому новые приложения появляются в виде рекомендаций).

И именно эта полезная функция, по мнению исследователей безопасности, открыта для манипуляций со стороны злоумышленников, использующих приложения snap.

Чтобы доказать жизнеспособность этого вектора атаки, Aqua Nautilus провела несколько экспериментов.

В одном из примеров они запустили jupyter-notebook на свежей установке Ubuntu, и, поскольку она не была предустановлена, функция command-not-found сделала свое дело: сказала «не найдено», порекомендовала нужный пакет и способ его установки с помощью apt.

Пока все хорошо.

Но поскольку этот конкретный пакет не выдал предложения snap – функция показывает и DEB, и Snap, если они существуют, – они решили, что это пространство имен не было зарегистрировано в Snap Store.

Исследователи зарегистрировали его, заполнили детали и загрузили (фиктивное) приложение, «выдающее» себя за настоящее. Конечно, command-not-found начал рекомендовать их фейковый пакет. Фейковый пакет стоял выше настоящего:

В приведенном примере фальшивому пакету был присвоен более высокий номер версии и из-за этого он был показан перед настоящим пакетом APT – что может легко ввести пользователей в заблуждение, заставив их думать, что первый вариант является «предпочтительным».

И в этом вся суть проблемы.

Нечестные люди могут легко играть с системой рекомендаций, манипулируя этой безобидной, удобной функцией, чтобы предлагать пользователям мошеннические пакеты. Все, что им нужно сделать, это загрузить снимок, который притворяется тем, что нужен людям, а command-not-found сделает все остальное.

Хуже того, по данным Aqua Nautilus, 26% команд, связанных с APT-пакетами, уязвимы и кроме того, они опробовали другие способы (использование псевдонимов, опечаток и т. д.), с помощью которых мошенники могут обмануть систему, чтобы их поддельные пакеты рекомендовались пользователям наряду с настоящими (и даже впереди них).

Все это вызывает беспокойство.

Действительно ли это проблема?

Хорошая новость заключается в том, что на данный момент этот эксплойт является теоретическим (хотя и проверенным). Никто пока не сообщал о том, что его обманули с помощью механизма CNF, и нет никаких признаков того, что вредоносное ПО активно использует эту лазейку – так что это хорошо.

Плюс, Canonical может легко устранить проблему с помощью мер по смягчению последствий со своей стороны – возможно, ограничив предложения по снэпу, появляющиеся через эту функцию, только теми, которые загружены проверенными разработчиками.

В настольной Ubuntu функция CNF (как я предполагаю) используется не так широко, как в серверных системах, таких как WSL, где CLI используется по умолчанию. Это хорошо: немногие пользователи настольных систем могут быть обмануты. Это также плохо: серверы, IoT и т. д. являются «критической» инфраструктурой…

Как всегда, мы, пользователи, должны взять на себя часть бремени. Когда мы устанавливаем что-либо из любого источника, мы должны обращать внимание на опечатки, проверять, что то, что мы устанавливаем, является тем, за что оно себя выдает, и является ли надежным источником.

Хотите узнать больше? Перейдите в блог Aqua, чтобы прочитать отчет полностью.

Они подробно рассказывают о том, как работает функция «Command Not Found», как она определяет релевантность своих предложений и как злоумышленники могут использовать snap-пакеты для жутких действий, даже если включено строгое ограничение и не включена ручная проверка.

А так это просто пища для размышлений!

Зарубин Иван Эксперт по Linux и Windows

Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.

Похожие статьи

Комментарии (0)