🪤 Операція TrapDoor: масована атака на репозиторії npm, PyPI та Crates[.]io викрадає ключі та криптогаманці розробників
Компанія Socket Security виявила активну координовану атаку на ланцюжок постачання програмного забезпечення, яка отримала кодову назву TrapDoor. Кампанія охоплює понад 34 шкідливі пакети в більш ніж 384 версіях і поширюється одночасно у трьох основних екосистемах – npm, PyPI та Crates[.]io. Перша шкідлива активність зафіксована 22 травня 2026 року із завантаженням Python-пакету [email protected] на PyPI; надалі пакети публікувалися хвилями протягом усіх вихідних одразу в усіх трьох реєстрах. Пакети замасковані під звичні інструменти розробника – wallet-security-checker, prompt-engineering-toolkit, solidity-deploy-guard, defi-threat-scanner, sui-move-build-helper – і орієнтовані передусім на розробників у сферах криптовалют, DeFi, Solana та штучного інтелекту. У Rust-пакетах шкідливий код запускається через build-скрипт, який автоматично виконується під час компіляції: він знаходить локальні сховища приватних ключів, шифрує їх за допомогою XOR-ключа «cargo-build-helper-2026» і надсилає на GitHub Gists зловмисника.
Python-пакети завантажують JavaScript з підконтрольного домену на GitHub Pages і виконують його через «node -e», що дозволяє атакуючому оновлювати поведінку шкідника без перевидання пакету. Серед цілей для викрадання – SSH-ключі, гаманці Sui/Solana/Aptos, облікові дані AWS, токени GitHub, дані браузерів та API-ключі. Особливо відзначається нетривіальний прийом: у проектних файлах .cursorrules та CLAUDE[.]md зловмисники впровадили приховані інструкції з використанням Unicode-символів нульової ширини, щоб змусити AI-помічників для написання коду виконувати автоматизоване викрадання облікових даних під виглядом сканування безпеки. Socket Security також повідомила, що зловмисник вів на GitHub цілу інфраструктуру: підтримував репозиторії-приманки на теми ШІ і безпеки та поширював посилання на фіктивні «безпечні» робочі процеси в легітимних спільнотах розробників. Частину пакетів вже видалено з реєстрів, однак на момент публікації нові версії продовжували з’являтися.
