Сообщество разработчиков столкнулось с новой угрозой цепочки поставок, нацеленной на популярные проекты с открытым исходным кодом. Злоумышленники, связанные с Северной Кореей, впервые скомпрометировали учётную запись GitHub активного контрибьютора, чтобы внедрить вредоносный код в ключевые репозитории фреймворка для создания десктопных приложений Neutralinojs. Атака, остававшаяся незамеченной три дня, демонстрирует эволюцию тактик APT-групп (продвинутых постоянных угроз) и ставит под угрозу сотни проектов, зависящих от этого инструмента.
Описание
Neutralinojs - это платформа, позволяющая создавать кроссплатформенные десктопные приложения с использованием JavaScript, HTML и CSS. Проект пользуется значительной популярностью: его основной репозиторий имеет более 8 тысяч звёзд на GitHub. Именно эта востребованность и привлекла внимание злоумышленников. Исследовательская группа OpenSourceMalware обнаружила компрометацию четырёх репозиториев, принадлежащих организации Neutralinojs на GitHub. Инцидент произошёл 2 марта 2026 года, когда в течение всего 132 секунд во все репозитории были принудительно отправлены (force-push) вредоносные коммиты в рамках автоматизированной атаки.
Особенностью атаки стало искусное сокрытие следов. Злоумышленники подделали даты коммитов, откатив их на период от 5 до 35 дней в прошлое. В результате вредоносные изменения визуально сливались с историей легитимных правок за январь и февраль, что затрудняло обнаружение. Кроме того, автором коммитов был указан не скомпрометированный аккаунт, а либо владелец организации, либо автоматический бот GitHub Actions. Истинного исполнителя - учётную запись "alphagamer7", принадлежавшую разработчику из Шри-Ланки, имевшему право на запись в организацию с 2019 года, - выдало только неподделываемое служебное поле "triggering_actor" в журналах GitHub Actions.
Техника внедрения кода была единообразной во всех репозиториях. Вредоносная полезная нагрузка в виде обфусцированного JavaScript добавлялась в конец существующих файлов, таких как "spec/runner.js" или "babel.config.js", после сотен пробельных символов. Это делало внедрение практически невидимым при стандартном просмотре разницы между версиями (diff) на GitHub. Ещё одним маркером атаки стало изменение файла ".gitignore": злоумышленники удаляли из списка игнорирования файлы ".env", чтобы иметь возможность загрузить в репозиторий файл с адресом командно-административного сервера, и добавляли туда собственный "config.bat", маскируя свои инструменты.
Анализ вредоносной программы выявил её связь с северокорейской группировкой Lazarus. Финальная полезная нагрузка относится к семейству Beavertail, которое ранее использовалось в кампаниях DPRK (Корейской Народно-Демократической Республики), таких как "Contagious Interview", где хакеры выдавали себя за рекрутеров. Однако в данном случае впервые была зафиксирована компрометация индивидуальной учётной записи GitHub для отравления исходного кода. Это вызывает серьёзные вопросы о том, как были получены учётные данные - через фишинг, утечку или ещё неизвестный метод.
Программа-вымогатель обладает широким набором возможностей. Она нацелена на кража учётных данных из Discord, Visual Studio Code, среды Cursor Editor и Python-окружения. Вредонос устанавливает закрепление в системе (persistence), внедряясь в "node_modules" приложений, и устанавливает полный удалённый контроль через WebSocket-соединение. Инновацией стало использование блокчейна для организации устойчивой командной инфраструктуры. Программа последовательно проверяла транзакции в сетях Tron, Aptos и Binance Smart Chain, извлекая зашифрованные команды из данных транзакций, что крайне затрудняет её нейтрализацию.
Последствия атаки носят широкий характер. Хотя официальные пакеты в менеджере NPM не были скомпрометированы, сотни разработчиков, которые клонируют репозитории для сборки из исходников или внесения правок, могли получить вредоносный код. Исследователи отмечают, что аналогичные внедрения найдены уже более чем в 106 репозиториях на GitHub, что указывает на масштабную продолжающуюся кампанию. Группа OpenSourceMalware оперативно подготовила и отправила исправление (pull request), которое было принято сопровождающими Neutralinojs, а команда безопасности Vercel отключила два использованных злоумышленниками командных сервера.
Данный инцидент служит тревожным напоминанием для всех open-source проектов о критической важности управления доступом. Даже долгосрочные и заслуживающие доверия контрибьюторы могут стать целью атаки, а их скомпрометированные учётные записи - мощным оружием против всей экосистемы. Специалистам по безопасности рекомендуется внедрять строгие правила защиты основных веток (branch protection), требующие обязательной проверки коммитов (code review) перед слиянием, и повсеместно использовать двухфакторную аутентификацию для всех учётных записей с правами на запись.
Индикаторы компрометации
Domains
- neutralinojs.github.io
URLs
- https://auth-rho-dun.vercel.app/api
- https://data-kappa.vercel.app/
Blockchain C2 Addresses
- Tron: TMfKQEd7TJJa5xNZJZ2Lep838vrzrs7mAP
- Tron: TXfxHUet9pJVU1BgVkBAbrES4YUc1nGzcG
- Aptos: 0xbe037400670fbf1c32364f762975908dc43eeb38759263e7dfcdabc76380811e
- Aptos: 0x3f0e5781d0855fb460661ac63257376db1941b2bb522499e4757ecb3ebd5dce3
SHA1
- 6c19a3106b6f6f2725c530e37bfac7f99c2cc82b
- 720c0e39c02184952d24fb5dabe19d8d83c89f53
- 90665b4bed716c05e75ec181ddf7af9345fa1591
- d62abe0288901ba91fe7782094342d4ade2492ce
SHA256
- 904afe0337fbbd79def403b3204f75b4c5fbe4e2271252d22c0307f9cbd14646
- a507b74b6b1e25444c586bc67ae0244cba3037f2b39f25f7eb507ded97c373c1