Socket нашла 162 вредоносных артефакта в кампании, которую связывают с северокорейским кластером Contagious Interview.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:800/450;margin-bottom:2rem;overflow:hidden">
Атака PolinRider уже не выглядит как точечная история про вредоносные npm-пакеты. Исследователи Socket нашли 162 вредоносных релизных артефакта в 108 пакетах и расширениях, а следы кампании теперь ведут сразу в несколько экосистем открытого кода, включая npm, Packagist, Go modules и расширения Chrome. Активность связывают с северокорейским кластером Contagious Interview, также известным как Famous Chollima.
Главная цель кампании не изменилась. Злоумышленники бьют по разработчикам, потому что рабочая машина программиста часто хранит доступы к репозиториям, пакетным реестрам, облакам, CI/CD и внутренним сервисам. Один зараженный пакет может открыть дорогу не только к ноутбуку жертвы, но и к цепочке поставки, через которую код попадет к другим пользователям.
По данным Socket , PolinRider вышла за пределы npm и затронула 80 Go-модулей, 10 пакетов Packagist и одно расширение Chrome. Исследователи считают кампанию активной и ожидают появления новых зараженных пакетов, поскольку атакующие продолжают взламывать аккаунты мейнтейнеров, менять легитимные репозитории и публиковать зараженные версии там, где получают доступ к реестрам.
Техника атаки строится вокруг одного приема. Взломщики добавляют в нормальные проекты запутанный JavaScript-загрузчик, а затем прячут вредоносный код так, чтобы беглый просмотр репозитория ничего не показал. В старых вариантах PolinRider код часто маскировали в конфигурационных файлах, включая <code>config.js</code>, <code>vite.config.js</code> и похожие файлы. В новых случаях загрузчик прячут в поддельных <code>.woff2</code> файлах, которые выглядят как обычные шрифты.
Запуск вредоносного кода тоже маскируют под нормальную работу инструментов разработчика. В одном из вариантов файл <code>.vscode/tasks.json</code> содержит скрытую задачу, которая стартует при открытии папки в VS Code и запускает поддельный файл шрифта через Node.js. Разработчик может открыть проект для проверки или доработки и сам запустить вредоносную цепочку, не устанавливая отдельную программу.
Socket также описывает случаи, где атакующие переписывали историю Git. Force push и датированные задним числом коммиты помогали сделать вредоносные изменения похожими на старые и безобидные правки. Обычная страница GitHub в такой ситуации может выглядеть чисто, а признаки взлома остаются в журнале активности, метаданных релизов и подозрительных изменениях конфигурации.
Один из заметных примеров связан с аккаунтом Xpos587. Несколько репозиториев под этим аккаунтом изменили в узком временном окне 23 июня в 10:00 UTC. Socket считает такой синхронный всплеск нетипичным для обычной работы мейнтейнера и связывает картину с компрометацией аккаунта. После изменения репозиториев вредоносные версии затронутых Go-модулей попали в пакетную экосистему.
Еще одна ветка кампании затронула Packagist и namespace <code>sevenspan</code>, связанный с GitHub-организацией 7span. Мейнтейнеры нашли часть заражения и удалили фальшивые <code>.woff2</code> файлы, но зачистка не закрыла все следы. В некоторых репозиториях остался запутанный JavaScript, спрятанный в конфигурационных файлах. Такой случай показывает риск частичной реакции, когда команда убирает один способ маскировки, но пропускает другой.
После распаковки загрузчик PolinRider обращается к блокчейн-инфраструктуре и публичным RPC-сервисам, включая TRON, Aptos и BNB Smart Chain, получает зашифрованный второй этап, расшифровывает данные встроенными XOR-ключами и запускает результат через <code>eval()</code>. Среди уже замеченных полезных нагрузок Socket называет DEV#POPPER и OmniStealer. Такие инструменты могут красть учетные данные, данные браузера, криптокошельки и выполнять команды, но сама схема с загрузчиком позволяет заменить полезную нагрузку в будущих атаках.
Командам, которые ставили затронутые версии пакетов или расширений, Socket советует считать рабочую среду потенциально скомпрометированной до проверки. Разработчикам нужно искать подозрительные задачи VS Code с запуском при открытии папки, команды, которые исполняют файлы с нетипичными расширениями, неожиданные правки <code>.vscode/tasks.json</code>, <code>vite.config.js</code>, <code>eslint.config.js</code>, конфигурационных файлов и каталогов со статическими ресурсами. Секреты npm, GitHub, PyPI, RubyGems, облаков, CI/CD, SSH, Kubernetes, Docker, Vault и других сервисов безопаснее менять с чистой машины, а не с хоста, где мог запускаться зараженный пакет.
PolinRider опасна не только числом найденных артефактов. Кампания показывает, насколько хрупкой стала доверенная цепочка вокруг открытого кода. Разработчик видит знакомый репозиторий, нормальную историю коммитов и привычные конфиги, но за такой витриной может скрываться загрузчик, который включается в момент открытия проекта.
<div class="articl-text-cover" style="position:relative;width:100%;max-width:800px;margin-left:auto;margin-right:auto;aspect-ratio:800/450;margin-bottom:2rem;overflow:hidden">
Атака PolinRider уже не выглядит как точечная история про вредоносные npm-пакеты. Исследователи Socket нашли 162 вредоносных релизных артефакта в 108 пакетах и расширениях, а следы кампании теперь ведут сразу в несколько экосистем открытого кода, включая npm, Packagist, Go modules и расширения Chrome. Активность связывают с северокорейским кластером Contagious Interview, также известным как Famous Chollima.
Главная цель кампании не изменилась. Злоумышленники бьют по разработчикам, потому что рабочая машина программиста часто хранит доступы к репозиториям, пакетным реестрам, облакам, CI/CD и внутренним сервисам. Один зараженный пакет может открыть дорогу не только к ноутбуку жертвы, но и к цепочке поставки, через которую код попадет к другим пользователям.
По данным Socket , PolinRider вышла за пределы npm и затронула 80 Go-модулей, 10 пакетов Packagist и одно расширение Chrome. Исследователи считают кампанию активной и ожидают появления новых зараженных пакетов, поскольку атакующие продолжают взламывать аккаунты мейнтейнеров, менять легитимные репозитории и публиковать зараженные версии там, где получают доступ к реестрам.
Техника атаки строится вокруг одного приема. Взломщики добавляют в нормальные проекты запутанный JavaScript-загрузчик, а затем прячут вредоносный код так, чтобы беглый просмотр репозитория ничего не показал. В старых вариантах PolinRider код часто маскировали в конфигурационных файлах, включая <code>config.js</code>, <code>vite.config.js</code> и похожие файлы. В новых случаях загрузчик прячут в поддельных <code>.woff2</code> файлах, которые выглядят как обычные шрифты.
Запуск вредоносного кода тоже маскируют под нормальную работу инструментов разработчика. В одном из вариантов файл <code>.vscode/tasks.json</code> содержит скрытую задачу, которая стартует при открытии папки в VS Code и запускает поддельный файл шрифта через Node.js. Разработчик может открыть проект для проверки или доработки и сам запустить вредоносную цепочку, не устанавливая отдельную программу.
Socket также описывает случаи, где атакующие переписывали историю Git. Force push и датированные задним числом коммиты помогали сделать вредоносные изменения похожими на старые и безобидные правки. Обычная страница GitHub в такой ситуации может выглядеть чисто, а признаки взлома остаются в журнале активности, метаданных релизов и подозрительных изменениях конфигурации.
Один из заметных примеров связан с аккаунтом Xpos587. Несколько репозиториев под этим аккаунтом изменили в узком временном окне 23 июня в 10:00 UTC. Socket считает такой синхронный всплеск нетипичным для обычной работы мейнтейнера и связывает картину с компрометацией аккаунта. После изменения репозиториев вредоносные версии затронутых Go-модулей попали в пакетную экосистему.
Еще одна ветка кампании затронула Packagist и namespace <code>sevenspan</code>, связанный с GitHub-организацией 7span. Мейнтейнеры нашли часть заражения и удалили фальшивые <code>.woff2</code> файлы, но зачистка не закрыла все следы. В некоторых репозиториях остался запутанный JavaScript, спрятанный в конфигурационных файлах. Такой случай показывает риск частичной реакции, когда команда убирает один способ маскировки, но пропускает другой.
После распаковки загрузчик PolinRider обращается к блокчейн-инфраструктуре и публичным RPC-сервисам, включая TRON, Aptos и BNB Smart Chain, получает зашифрованный второй этап, расшифровывает данные встроенными XOR-ключами и запускает результат через <code>eval()</code>. Среди уже замеченных полезных нагрузок Socket называет DEV#POPPER и OmniStealer. Такие инструменты могут красть учетные данные, данные браузера, криптокошельки и выполнять команды, но сама схема с загрузчиком позволяет заменить полезную нагрузку в будущих атаках.
Командам, которые ставили затронутые версии пакетов или расширений, Socket советует считать рабочую среду потенциально скомпрометированной до проверки. Разработчикам нужно искать подозрительные задачи VS Code с запуском при открытии папки, команды, которые исполняют файлы с нетипичными расширениями, неожиданные правки <code>.vscode/tasks.json</code>, <code>vite.config.js</code>, <code>eslint.config.js</code>, конфигурационных файлов и каталогов со статическими ресурсами. Секреты npm, GitHub, PyPI, RubyGems, облаков, CI/CD, SSH, Kubernetes, Docker, Vault и других сервисов безопаснее менять с чистой машины, а не с хоста, где мог запускаться зараженный пакет.
PolinRider опасна не только числом найденных артефактов. Кампания показывает, насколько хрупкой стала доверенная цепочка вокруг открытого кода. Разработчик видит знакомый репозиторий, нормальную историю коммитов и привычные конфиги, но за такой витриной может скрываться загрузчик, который включается в момент открытия проекта.
- Источник новости
- www.securitylab.ru