Разработчики: | 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 и для других внешних сервисов.
Сопровождающие пакеты могут на стороне 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].
Примечания
Подрядчики-лидеры по количеству проектов
Солар (ранее Ростелеком-Солар) (46)
Финансовые Информационные Системы (ФИС, FIS, Финсофт) (15)
Форсайт (11)
Axiom JDK (БеллСофт) ранее Bellsoft (10)
Бипиум (Bpium) (10)
Другие (389)
Солар (ранее Ростелеком-Солар) (8)
Финансовые Информационные Системы (ФИС, FIS, Финсофт) (4)
Консом групп, Konsom Group (КонсОМ СКС) (2)
ЛАНИТ - Би Пи Эм (Lanit BPM) (2)
IFellow (АйФэлл) (2)
Другие (30)
Солар (ранее Ростелеком-Солар) (10)
Форсайт (3)
Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (3)
КРИТ (KRIT) (2)
Cloud.ru (Облачные технологии) ранее SberCloud (2)
Другие (13)
Распределение вендоров по количеству проектов внедрений (систем, проектов) с учётом партнёров
Солар (ранее Ростелеком-Солар) (2, 48)
Microsoft (41, 47)
Oracle (49, 26)
Hyperledger (Open Ledger Project) (1, 23)
IBM (33, 18)
Другие (595, 304)
Солар (ранее Ростелеком-Солар) (1, 8)
Финансовые Информационные Системы (ФИС, FIS, Финсофт) (1, 4)
Microsoft (4, 3)
Oracle (2, 3)
SAP SE (2, 2)
Другие (16, 19)
Солар (ранее Ростелеком-Солар) (1, 11)
Форсайт (1, 3)
Banks Soft Systems, BSS (Бэнкс Софт Системс, БСС) (1, 3)
Сбербанк (1, 2)
Cloud.ru (Облачные технологии) ранее SberCloud (1, 2)
Другие (9, 9)
Солар (ранее Ростелеком-Солар) (1, 6)
Unlimited Production (Анлимитед Продакшен, eXpress) (1, 6)
МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (1, 4)
Мобильные ТелеСистемы (МТС) (1, 4)
SL Soft (СЛ Софт) (1, 3)
Другие (14, 24)
Мобильные ТелеСистемы (МТС) (2, 3)
Unlimited Production (Анлимитед Продакшен, eXpress) (1, 3)
Солар (ранее Ростелеком-Солар) (1, 3)
МТС Exolve (Межрегиональный ТранзитТелеком, МТТ) (1, 2)
Т1 Иннотех (ГК Иннотех) (1, 1)
Другие (12, 12)
Распределение базовых систем по количеству проектов, включая партнерские решения (проекты, партнерские проекты)
Solar appScreener (ранее Solar inCode) - 48 (48, 0)
Hyperledger Fabric - 23 (23, 0)
Windows Azure - 20 (20, 0)
FIS Platform - 15 (15, 0)
Форсайт. Мобильная платформа (ранее HyperHive) - 12 (12, 0)
Другие 311
Solar appScreener (ранее Solar inCode) - 8 (8, 0)
FIS Platform - 4 (4, 0)
Java - 2 (2, 0)
Турбо X - 2 (2, 0)
Парадокс: MES Builder - 2 (2, 0)
Другие 21
Solar appScreener (ранее Solar inCode) - 11 (11, 0)
Форсайт. Мобильная платформа (ранее HyperHive) - 3 (3, 0)
BSS Digital2Go - 3 (3, 0)
Cloud ML Space - 2 (2, 0)
Bpium Конструктор корпоративных систем - 1 (1, 0)
Другие 7
EXpress Защищенный корпоративный мессенджер - 6 (6, 0)
Solar appScreener (ранее Solar inCode) - 6 (6, 0)
МТС Exolve - 4 (4, 0)
РЖД и Робин: Облачная фабрика программных роботов - 3 (3, 0)
Форсайт. Мобильная платформа (ранее HyperHive) - 3 (3, 0)
Другие 12
Solar appScreener (ранее Solar inCode) - 3 (3, 0)
EXpress Защищенный корпоративный мессенджер - 3 (3, 0)
МТС Exolve - 2 (2, 0)
Axiom JDK (ранее Liberica JDK до 2022) - 1 (1, 0)
Eftech.Factory - 1 (1, 0)
Другие 8