![](https://itshaman.ru/images/17591_800.webp)
Исследователи из 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-пакеты для жутких действий, даже если включено строгое ограничение и не включена ручная проверка.
А так это просто пища для размышлений!