Нова кампания GhostAction е компрометирала 346 GitHub репозитория, след като атакуващи са използвали два отвлечени акаунта на поддържащи ги потребители (maintainers), за да добавят фалшив работен процес (workflow) за „одит на сигурността“, предназначен да краде CI/CD тайни, облачни ключове, API токени и идентификационни данни, съхранявани в историята на изходния код.
Фирмата за сигурност Socket съобщи, че активността от 8 октомври е засегнала репозитория, свързани с GitHub акаунтите henrywoo и kitao. Сред целите са репозиторият uber/athenadriver на Uber и популярният проект kitao/pyxel, който има над 18 000 звезди в GitHub.
Зловредният файл .github/workflows/security-audit.yml е бил добавен чрез комити с имена „Add security audit workflow“ и „Update security audit workflow“.
Кампанията показва как откраднат акаунт на поддържащ GitHub проект може да изложи на риск много повече от едно лично репозиторий. След като атакуващите получат достъп за запис, те могат да добавят GitHub Actions workflow към всяко репозиторий, което акаунтът има права да променя.
GhostAction Attack
След това работният процес се изпълнява автоматично, когато разработчиците изпращат код (push), поставяйки чувствителните CI/CD данни за достъп в обсега на атакуващия. Според разследването на Socket относно GhostAction, злонамереният работен процес изпраща откраднатите данни чрез HTTP POST заявка към 193.32.204[.]199.
Той събира GitHub Actions тайни, реферирани от съществуващите работни процеси на проекта, включително PyPI пароли, crates.io токени, лични токени за достъп до GitHub и данни за публикуване на пакети.

По-новата версия на GhostAction също така търси твърдо кодирани (hardcoded) тайни в активните файлове на репозиторието и в пълната Git история. Това е съществена промяна, тъй като разработчиците могат да премахнат даден ключ от текущия файл, но да го оставят открит в по-стари комити, клонове (branches) или тагове. Работният процес използва fetch-depth: 0, което изтегля пълната история на репозиторието преди извършване на търсенето в нея.
Изследователите са установили, за зловредният код търси AWS access key ID, AWS тайни ключове, временни токени за сесия, токени за достъп до GitHub и GitLab, Google API ключове, Slack токени, SendGrid данни за достъп и API ключове за OpenAI, Anthropic и OpenRouter.
Той също така прихваща заобикалящите ги редове около AWS key ID, което може да помогне на атакуващите да локализират съответстващия таен ключ, необходим за използване на AWS акаунт.
Активността изглежда силно автоматизирана. Socket наблюдава 318 засегнати репозитория под пространството от имена henrywoo, включително 279 разклонения (forks), както и 27 репозитория под kitao и athenadriver на Uber.
Комитите са били изпратени за кратки времеви прозорци, включително в неактивни репозитория, в които не е имало промени от години. Този модел подсказва, че извършителят е използвал автоматизирано откриване на репозитория, вместо да избира проекти един по един.

Инцидентът следва по-ранни операции GhostAction, документирани от GitGuardian. През септември 2025 г. GitGuardian установи, че кампанията е компрометирала 817 репозитория и е откраднала най-малко 3 325 тайни.
По-късна вълна, продължила от края на август до септември 2026 г., засяга още 772 публични репозитория и е насочена към 2 577 тайни.
По-старият зловреден код е бил фокусиран върху GitHub Actions тайни, докато тази най-нова версия търси и идентификационни данни, вградени в изходния код и историята на комитите.
Въздействието може да надхвърли пределите на засегнатите репозитория. Откраднати credentials за PyPI, npm, Docker Hub или crates.io могат да позволят на атакуващ да публикува компрометирано обновяване на пакет от доверен проект.
Този риск е особено сериозен за популярните библиотеки с отворен код, тъй като злонамерен релийз може да достигне до разработчиците надолу по веригата и до производствени системи (production systems).
Cyber Security News по-рано отрази как компрометиран GitHub Action извлича credentials от работни процеси, показвайки, че CI/CD средите остават ценна цел за операторите на атаки срещу веригата за доставки (supply chain).
Към 9 октомври от Socket заявяват, че не са идентифицирали злонамерени пакети, публикувани в PyPI или crates.io от тази последна активност. Въпреки това, поддържащите проекти трябва да третират всяко успешно изпълнение на работния процес като потенциално изтичане на идентификационни данни. Самото премахване на работния процес не е достатъчно.
Засегнатите екипи трябва да отменят GitHub сесии, лични токени за достъп, OAuth права, SSH ключове и всички тайни, посочени в злонамерения работен процес. Те трябва също да сканират цялата Git история, да прегледат записите за изпълнение на GitHub Actions, да инспектират историята на публикуване на пакети и да търсят в мрежовите логове за трафик към 193.32.204[.]199.
GitHub сканирането за тайни със защита при изпращане (push protection), строгите правила за клонове при промени в .github/workflows/ и разрешенията с най-малко привилегии могат да намалят бъдещия риск.
Индикатори за компрометиране
| IOC тип | Индикатор | Описание |
|---|---|---|
| Път до файла на работния процес | .github/workflows/security-audit.yml | Път до злонамерен файл на работния процес |
| Път до файла на работния процес | .github/workflows/github_actions_security.yml | Алтернативен път до злонамерен файл на работния процес |
| Съобщение при комит | Add security audit workflow | Съобщение при комит, свързано с инжектиране на работния процес |
| Съобщение при комит | Update security audit workflow | Съобщение при комит, свързано с инжектиране на работния процес |
| Съобщение при комит | Add Github Actions Security workflow | Алтернативно съобщение при комит, свързано с инжектиране на работния процес |
| Маркер в тялото на заявката | REPO= | Идентификационен маркер за репозиторий в тялото на изходящата заявка |
| Маркер в тялото на заявката | AKIA_CTX_START | Начален маркер за събран контекст на AWS идентификационни данни |
| Маркер в тялото на заявката | AKIA_CTX_END | Краен маркер за събран контекст на AWS идентификационни данни |
| C2 IP адрес | 193.32.204[.]199 | Дестинация, използвана за получаване на откраднати данни за достъп |