12 вредоносных библиотек Python, найденных и удаленных из PyPI

12 вредоносных библиотек Python, найденных и удаленных из PyPI

Инженер по безопасности программного обеспечения определил 12 библиотек Python, загруженных в официальный индекс пакета Python (PyPI), содержащий вредоносный код.

Все пакеты были собраны вместе и работали по аналогичной схеме. Их создатель скопировал код популярных пакетов и создал новую библиотеку, но со слегка измененным именем. Например, четыре пакета (diango, djago, dajngo, djanga) были орфографическими ошибками Django, названия очень популярной структуры Python.

Люди, стоящие за этими вредоносными пакетами, добавили вредоносный код в эти недавно созданные, но полностью функциональные проекты и, более конкретно, файлы setup.py. Файлы Setup.py содержат набор инструкций, которые инсталляторы библиотеки Python, такие как «pip», выполняются автоматически при загрузке и настройке нового пакета внутри проекта Python.

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

13 октября Бертус обнаружил первый набор из 11 вредоносных пакетов (см. Таблицу ниже) и еще один вредоносный пакет 21 октября.

pypi-malicious-packages.png

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

Двенадцатый пакет, названный «colourama», был финансово мотивирован и захватил буфер обмена операционных систем инфицированных пользователей, где он сканировал каждые 500 мс для строки типа биткойн, которая была бы заменена собственным адресом Биткойна злоумышленника в попытке для захвата биткойнов платежей, сделанных зараженным пользователем.

Этот пакет тоже подражал имени популярной библиотеки Python под названием «colorama».

Согласно службе статистики PyPI, 54 пользователя загрузили пакет за месяц до его снятия. Биткойн-адрес злоумышленника содержал эквивалент всего лишь 40 долларов США, а последний переход был получен еще в апреле и предполагал, что пакет colourama не смог заработать никаких денег.

«Я предоставил администраторам PyPI имя пакета, и они удалили пакет», — сказал Бертус ZDNet в интервью по электронной почте. «Кроме того, они также заблокировали имя colourama для любых будущих регистраций пакетов».

Исследователь рассказал нам, что он обнаружил все 12 пакетов, используя автоматизированную систему, которую он создал сам, который сканировал репозиторий PyPI для пакетов с похожими именами, которые обычно называются пакетами с «опечатанными корнями».

Бертус говорит, что он создал сканер, увидев предупреждение о безопасности, отправленное Службой национальной безопасности Словакии в прошлом году, в котором предупреждали разработчиков Python о десяти вредоносных библиотеках Python, загруженных в PyPI. Эти библиотеки также использовали имена с опечатками на корточках и долго ждали, когда пользователи установят их случайно или небрежно, прежде чем их снести.

«На данный момент я сосредоточен на улучшении сканера Python (PyPI), и я буду делать более регулярные проверки», — сказал Бертус ZDNet.

«Я подумал о том, чтобы использовать мои исследования для других репозиториев, таких как RubyGems или jpm для JavaScript, но еще не успел изучить его», — добавил он. «Это займет некоторое время, чтобы реализовать его для другого репозитория, поскольку каждый язык программирования и репозиторий немного отличаются».

Конечно, для репозитория пакетов npm для JavaScript требуется некоторое время Бертуса. В августе 2017 года шведский разработчик обнаружил 38 загруженных на npm 38 библиотек JavaScript с привязкой к корню. Вредоносный код в этих библиотеках собирал локальные переменные среды и загружал данные на сервер злоумышленника.

12 вредоносных библиотек Python, найденных и удаленных из PyPI: 3 комментария

  1. Сомнительно все это) то загрузят библиотеку в массовый доступ, а потом каждый качает ее. Почему изначально не проверили на качество кода, вирусы и т.д.?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *