Самовідтворюваний черв’як npm під назвою SANDWORM_MODE вражає понад 19 пакетів, збираючи приватні ключі, мнемоніки BIP39, файли гаманців та API-ключі LLM із середовищ розробки.
Жива атака на ланцюг поставок npm зараз охоплює середовища розробників. Команда Threat Research від Socket виявила те, що вона позначає як SANDWORM_MODE — самовідтворюваний черв’як, що поширюється щонайменше на 19 зловмисних пакетів npm, пов’язаних із двома псевдонімами видавців. Як повідомила SocketSecurity у X, це активна атака на ланцюг поставок, яка краде секрети розробників і CI, вставляє робочі процеси GitHub, отруює інструменти штучного інтелекту та збирає API-ключі LLM.
Кампанія безпосередньо запозичує з родини черв’яків Shai-Hulud. Спершу йдуть приватні ключі. Без будь-яких часових обмежень, без затримки. Виявлені криптоартефакти при імпорті негайно ексфільтруються через спеціальний канал drain перед запуском будь-якого іншого етапу шкідливого коду.
Вам потрібно знати: Загрози безпеці гаманців посилюються Обов’язково до прочитання: Злом безпеки Wallet Trust: Як захистити свої активи
Черв’як має двоступеневу архітектуру. Перший етап активується миттєво при імпорті, збираючи токени npm, токени GitHub, секрети середовища та криптоключі лише через читання файлів. Без виконання команд у оболонці, без шуму. Мнемоніки BIP39, приватні ключі Ethereum, байтові масиви Solana, ключі WIF Bitcoin та рядки xprv — все це збирається у перший прохід.
Криптоключі негайно залишають машину через HTTPS POST на Cloudflare Worker за адресою pkg-metrics[.]official334[.]workers[.]dev/drain. Це відбувається до будь-якої перевірки часових обмежень, навіть до завантаження другого етапу.
Другий етап має затримку у 48 годин, яка базується на MD5-хеші імені хоста та імені користувача. Він йде глибше: зчитування менеджерів паролів через Bitwarden, 1Password і LastPass CLI, локальні сховища SQLite, включаючи Apple Notes і Messages macOS, а також повне сканування файлової системи на предмет файлів гаманців. У середовищах CI ця затримка повністю зникає. Повний шкідливий пакет активується без будь-яких затримок на GITHUB_ACTIONS, GITLAB_CI, CIRCLECI, JENKINS_URL і BUILDKITE.
За даними SocketSecurity у X, черв’як також вставляє робочі процеси GitHub і отруює інструменти штучного інтелекту, що підтверджено у повній технічній розкритті Socket.
Також варто прочитати: $21М у конфіскованому Bitcoin повернули після замороження транзакцій владою
Три пакети імітують Claude Code. Один з них націлений на OpenClaw — агент штучного інтелекту, що набрав понад 210 000 зірок на GitHub. Модуль McpInject черв’яка розгортає підробний сервер MCP у конфігураціях Claude Code, Claude Desktop, Cursor, VS Code Continue і Windsurf на диску. Кожен отримує фальшиву команду інструменту, що вказує на прихований зловмисний сервер.
Цей сервер містить вбудовану ін’єкцію підказок, яка наказує AI-асистентам мовчки зчитувати SSH-ключі, облікові дані AWS, токени npm та секрети середовища перед кожним викликом інструменту. Модель ніколи не повідомляє користувача. Ін’єкція явно блокує таку можливість.
Цільовими для збору API-ключів стали дев’ять провайдерів LLM: OpenAI, Anthropic, Google, Groq, Together, Fireworks, Replicate, Mistral і Cohere. Ключі витягуються з змінних середовища та файлів .env, перевіряються на відповідність відомим форматам перед ексфільтрацією.
Витік відбувається через три канали у каскаді: HTTPS до Cloudflare Worker, потім автентифіковані завантаження через API GitHub у приватні репозиторії з використанням подвійного кодування base64, і DNS-тунелювання через запити з кодуванням base32 до freefan[.]net і fanfree[.]net. Алгоритм генерації доменів, ініційований “sw2025”, забезпечує резервний варіант через десять TLD, якщо все інше не спрацює.
Це варто подивитися: Glassnode позначає виснаження попиту на BTC
Два псевдоніми видавців, що стоять за кампанією, — official334 і javaorg. Підтверджені 19 зловмисних пакетів включають suport-color@1.0.1, claud-code@0.2.1, cloude@0.3.0, crypto-locale@1.0.0, secp256@1.0.0 і scan-store@1.0.0. Серед додаткових “сплячих” пакетів — ethres, iru-caches, iruchache і uudi — поки що без зловмисного навантаження.
npm видалив зловмисні пакети. GitHub зняв інфраструктуру зловмисника. Cloudflare зупинив воркерів. Але захисникам потрібно діяти вже зараз.
Якщо будь-який із цих пакетів працював у вашому середовищі, вважайте машину скомпрометованою. Змініть токени npm і GitHub, змініть усі секрети CI, перевірте файли .github/workflows на наявність додавання pull_request_target, що серіалізує ${}secrets. Перевірте глобальні налаштування шаблонів git за допомогою git config –global init.templateDir. Перегляньте конфігурації AI-асистента на предмет несподіваних записів у mcpServers. Вбудований у черв’яка поліморфний движок deepseek-coder:6.7b наразі вимкнений, але у майбутніх версіях він може переписати себе для уникнення виявлення.
У коді також є “мертва” перемикач, наразі вимкнений. При активації він виконує команду find ~ -type f -writable і знищує всі записані файли у домашній директорії. Оператор все ще працює над цим.