Кампания, наречена GhostAction, е внедрила злонамерени работни процеси (workflows) на GitHub Actions в 790 хранилища, излагайки на риск облачни идентификационни данни, токени за публикуване на софтуер и ключове за достъп до AI услуги.
Този брой представлява оценката на OpenSourceMalware за публично възстановими и валидирани хранилища към 9 октомври 2026 г.; това не означава, че от всяко хранилище са изтекли идентификационни данни или е имало потвърдена злоупотреба.
Кампанията злоупотребява с доверени акаунти на разработчици. След като атакуващият получи права за запис в хранилищата на поддържащия проекта, той може да добави работен процес, който се изпълнява при качване на код (push) или при ръчно стартиране.
Това може да разкрие тайни (secrets), достъпни за работния процес, превръщайки откраднатия акаунт във входна точка към облачни системи, регистри за софтуерни пакети и други проекти.
Изследователи от OpenSourceMalware са идентифицирали този последен етап, докато са разследвали злонамерен PyPI пакет, наречен claudecord, и са помагали на неговия разработчик при реакцията на инцидента. Те са открили зловредния работен процес и са проследили свързаната активност в стотици хранилища.
Хакери компрометираха 790 хранилища в GitHub
По-новият работен процес прави повече от това просто да чете избрани тайни на GitHub Actions. Той претърсва файловете в хранилището за низове, наподобяващи идентификационни данни, включително AWS ключове за достъп и токени за GitHub, GitLab, Google, Slack, SendGrid, OpenAI, Anthropic и OpenRouter.
Той също така сканира достъпната Git история, където ключ, премахнат от текущата версия на даден файл, все още може да фигурира в по-стар комит.
За да извлече тази история, работният процес използва fetch-depth: 0. След това той търси модели на идентификационни данни и в някои случаи събира съседни редове около идентификаторите на AWS ключове.
Тези редове могат да съдържат полезен контекст, като например съответстващ секретен ключ или подробности за акаунт или услуга. По този начин същите стъпки за събиране могат да разкрият много повече от самостоятелен низ с ключ.
Работният процес изпраща събраните данни към контролирана от атакуващите инфраструктура през обикновен HTTP протокол. Тъй като трансферът се извършва от среда за непрекъсната интеграция (CI runner), той може да наподобява рутинна дейност по компилиране, освен ако защитниците не инспектират промените в работните процеси и изходящия мрежов трафик.
За повече предистория относно предишна вълна на GhostAction вижте доклада на Cyber Security News за кампанията срещу веригата за доставки GhostAction. Числото отразява кампания, която се разраства с течение на времето.
GitGuardian съобщи за 772 засегнати хранилища между 31 август и 30 септември 2026 г. По-късният анализ на OpenSourceMalware установи 790 до 9 октомври, включително хранилища, които може вече да не са публично видими.
При отделна вълна от 8 октомври Socket и StepSecurity съобщиха за активност в 346 хранилища, свързани с два компрометирани акаунта. Тези данни обхващат различни периоди и масиви от доказателства, така че не бива да се събират.
Тази вълна включва хранилища, притежавани от акаунтите kitao и henrywoo, както и uber/athenadriver на Uber. Активността е засегнала активни проекти, разклонения (forks) и хранилища, които са били неактивни от години, което предполага автоматизирано откриване на хранилища, в които компрометираните акаунти могат да правят промени.
В доклада се посочва, че някои работни процеси са се изпълнили успешно, но към 9 октомври не са открити злонамерени версии в PyPI или crates.io, свързани с тази последна вълна.
Защо премахването на работния процес не е достатъчно
Успешното изпълнение на работен процес може да разкрие идентификационни данни дори ако файлът по-късно бъде изтрит. Премахването му не отменя откраднат токен на GitHub, не инвалидира облачни ключове или ключове за публикуване и не премахва идентификационни данни от стари комити.
Екипите трябва да запазят съответните файлове на работните процеси, дневниците за изпълнение, комитите и одитните записи, след което да анулират идентификационните данни на акаунта, позволил промените, и да сменят всяка тайна, до която работният процес е имал достъп. Те трябва също така да проверят публикуваните пакети, внедряванията и облачната активност за засегнатия период.
Като свързан контекст, Cyber Security News е отразявал кражбата на PyPI токени чрез GitHub Actions и финансовия риск от откраднати ключове за AI услуги.
Указанията на GitHub за сигурно използване на Actions препоръчват достъп с минимални привилегии, преглед на кода на работните процеси и ротация на компрометираните тайни. Изискването на одобрение за чувствителни промени в работните процеси и ограничаването на мрежовия достъп на изпълнителите (runners) могат да добавят допълнителни нива на защита.
OpenSourceMalware също така идентифицира my-github[.]com, който се разрешава до текущия IP адрес за събиране на данни от кампанията, като индикатор с висок приоритет. В доклада се отбелязва, че домейнът е подозрителен, но не се доказва, че операторът на GhostAction го е регистрирал.
Домейн с подобно име за GitLab е посочен само като обект под наблюдение, а не като потвърдена инфраструктура на кампанията. Екипите по защита трябва да запазят това разграничение при създаване на сигнали за сигурност.
Индикатори за компрометиране (IoCs):
| Тип | Индикатор | Контекст |
|---|---|---|
| SHA-256 | 7fbd40446a82c77b23432c6ab73bd8595c98e90e4f4a473198b4d1256f3e8c4b | Артефакт на claudecord версия 0.3.2 |
| IP адрес | 193.32.204[.]199 | Текуща инфраструктура за събиране и сканиране |
| URL адрес | http://193.32.204[.]199/?c=monami | Докладвана крайна точка за събиране на данни от по-новия работен процес |
| URL адрес | http://193.32.204[.]199:3000/api/workflow/receive?inj=<id> | Вариант на крайна точка, докладван в седем хранилища |
| Домейн | my-github[.]com | Подозрителен домейн, свързан с текущия IP адрес; авторството не е доказано |
| Шаблон за домейн | *.my-github[.]com | Wildcard DNS; отделните поддомейни изискват потвърждение |
| Домейн | my-gitlab[.]com | Само в списък за наблюдение; не е приписан на GhostAction |
| Исторически IP адреси/домейни | 170.39.218[.]2; 45.139.104[.]115; bold-dhawan.45-139-104-115.plesk[.]page; objective-hopper.45-139-104-115.plesk[.]page; carte-avantage[.]com; *.oast[.]fun | Инфраструктура от по-ранна фаза на кампанията |
| Пътища на работни процеси | .github/workflows/github_actions_security.yml; .github/workflows/security-check.yml; .github/workflows/security-audit.yml | Докладвани пътища на злонамерени работни процеси; проверете съдържанието и поведението на файловете |
| Текстови маркери | AKIA_CTX_START; AKIA_CTX_END; send-secrets; Prepare Cache Busting; git log -p --all 2>/dev/null \| head -200000; curl -s -m 20 -X POST --data-binary | Маркери за зловреден код и събиране на данни, идентифицирани в доклада |
Забележка: IP адресите и домейните умишлено са с нарушена цялост (defanged, напр. [.]), за да се предотврати случайно разрешаване или преобразуване в хипервръзки. Възстановявайте ги само в контролирани платформи за анализ на киберзаплахи като MISP, VirusTotal или вашата SIEM система.