Независимый специалист по информационной безопасности, скрывающийся под псевдонимом Bertus, обнаружил в репозитории PyPI (Python Package Index) 12 вредоносных библиотек, судя по всему, созданных одними и теми же авторами. Первую партию малвари исследователь нашел 13 октября, вторую 21 октября. В настоящее время все проблемные библиотеки уже исключены из репозитория.
Почти все обнаруженные библиотеки были построены по похожей схеме: они имитировали различные популярные пакеты и носили очень похожие на них имена, чтобы пользователь мог не заметить разницы. К примеру, под фреймфорк Django маскировались diango, djago, dajngo и djanga.
Авторы этих подделок внедряли в свои проекты вредоносный код, назначение которого варьировалось от библиотеки к библиотеке. Так, некоторые пакеты стремились собрать больше информации о зараженной машине и окружении, в котором оказались; другие старались добиться устойчивого присутствия в системе; третьи открывали реверс шелл для удаленных рабочих станций. Кроме того, специалист обнаружил пакет colourama (имитация colorama), который внимательно следил за буфером обмена. Вредонос проверял буфер каждые 500 миллисекунд и искал что-либо, похожее на адрес Bitcoinc. Если таковой обнаруживался, малварь немедленно подменяла его адресом злоумышленников.
По информации сервиса PyPI Stats, библиотеку colourama успели скачать всего 54 пользователя, а Bitcoin-кошелек преступников содержит лишь 40 долларов, причем последняя транзакция была совершена в апреле текущего года. Другими словами, colourama явно не принесла своим разработчикам финансового успеха.
В таблице ниже перечислены обнаруженные исследователем библиотеки-имитаторы, за исключением colourama.
На проведение автоматических проверок репозитория и поиск вредоносных библиотек исследователя вдохновил прошлогодний инцидент. Тогда PyPI проверили специалисты службы национальной безопасности Словакии (Národný bezpečnostný úrad, NBU), и они точно так же выявили десяток опасных пакетов, которые маскировались под различные популярные решения.
Bertus пишет, что ему не пришлось прилагать больших усилий, по сути, он просто искал в репозитории тайпсквоттинг. В будущем специалист планирует улучшить свой сканер и проводить проверки репозитория уже на регулярной основе. Кроме того, Bertus собирается провести аналогичные "аудиты" в RubyGems и npm.