Разработчики: | Python Software Foundation |
Дата последнего релиза: | 2023/04/23 |
Отрасли: | Интернет-сервисы |
Технологии: | Средства разработки приложений |
Содержание |
Основные статьи:
- Python
- Логическое программирование
- Доказательное программирование
- Методология программирования
- Технология программирования
- Программист
Python Package Index (PyPI) — это хранилище программного обеспечения для языка программирования Python. PyPI помогает находить и устанавливать программное обеспечение, разработанное и распространяемое сообществом Python.
2023: Возможность публикации пакетов без привязки к паролям и токенам API
23 апреля 2023 года стало известно о том, что в репозитории Python-пакетов PyPI (Python Package Index) предоставлена возможность использования защищённого метода публикации пакетов, позволяющего обойтись без сохранения на внешних системах (например, в GitHub Actions) фиксированных паролей и токенов доступа к API. Данный метод аутентификации получил название Trusted Publishers и призван решить проблему с публикацией вредоносных обновлений, осуществляемых в результате компрометации внешних систем и попадания в руки злоумышленников предопределённых паролей или токенов.
Метод аутентификации основан на использовании стандарта OpenID Connect (OIDC), подразумевающего использование токенов аутентификации с ограниченным временем действия, которыми обмениваются внешние сервисы и каталог PyPI для подтверждения операции публикации пакета вместо использования традиционных логина/пароля или вручную сгенерированных постоянных токенов доступа к API. Возможность применения механизма Trusted Publishers уже реализована для обработчиков, запускаемых в GitHub Actions. В будущем ожидается реализация поддержки Trusted Publishers и для других внешних сервисов.Гид по NGFW. 10 наиболее заметных продуктов, доступных на российском рынке
Сопровождающие пакеты могут на стороне PyPI выставить признак доверия идентификаторам, предоставляемым внешним провайдерам OpenID (IdP, OpenID Connect Identity Provider), которые внешний сервис будет использовать для запроса у PyPI недолгоживущих токенов. Генерируемые токены OpenID Connect подтверждают связь между проектом и обработчиком, что позволяет PyPI выполнять дополнительную верификацию метаданных, например, проверять, что публикуемый пакет соотносится с определённым репозиторием. Токены не сохраняются, привязаны к определённым API и автоматически прекращают действовать после истечения короткого времени жизни.
Дополнительно можно отметить отчёт компании Sonatype с информацией о выявлении в марте 2023 года 6933 вредоносных пакетов в каталоге PyPI. Всего с 2019 года число выявленных в PyPI вредоносных пакетов превысило 115 тысяч. Большая часть вредоносных пакетов маскируются под популярные библиотеки при помощи тайпсквотинга (назначение похожих имён, отличающихся отдельными символами, например, exampl вместо example, djangoo вместо django, pyhton вместо python и т.п.) - злоумышленники рассчитывают на невнимательных пользователей, совершивших опечатку или не заметивших отличий в названии при поиске. Вредоносные действия обычно сводятся к отправке конфиденциальных данных, найденных на локальной системе в результате определения типовых файлов с паролями, ключами доступа, криптокошельками, токенами, сессионными Cookie и другой конфиденциальной информацией[1].
2022
Распространение фишинговых пакетов через репозиторий
15 декабря 2022 года появилась информация о том, что кампания по распространению фишинговых пакетов была обнаружена аналитиками из Checkmarx и Illustria, которые совместно работали над расследованием произошедшего. Как говорят специалисты, пакеты загружались с аккаунтов, использующих определенную схему именования, имели схожие описания и вели к одному и тому же кластеру из 90 доменов, на которых было размещено более 65 000 фишинговых страниц. На сайтах были фейковые приложения, опросы, промокоды и другое. В некоторых случаях там были реферальные ссылки для AliExpress.
Больше фишинговых пакетов было загружено в NuGet – 136 258, в PyPI – 7 894 пакетов, а в NPM – всего 212.
URL-адреса фишинговых сайтов вставлялись в описание пакета для того, чтобы ссылки поднимали фишинговые сайты в выдаче. Описания пакетов призывают пользователей переходить по ссылкам, чтобы получить больше информации о приложениях, различных инструментах для генерации кодов, приложениях и т.д.
В некоторых случаях злоумышленники рекламировали поддельные генераторы подарочных карт Steam, коды электронных подарочных карт Playstation Network, сервисы по накрутке подписчиков на различных платформах. Но чтобы воспользоваться ими, жертва должна ввести свою электронную почту, а также логин и пароль от своего аккаунта на сервисе/площадке. Так киберпреступники собирают данные жертвы, чтобы позже продать их на хакерских форумах.
Злоумышленники еще и зарабатывают на этом, перенаправляя пользователей по реферальным ссылкам на различные маркетплейсы.
ИБ-специалисты, обнаружившие эту кампанию, уже сообщили NuGet, PyPI и NPM о заражении, поэтому все вредоносные пакеты уже удалены с площадок.[2]
Распространение инфостилеров в 29 пакетах PyPI
Исследователи компании Phylum обнаружили в реестре PyPI 29 пакетов Python с запутанным кодом, которые имитируют известные библиотеки, но вместо этого сбрасывают инфостилер W4SP на зараженные машины, а другие пакеты используют вредоносное ПО GyruzPIP, предположительно созданное только для «образовательных целей». Об этом стало известно 3 ноября 2022 года.
- Инфостилер W4SP извлекает токены Discord, cookie-файлы и сохраненные пароли;
- Вредоносное ПО GyruzPIP основано на open-source проекте evil-pip, опубликованном «только в образовательных целях». GyruzPIP предназначен для кражи паролей Chrome, cookie-файлов, токенов Discord и загрузки всех собранных данных в веб-перехватчик Discord (Discord Webhook).
Пакеты содержат намеренные опечатки в названии (Typosquatting), чтобы быть похожими на известные библиотеки Python в надежде, что разработчики, пытающиеся найти настоящую библиотеку, сделают орфографическую ошибку и непреднамеренно загрузят одну из вредоносных.
Атака начинается с копирования существующих известных библиотек и внедрения вредоносного оператора «__import__» в исправную кодовую базу пакета.
Особенность от копирования настоящего пакета заключается в том, целевая страница PyPI для пакета создается из «setup.py» и «README.md», поэтому киберпреступники сразу получают реальную целевую страницу с рабочими ссылками. Если пользователь не проверит страницу внимательно, он может подумать, что это легитимный пакет.
Исследователи Phylum заявили, что все пакеты были загружены более 5700 раз.
По словам экспертов, во время исследования им пришлось анализировать запутанный код, охватывающий более 71 000 символов.
Ранее стало известно о вредоносной кампании с использованием сети из более 200 доменов, имитирующих 27 брендов, которые принуждают пользователей загружать вредоносные программы для Windows и Android. Домены в этой кампании создавались с намеренными ошибками в названии при помощи техники «typosquatting»[3].
Примечания
Подрядчики-лидеры по количеству проектов
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
Распределение систем по количеству проектов, не включая партнерские решения
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)
![](/skins/ta/img/0.gif)