TrapDoor охотится за секретами разработчиков

Socket описала кампанию TrapDoor: вредоносные пакеты в npm, PyPI и Crates.io крадут токены, ключи, кошельки и доступы разработчиков.

2026-05-25 GIGATAP Team #security
#supply-chain-security#npm#pypi

TrapDoor: атака на разработчиков сразу в нескольких реестрах#

Socket сообщает, что выявила активную supply-chain-атаку, которую отслеживает под названием TrapDoor. Кампания затрагивает npm, PyPI и Crates.io. В ней больше 34 вредоносных пакетов и более 384 связанных версий и артефактов. На момент публикации анализа Socket часть пакетов уже удалили, другие всё ещё оставались доступны.

Само число пакетов здесь не главное. Важнее модель выбора целей. TrapDoor нацелен на разработчиков, у которых на локальной машине могут лежать ценные секреты: crypto, DeFi, Solana, Sui, Move, AI и security tooling. Именно там часто рядом оказываются кошельки, GitHub-токены, cloud-учётные данные, SSH-ключи, переменные окружения, браузерные данные и доступ к приватным проектам.

По данным Socket, самый ранний замеченный пакет — PyPI-пакет eth-security-auditor@0.1.0, загруженный 22 мая 2026 года в 20:20:18 UTC. Wheel был опубликован вскоре после этого. Затем пакеты появлялись волнами в разных реестрах: их публиковало небольшое число аккаунтов, обновления выходили и на выходных.

Имена подбирали так, чтобы они выглядели буднично. Socket пишет о пакетах, маскировавшихся под помощники для разработчиков, setup-инструменты, утилиты для маршрутизации моделей, пакеты для prompt engineering, Solidity-инструменты и helper-пакеты для сборки Sui или Move. Это важно: названия не кричали «малварь». Они выглядели как часть реального рабочего процесса.

В каждом реестре — свой путь запуска#

TrapDoor не полагается на одну особенность экосистемы. Кампания подстраивается под поведение каждого реестра.

В npm, по данным Socket, вредоносные пакеты используют postinstall hooks. Это даёт атакующему выполнение кода во время установки — ещё до того, как разработчик что-то импортировал или успел внимательно просмотреть. Socket выделяет общий payload crypto-credential-scanner: это 1 149 строк кода для сбора учётных данных и распространения.

Этот payload не просто собирает файлы. По описанию Socket, он ищет секреты разработчика, проверяет AWS- и GitHub-токены через API-запросы, пытается двигаться дальше по SSH и закрепляется через Git hooks, shell hooks, systemd, cron и SSH. Если это описание точно, речь не о разовом граббере. Кампания рассчитана на сохранение доступа и, возможно, выход на другие машины.

В PyPI Socket обнаружила пакеты, которые выполняют удалённый JavaScript при импорте. Это другая граница доверия. Python-разработчики могут ожидать риск от install scripts, но поведение при import в пакете, похожем на утилиту, часто воспринимается как обычное выполнение приложения. Загрузка удалённого payload в этот момент сокращает объём информации, который можно извлечь только из архива пакета.

В Crates.io Socket наблюдала пакеты, нацеленные на разработчиков Sui и Move. По данным компании, Rust-волна пересекалась с соответствующими npm- и PyPI-пакетами по инфраструктуре и поведению. Среди заявленных целей — эксфильтрация wallet keystores и связанных локальных данных.

Именно кросс-экосистемный дизайн здесь ключевой. Одному оператору не нужно, чтобы каждый пакет стал популярным. Даже пакет с малым числом установок может быть ценным, если попадёт на ноутбук мейнтейнера, рабочую станцию DeFi-разработчика или машину с deploy keys и материалами кошельков.

Цель — не приложение, а машина разработчика#

Большинство разборов dependency-рисков фокусируются на том, что случится с приложением. TrapDoor ближе к личной и операционной угрозе: главный приз — среда разработки.

Socket перечисляет среди целевых данных Sui, Solana и Aptos wallet data; GitHub-токены и учётные данные; данные расширений crypto wallet; локальные конфигурационные файлы разработки. Эти категории опасно пересекаются. Украденный ключ кошелька создаёт прямой финансовый риск. GitHub-токен может открыть приватные репозитории или CI workflows. Cloud-учётные данные дают путь в инфраструктуру. SSH-ключ может стать мостом к другим системам.

Поэтому важны и закрепление, и проверка секретов. Малварь, которая сразу проверяет, работает ли AWS- или GitHub-токен, помогает атакующему быстрее отсортировать ценные находки. Малварь, которая переиспользует SSH-ключи для lateral movement, воспринимает ноутбук разработчика как foothold, а не как конечную точку.

Socket также сообщает об общей инфраструктуре, связанной с GitHub-аккаунтом, и контенте на GitHub Pages по адресу ddjidd564[.]github[.]io/defi-security-best-practices/. По утверждению Socket, в том же репозитории были материалы, написанные атакующим, об эксфильтрации, prompt injection, злоупотреблении AI-агентами, закреплении и концепциях разработки малвари. Это стоит воспринимать как атрибуционные признаки из анализа Socket, а не как доказанную в суде идентификацию личности.

Одна деталь особенно актуальна: Socket пишет, что кампания включает AI injection, нацеленный на developer assistants. Это не значит, что скомпрометирован каждый AI-инструмент для кодинга. Это значит, что атакующие смотрят на toolchain целиком: package managers, локальные секреты, agent prompts, сгенерированные команды и автоматизированные dev-процессы.

Что проверить командам сейчас#

Начинайте не только с текущих manifest-файлов, а с истории зависимостей. Socket пишет, что TrapDoor включал сотни версий и артефактов; часть пакетов удалили, часть на момент публикации ещё оставалась доступной. Исчезновение пакета из реестра не очищает машины, где его уже установили.

Практические проверки:

  • Просмотрите недавние добавления из npm, PyPI и Crates.io в проектах, связанных с crypto, DeFi, AI, Solidity, Sui, Move и security tooling.
  • Ищите пакеты, установленные примерно 22 мая 2026 года и позже, особенно недавно опубликованные helper-пакеты с общими названиями.
  • Проверьте npm-пакеты с postinstall-поведением, особенно всё, что запускалось во время локальной настройки или в CI.
  • Изучите Python-пакеты, которые загружают или выполняют удалённый код при import.
  • Если подозрительный пакет был установлен, ротируйте потенциально раскрытые GitHub-, cloud-, SSH- и wallet-секреты.
  • Проверьте неожиданные Git hooks, правки shell profile, cron-записи, systemd units и изменения SSH-конфигурации.
  • Посмотрите исходящие соединения к незнакомым payload- или configuration-endpoints, размещённым на GitHub Pages.

Для машин разработчиков не останавливайтесь на удалении пакета. Если host выполнил credential stealer, считайте, что локальные секреты могли быть скопированы. Реальная линия восстановления — ротация и проверка закрепления.

CI-системам нужно отдельное внимание. Вредоносный пакет, установленный в CI, мог увидеть repository tokens, build secrets, package-publishing credentials, deployment keys и cloud environment variables. Часто они ценнее, чем локальные файлы одного разработчика.

Где не стоит преувеличивать#

Socket описывает TrapDoor как активную кампанию на момент подготовки материала и пишет, что некоторые пакеты тогда ещё оставались доступны. Этот статус быстро меняется. Удаления из реестров, блокировки аккаунтов и метаданные пакетов могут отличаться к моменту, когда команда прочитает разбор.

Публичные материалы поддерживают связь на уровне кампании между npm, PyPI и Crates.io — на основе общей инфраструктуры и поведенческих совпадений. Но только по этому фрагменту нельзя утверждать число жертв, подтверждённые объёмы кражи, финансовый ущерб или реальную личность атакующего.

Более узкий и сильный вывод такой: атакующие упаковывают кражу учётных данных в форму обычных developer utilities и адаптируют выполнение под каждую экосистему. Crypto- и AI-разработчики привлекательны, потому что на их машинах часто сходятся ключи, токены, кошельки и автоматизация. Низкое число загрузок не означает низкий риск, если цель — доступ высокой ценности.