Каталог пакетов PyPI содержал 10 вредоносных библиотек
В каталоге PyPI обнаружено 10 вредоносных пакетов. Их имена маскируются под настоящие библиотеки, но особой опасности пакеты не представляют.
Новости TprogerВ опубликованном заявлении говорится, что имена вредоносных пакетов выбраны похожими на настоящие 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).
Для проверки существования подобных пакетов на локальной машине можно воспользоваться командой:
Если такие модули найдены, рекомендуется их ручное удаление с машин. После уведомления о существовании подобных пакетов в каталоге PyPI они были незамедлительно удалены, но никаких мер предотвращения подобных загрузок не было принято.