Написать пост

Каталог пакетов PyPI содержал 10 вредоносных библиотек

Аватар Вячеслав Шарунов

В каталоге PyPI обнаружено 10 вредоносных пакетов. Их имена маскируются под настоящие библиотеки, но особой опасности пакеты не представляют.

В опубликованном заявлении говорится, что имена вредоносных пакетов выбраны похожими на настоящие Python-библиотеки. Разница только в незаметных на первый взгляд деталях: библиотека urllib3 может быть спутана с вредоносной urlib3.

Распространяя подобные пакеты, злоумышленники рассчитывают на невнимательность пользователей при их установке. К примеру, логично выглядит установка фиктивного пакета bzip вместо настоящего bzip2. Это уже не первая подобная находка, однако до сих пор никакой дополнительной проверки по цифровой подписи не существует, также как и не налажен процесс проверки новых модулей.

Опасность фиктивных модулей

Фиктивные пакеты включают в себя копию кода оригинальных версий, но отличаются скриптом setup.py. В момент установки модуля вредоносная вставка отправляет сведения о пакете и о машине, на которую он был установлен. Так, после установки пакета urllib-1.21.1 пользователем root на testmachine, будет отправлена строка "Y:urllib-1.21.1 root testmachine", маскируемая операцией XOR и методом кодирования base64.

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

Омерзительная десятка

Полный список обнаруженных фиктивных модулей:

  • acqusition (загружен 2017-06-03 01:58:01, подражает acquisition);
  • apidev-coop (загружен 2017-06-03 05:16:08, подражает apidev-coop_cms);
  • bzip (загружен 2017-06-04 07:08:05, подражает bz2file);
  • crypt (загружен 2017-06-03 08:03:14, подражает crypto);
  • django-server (загружен 2017-06-02 08:22:23, подражает django-server-guardian-api);
  • pwd (загружен 2017-06-02 13:12:33, подражает pwdhash);
  • setup-tools (загружен 2017-06-02 08:54:44, подражает setuptools);
  • telnet (загружен 2017-06-02 15:35:05, подражает telnetsrvlib);
  • urlib3 (загружен 2017-06-02 07:09:29, подражает urllib3);
  • urllib (загружен 2017-06-02 07:03:37, подражает urllib3).

Для проверки существования подобных пакетов на локальной машине можно воспользоваться командой:

			pip list --format=legacy | egrep '^(acqusition|apidev-coop|bzip|crypt|django-server|pwd|setup-tools|telnet|urlib3|urllib) '
		

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

Следите за новыми постами
Следите за новыми постами по любимым темам
2К открытий2К показов