CloudSEK: злоумышленники использовали npm Trusted Publishing для доставки загрузчика GHAPPIER

Материал подготовлен искусственным интеллектом на основе нескольких источников — ссылки на оригиналы приведены ниже.
Злоумышленники использовали механизм npm trusted publishing для доставки ранее неизвестного загрузчика GHAPPIER в легитимном пакете с действительным провенансом, сообщила CloudSEK 20 сентября. Вредоносный релиз 0.2.21 оставался доступным 35 минут 38 секунд 9 сентября. CloudSEK не обнаружила эксплуатации GitHub, npm или какого-либо пакета, связав инцидент с украденным ключом мейнтейнера.
Ключевые факты
- CloudSEK сообщила 20 сентября, что аккаунт мейнтейнера @dforge-core/dforge-mcp использовался 105 минут 9 сентября.
- Вредоносный релиз 0.2.21 доставил загрузчик GHAPPIER и оставался последней версией 35 минут 38 секунд.
- Злоумышленник изменил три строки, чтобы любой пуш в основную ветку запускал workflow релиза, а через 14 минут переписал workflow для автоматической публикации.
- CloudSEK отследила GHAPPIER как минимум в 65 публичных репозиториях, 73 заражённых файлах и 22 аккаунтах.
- Вторая полезная нагрузка в репозитории другой жертвы точно совпала с PolinRider — кампанией, которую OpenSourceMalware отслеживает с марта 2026 года.
Механика атаки
Злоумышленник использовал аккаунт мейнтейнера @dforge-core/dforge-mcp в течение 105 минут 9 сентября. Первый вредоносный релиз 0.2.20 не удался и сломал установку пакета. Релиз 0.2.21 затем доставил загрузчик и оставался последней версией 35 минут 38 секунд. Злоумышленник изменил три строки, чтобы любой пуш в основную ветку запускал workflow релиза, а через 14 минут переписал workflow для автоматической публикации. Сборка выполнялась через GitHub Actions с OIDC trusted publishing, и её аттестация до сих пор находится в публичном журнале Sigstore, указывая на коммит злоумышленника.
Полезная нагрузка и доставка
Загрузчик представлял собой одну строку в файле размером 99 КБ и открывал четырёхэтапную цепочку, завершавшуюся универсальной удалённой оболочкой, которая самоудалялась с диска во время работы. Он срабатывал при запуске MCP-сервера, а не при установке, поэтому системы, установившие 0.2.21 без запуска, не выполняли загрузчик. CloudSEK не обнаружила эксплуатации GitHub, npm или какого-либо пакета, заявив, что каждое действие в отчёте было авторизованным действием с украденным ключом.
Связь с PolinRider
CloudSEK отследила GHAPPIER как минимум в 65 публичных репозиториях, 73 заражённых файлах и 22 аккаунтах. Вторая полезная нагрузка в репозитории другой жертвы точно совпала с PolinRider — кампанией, которую OpenSourceMalware отслеживает с марта 2026 года. Эта полезная нагрузка считывала конфигурацию из пустой транзакции Ethereum стоимостью около $0,20, не оставляя домена для блокировки или хоста для изъятия. Другие исследователи связывают PolinRider с Северной Кореей, но CloudSEK заявила, что её единственная независимая проверка этого не подтвердила. CloudSEK считает, что документированный сбор учётных данных PolinRider — наиболее вероятный путь к аккаунту мейнтейнера, и не нашла доказательств успешной компрометации какой-либо организации.