Авторът на заплахата зад атаката срещу веригата за доставки GhostAction разшири дейността си отвъд внедряването на зловредни работни процеси в GitHub Actions в компрометирани проекти с цел фишинг атаки срещу разработчици на софтуер с отворен код и разпространение на зловреден софтуер за кражба на данни, маскиран във фалшив файл с шрифт.
Последната еволюция, подробно описана от OpenSourceMalware, показва, че атакуващите активно усъвършенстват своя начин на действие в отговор на мерките, предприети от GitHub за блокиране на изпълнението на работния процес.
Според платформата за анализ на киберзаплахи, злонамереният субект е регистрирал домейна „my-github[.]com“ и го е насочил към „193.32.204[.]199“ – същият IP адрес, който се използва като крайна точка за ексфилтриране на данни, събрани от изпълнението на зловредния работен процес.
Домейнът е регистриран на 9 октомври 2026 г., 17 дни след регистрацията на „my-gitlab[.]com“. Не е ясно дали вторият домейн, свързан с хостинг на код, се управлява от същия киберпрестъпник.
„Той следва същия модел на именуване my-<code-host>.com, което го прави удобна отправна точка, но текущата инфраструктура не го свързва директно с GhostAction“, заяви изследователят по сигурността Пол Маккарти. „Те използват различни регистратори, регистрационни данни, двойки неймсървъри на Cloudflare, IP адреси, ASN и DNS конфигурации, като не са открити споделен сертификат или артефакт на профил.“
Оттогава домейнът „my-github[.]com“ е използван във фишинг имейл, имитиращ предупреждение за сигурност от GitHub, насочен срещу разработчик на софтуер с отворен код в същия ден на регистрацията му. Съобщението, изпратено от „noreply@my-github[.]com“, предупреждава за ново влизане в техния акаунт в GitHub от Москва, Русия, и инструктира получателя да последва връзка, за да защити профила си.
Измамната страница, според OpenSourceMalware, е действала като обратен прокси сървър, събирайки паролата на жертвата и кода за двуфакторна автентификация (2FA), и е инжектирала JavaScript, който е оторизирал OAuth приложение с права за модифициране на работните им процеси, улеснявайки атака в стил GhostAction.
Фалшивата страница за вход съдържа и JavaScript за скрито оторизиране на GitHub OAuth device flow с права repo, workflow и read:org, което ѝ предоставя широки разрешения за четене и запис в хранилища, модифициране на конфигурационни файлове на Actions и видимост върху членството и свързаните данни на организацията.
Идеята е същата като при фишинга с кодове за устройства (device code phishing), където крайната цел е извличане на токен за достъп от GitHub и ексфилтрирането му към „my-github[.]com“ през порт TCP/8443.
„Скриптът получава код на устройството и потребителски код, зарежда /login/device, извлича формите на GitHub от върнатия HTML и ги изпраща автоматично“, обяснява Маккарти. „Той вмъква потребителския код, намира формата за оторизация, добавя authorize=1 и публикува одобрението през автентицираната прокси сесия на жертвата.“
„Жертвата не трябва да въвежда кода на устройството или съзнателно да одобрява OAuth приложението. Този инструмент отива по-далеч, като автоматизира стъпките за потребителския код и оторизацията през сесията с обратен прокси сървър.“
Чрез кражбата на OAuth токен с обхват върху хранилищата, атакуващият получава идентификационни данни за многократна употреба през API. Освен това разрешенията, предоставени чрез скритото OAuth оторизиране, съответстват на възможността на GhostAction да изброява хранилища и да инжектира зловредни файлове с работни процеси в „.github/workflows/“.
„Авторът на заплахата вече може да комбинира автоматизация на ниво хранилища с индивидуално социално инженерство срещу хора, чиито профили предоставят достъп до проекти, организации, регистри и потребители по веригата“, заявяват от OpenSourceMalware.
За да се влошат нещата още повече, в кампанията се наблюдава и включването на компонент от втори етап, който остава активен на машините на разработчиците дори след премахването на зловредния работен процес.
По-конкретно, подходът заимства похвати от севернокорейските кибератаки, като качва три различни файла:
- Файл tasks.json за Microsoft Visual Studio Code (VS Code) със задействащ механизъм „runOn: folderOpen“, който го кара да се стартира автоматично при отваряне на папката в приложението.
- Файл „public/fonts/fa-solid-400.woff2“, съдържащ злонамерен код за кражба на данни, проектиран да събира ключове за AWS, токени за PyPI, токени за npm, данни за вход в Git, идентификационни данни за клъстери на Kubernetes, частни SSH ключове и данни за достъп до доставчици на изкуствен интелект като Anthropic Claude и Google Gemini. Името на шрифтовия файл съвпада с използваното в севернокорейската кампания PolinRider от януари 2026 г.
- Втори работен процес на GitHub Actions, който се активира, ако инструментът за кражба на данни не се стартира.
Това кара VS Code автоматично да стартира инструмента за кражба на данни, който освен извличането на информация инсталира и cron задача, изпълняваща предоставен от атакуващия код на всеки пет минути. Събраните данни се изпращат към същия сървър през обикновен HTTP на порт 8080. Идентифицирани са общо 94 компрометирани хранилища с компонента от втория етап.
Що се отнася до втория CI работен процес, той е идентичен с първоначалния злонамерен работен процес, но с добавени формати на идентификационни данни за търсене и резервен механизъм, който качва откритото в таен GitHub gist, ако POST заявката се провали. Вторият работен процес се среща под следните имена:
- lint.yml
- ci-check.yml
- build-check.yml
- repo-health.yml
- audit.yml
- code-review.yml
- test-suite.yml
- cache-cleanup.yml
От OpenSourceMalware съобщават, че 94-те хранилища принадлежат на 66 собственици, от които 15 междувременно са изтрити, преименувани или направени лични. От все още достъпните хранилища повечето изглеждат предимно изоставени, като едно от тях не е обновявано повече от девет години. Шестдесет и пет от общо 79 не са имали промени по кода повече от година.
„Първият етап изисква GitHub да изпълни работния процес“, посочват от OpenSourceMalware. „На 9 октомври GitHub започна да блокира изпълнението на зловредния работен процес, а вълните от 10 и 12 октомври не успяха да извлекат тайни. Вторият етап добавя стартов модул, който изобщо не изисква среда за изпълнение (runner), и се появи шест дни след блокирането. Не можем да твърдим със сигурност, че блокирането е причината за това, но можем да кажем, че извършителят се премести в зона, до която контролните механизми на GitHub нямат достъп.“
За да неутрализират заплахата, разработчиците трябва да оттеглят достъпа и токените за GitHub от чисто устройство, да сменят паролите си, да направят одит на хранилищата си, да сменят всички идентификационни данни, до които работните процеси имат достъп, и да предупредят потребителите, които са клонирали съответните хранилища.
„Не знаем кой стои зад атаката, но работата им загатва за ограничен опит“, заяви Джен Джайл, съосновател на OpenSourceMalware, пред The Hacker News. „Филтърът на крадеца за променливи на средата пропуска повечето API ключове, търсенето в домашната директория може да изтече по време и да отхвърли собствените си резултати, а един-единствен IP адрес обслужва ексфилтрирането, фишинга и шумно сканиране в интернет. Именно последната грешка позволява търсенето на този IP адрес все още да открива инфекции.“