PolinRider: КНДР заражает npm через GitHub-аккаунты разработчиков
PolinRider представляет собой кампанию в цепочке поставок ПО, которую связывают с КНДР. Злоумышленники компрометируют легитимных разработчиков GitHub и их локальные среды сборки, после чего используют захваченные учетные записи для распространения ВПО через доверенные репозитории и пакеты npm.
Кампания была выявлена в 4 367 репозиториях, принадлежащих 2 152 владельцам. Скомпрометированные учетные записи позволяют вносить вредоносные изменения сразу в несколько репозиториев. Это указывает на то, что доступ злоумышленников распространяется на всю учетную запись, а не ограничивается одним пакетом.
Вредоносный код маскируют под файлы конфигурации
В ходе кампании обфусцированный JavaScript скрывается в файлах, которые выглядят легитимными или не предназначены для выполнения. Среди них файлы .vscode/tasks.json, поддельные шрифты .woff2, а также конфигурации babel.config.cjs, tailwind.config.js, postcss.config.mjs и eslint.config.mjs.
Распространенным механизмом запуска становится задача VS Code с параметром runOn: folderOpen. Она запускает JavaScript, замаскированный под шрифт, при открытии проекта.
NullReceiver использует Ethereum RPC и криптокошелек
Вредоносная программа, известная как загрузчик NullReceiver, применяет обфускацию, конечные точки Ethereum RPC и криптокошелек в качестве якорей для управления. Кроме того, загрузчик способен создавать отсоединенный процесс Node.js с помощью spawn('node').unref().
Компрометация npm-пакетов
В отчете описана компрометация пакетов npm fetch-page-assets и html-to-gutenberg. Их поддерживают пользователь GitHub digelo и пользователь npm digelim.
Злонамеренный контент впервые появился в репозитории разработчика 29 марта 2026 года. В пакет fetch-page-assets он попал в версии 1.2.9, опубликованной 25 мая.
После выпуска уведомления GHSA-vxq2-vhm7-7mhq npm удалил эту версию, однако последующие релизы также оставались скомпрометированными. В версиях 1.2.10 и 1.2.11 видимые файлы полезной нагрузки удалили, но триггер автоматического выполнения сохранили.
31 июля злоумышленники восстановили поддельный шрифт в качестве полезной нагрузки и добавили отдельно обфусцированный загрузчик в файл babel.config.cjs. В результате версии 1.2.12, 1.2.13 и 1.2.14 продолжили распространять ВПО.
Кампания также затронула другие пакеты npm, включая версию 3.3.24 пакета @lambda-platform/lambda-vue и пакеты, опубликованные аккаунтом denislistiadi.
Удаление пакетов не устраняет источник компрометации
В отчете подчеркивается, что рекомендации, привязанные к конкретным версиям, и удаление пакетов не решают проблему зараженных администраторов, репозиториев или конвейеров сборки. Скомпрометированные учетные записи могут повторно внедрять ВПО в последующие выпуски.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



