Как обычные пакеты Packagist превратили инфраструктуру GitHub в оружие против хостинг-серверов

Исследователи компании Socket обнаружили масштабную операцию, в которой злоумышленники используют не компьютеры жертв, а мощности самого GitHub. Атакующие скомпрометировали учётную запись разработчика dinushchathurya — автора вполне легитимных PHP-библиотек и инструментов для DevOps. Взлом произошёл 12–13 июля 2026 года, и как именно преступники получили доступ к аккаунту, пока неясно. Зато понятно, что они сделали дальше: вместо того чтобы менять код самих библиотек, они добавили в репозитории вредоносные workflow-файлы GitHub Actions.
Как обычные пакеты Packagist превратили инфраструктуру GitHub в оружие против хостинг-серверов
Изображение носит иллюстративный характер

Под удар попали сразу десять пакетов из репозитория Packagist: nationality-list, srilankan-divisional-secretariats, srilankan-gn-divisions, srilankan-local-authorities, srilankan-mobile-number-validator, srilankan-state-hospitals, srilankan-universities, uk-mobile-number-validator, uk-post-code и websmslk. Как видно по названиям, большая часть библиотек связана со Шри-Ланкой — справочники государственных структур, валидаторы телефонных номеров, списки университетов. Ничего, что вызвало бы подозрение у обычного разработчика, подключающего зависимость через composer.
Механизм атаки устроен хитро. Сама PHP-библиотека остаётся чистой — вредонос прячется не в коде, который попадает на сервер пользователя, а в workflow-файлах репозитория. При пуше в репозиторий или ручном запуске workflow срабатывает триггер, который запускает раннеры, размещённые на инфраструктуре самого GitHub. Эти раннеры скачивают Linux-полезную нагрузку с серверов злоумышленников и пытаются эксплуатировать CVE-2026-41940 — уязвимость обхода аутентификации, дающую удалённому атакующему повышенный контроль над панелями управления cPanel и WHM.
Полезная нагрузка после успешной эксплуатации собирает практически всё, что может пригодиться для дальнейших атак: учётные данные, конфигурационные файлы, переменные окружения, доступ к базам данных, SSH-ключи, git-токены, облачные ключи, данные платёжных сервисов. В списке украденного — токены AWS, GitHub и GitLab, ключи API OpenAI и Google, ключи Stripe, доступы к SendGrid и Mailgun, а также результаты удалённого выполнения кода. Это не точечная кража одного пароля, а системный сбор всего, что открывает дорогу к следующим целям.
Масштаб впечатляет сам по себе: в каждой скомпрометированной версии пакета исследователи насчитали от 55 до 62 вредоносных workflow-файлов, а суммарно по всем десяти пакетам — 583 файла. Раннеры проверяют архитектуру целевой системы и подстраиваются под 32-битные и 64-битные x86 и ARM-процессоры, то есть атака рассчитана на широкий спектр серверного оборудования. Все скомпрометированные workflow непрерывно отчитываются о ходе выполнения на управляющий сервер по IP-адресу 43.228.157.68 через HTTP POST-запросы.
Кирилл Бойченко, исследователь Socket, описал суть находки так: «Мы наблюдаем за тем, как инфраструктура, созданная для автоматизации сборки и тестирования кода, без каких-либо изменений превращается в готовую платформу для сканирования и взлома удалённых серверов — и всё это происходит на бесплатных мощностях GitHub, а не на машинах жертв».
Отдельного внимания заслуживает то, что случай с dinushchathurya — не единичный инцидент. Аналитики нашли около 6 100 workflow-файлов на GitHub, объединённых общим идентификатором DNSHook: f5b0b742-240a-4811-8a5b-b0ba6060685d. Это говорит о том, что кампания вышла далеко за пределы одной скомпрометированной учётной записи и одного набора PHP-пакетов — вероятно, речь идёт о куда более широкой инфраструктуре атак, построенной по одному шаблону.
Ключевое отличие этой схемы от классических атак на цепочку поставок в том, что она вообще не требует установки скомпрометированного пакета конечным пользователем. Сканирование и эксплуатация целиком проходят на раннерах, размещённых GitHub, — площадка для сборки кода становится атакующей платформой сама по себе.
Та же компания Socket описала вторую, параллельную кампанию — «Operation Muck and Load», нацеленную уже на пользователей Windows. Она затронула около 200 репозиториев GitHub и 190 учётных записей. Репозитории маскируются под утилиты для разработчиков и интеграции с криптовалютными кошельками, а на деле раздают целый набор вредоносного ПО: инфостилеры, загрузчики и дропперы, шпионское ПО, трояны удалённого доступа (RAT) и майнеры Monero.
Цепочка заражения устроена в несколько этапов. Вредоносная нагрузка либо встроена прямо в исходный код репозитория, либо распространяется через релизные файлы GitHub. Далее скачивается PowerShell-скрипт, который обращается к так называемым «мёртвым точкам» — сервисам вроде Pastebin, Rlim, Telegram, YouTube, И⃰, Google Docs и Gitcode. Оттуда скрипт получает ссылку на защищённый паролем архив, размещённый уже на самом GitHub, — и именно из него извлекается и запускается основная вредоносная программа.
По тактическим приёмам эта операция пересекается с активностью, которую компания Trend Micro отслеживает под именем Water Curse. Кластер связан с конкретным электронным адресом и управляет обширной «призрачной сетью» репозиториев на GitHub, перенаправляющей ничего не подозревающих пользователей на страницы GitHub Pages с заражёнными файлами. Расчёт делается на людей, готовых запускать непроверенные инструменты — автоматизацию для криптовалют, утилиты для кошельков, читы для игр, крипторы и инструменты для offensive security. По сути, любой поиск бесплатного софта на GitHub рискует обернуться установкой вредоносной программы вместо обещанного инструмента.


Новое на сайте

20868Уязвимости Plex открыли путь майнерам и Linux-бэкдору 20867Взлом OpenCode Console: под угрозой могли оказаться ключи OpenAI, Anthropic и Google 20866Rank Math PRO: заражённое обновление оставило на сайтах самовосстанавливающийся бэкдор 20865Как исследовательские модели OpenAI обходили ограничения и присваивали чужие данные 20864Атака на BeyondTrust: шпионская группа получила доступ к серверам поддержки 20863Как пакет imgdecode превращает npm-зависимость в загрузчик вредоносного кода? 20862Как PEERSTITCH обходит проверки VPN-сессий FortiOS? 20861Что происходит, когда ИИ-агент выходит за пределы тестовой среды? 20860Как 37-летняя ошибка открыла путь к root в OpenBSD 7.9? 20859ИИ-модели для SOC: точный ответ зависит от улик 20858Как одна учётная запись ConnectWise открыла доступ к 173 арендаторам Microsoft 365? 20857Пять минут до заражения: как подменили обновления AOMEI Backupper 20856Ловушка под видом регистрации: как UAT-11985 крадёт аккаунты Google 20855Может ли виртуальная машина прочитать память хоста? 20854Как дешёвые Android-смартфоны превращаются в чужие прокси?
Ссылка