PyPI приостановил регистрацию новых пользователей и проектов из-за всплеска вредоносных публикаций

Репозиторий Python-пакетов PyPI (Python Package Index) временно запретил регистрацию новых пользователей и создание новых проектов из-за непрекращающейся массовой загрузки вредоносных пакетов в ходе автоматизированной атаки. Блокировка была введена после того, как 26 и 27 марта в репозиторий было загружено 566 пакетов с вредоносным кодом, стилизованных под 16 популярных Python-библиотек.

Имена пакетов сформированы с использованием тайпсквотинга, т.е. назначение похожих имён, отличающихся отдельными символами, например, temsorflow вместо tensorflow, requyests вместо requests, asyincio вместо asyncio и т.п. При проведении подобных атак злоумышленники рассчитывают на невнимательных пользователей, совершивших опечатку или не заметивших отличий в названии при поиске или переходе по ссылке из форумов и чатов, в которых злоумышленники оставляют обманные инструкции.

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

За два дня злоумышленниками было загружено 29 вредоносных варианта пакета tensorflow, 26 – BeautifulSoup, 26 – PyGame, 15 – SimpleJson, 38 – Matplotlib, 26 – PyTorch, 67- CustomTKInter, 28 – selenium, 17 – playwright, 15 – asyncio и 67 – requirements. Дополнительно выявлены отдельные случая подделки библиотек requests, py-cord, colorama,
capmonstercloudclient, pillow и bip-utils.

Отдельно отмечается атака на сообщество Top.gg, насчитывающее 170 тысяч пользователей. В ходе атаки злоумышленник сумел скомпрометировать учётную запись в GitHub одного из разработчиков top.gg, путём кражи браузерных Cookie. Атакующий также добавил три пакета в репозиторий PyPI и зарегистрировал домены pypihosted.org и pythanhosted.org, на которых было организовано зеркало для распространения вредоносной зависимости к пакетам.

Через взломанную учётную запись в GitHub-репозитории проекта top.gg было размещено изменение, добавляющее файл requirements.txt. В файле был размещён список загружаемый зависимостей, в котором под видом загрузки зависимости с зеркала была ссылка на вредоносный клон пакета “colorama“, размещённый на подставном домене pypihosted.org, с расчётом на то, что разработчики не заметят разницы с легитимным доменом pythonhosted.org.

Release. Ссылка here.