О том, что нужно быть бдительными, в том числе на PyPI.
На днях на PyPI в очередной раз были обнаружены вредоносные пакеты, имена которых мимикрируют под имена популярных пакетов. Так, например, python3-dateutil, пользуясь тем, что во многих дистрибутивах ОС Linux так называется вполне легитимный пакет, поселившись на PyPI, выдавал себя за оригинальный dateutil, известный на PyPI под именем python-dateutil.

Подставной пакет импортировал другой подставной пакет, называвшийся jeilyfish, в лучших традициях доменного тайпсквоттинга перевиравший имя популярного jellyfish. Это приложение, скачивало обфусцированный код на Python из репозитория в GitLab. При исполнении приложение проходило по домашней директории пользователя и собирало различные данные, в том числе и gpg, ssh ключи, а потом отправляло на хост в DigitalOcean. Пакет спокойно лежал на PyPI с декабря 2018 года.

Приняты меры для ликвидации угрозы: пакеты удалены с PyPI, в GitLab и DigitalOcean написаны письма.
Усугубляет ситуацию то, что для отвода глаз подставные пакеты функционировали также как оригиналы.

Напомню, что подобные случаи стабильно фиксируются в последние годы. 2017 год — 10 пакетов; 2018 — 12 пакетов; 2019 — 3 пакета + 2 пакета.

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

Внимание
Пожалуйста, будьте бдительны при наборе имён пакетов, сверяйтесь с официальной документацией, используемых библиотек. Проверяйте имена в файлах зависимостей. Если вы обнаружили подставной пакет, сообщайте об этом разработчикам оригинального приложения, а также команде PyPI.

Берегите своё.
Нет обсуждений для отображения.

Если у вас есть, что сказать, можете представиться и исправить ситуацию.


Категории

Область

На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.