Преглед на приватноста

Оваа веб-страница користи колачиња за да ви обезбеди најдобро можно корисничко искуство. Информациите за колачињата се складираат во вашиот прелистувач и извршуваат функции како препознавање кога се враќате на нашата веб-страница и им помагаат на нашите програмери да разберат кои делови од веб-страницата ви се најинтересни и најкорисни.

Строго неопходни колачиња

Строго неопходните колачиња треба да бидат овозможени во секое време за да можеме да ги зачуваме вашите поставки за колачиња.

Напаѓач искористил 4.837 компромитирани GitHub-сметки за да постави алатка за кражба на тајни податоци во повеќе од 1.806 складишта

Почнувајќи од вторникот, напаѓач искористил украдени пристапни податоци за 4.837 GitHub-сметки за да постави алатка за кражба на чувствителни податоци (secret stealer) во складишта (repositories) во кои тие сметки имале дозвола за запишување, соопшти Aikido Security, компанија за безбедносен софтвер.

Алатката за кражба е дизајнирана да ги презема тајните податоци и пристапните податоци за cloud-сервиси до кои имаат пристап CI-работните текови (workflows) на складиштето. Според компанијата, таа била активирана во најмалку 1.806 складишта, од каде што напаѓачот најверојатно ги собрал овие податоци.

Секој напад започнувал со pull request со наслов docs: dependency audit notes, испратен од гранка (branch) со име wfx-docs, со цел да се провери дали компромитираната сметка има дозвола за запишување во складиштето. Овие тестни pull request-барања биле испратени до 61.764 складишта, а во дел од нив потоа била поставена и алатката за кражба.

Во посебна анализа, истражувачите на SafeDep, компанија која нуди алатки за безбедност на синџирот на снабдување со софтвер, избројале 8.093 складишта во кои биле внесени малициозни commit-записи во периодот од 12:46 UTC во вторникот до 04:36 UTC денеска. Овој број ги опфаќа сите складишта во кои биле внесени малициозни commit-записи, а не само оние во кои била активирана алатката за кражба. Истражувањето ги опфатило само стандардните гранки на јавните складишта, па реалниот број е поголем, велат истражувачите.

Во 7.309 од овие складишта, алатката била додадена во постоечки workflow. Во други 771 складиште била поставена како npm postinstall-hook, кој се извршува и на компјутерот на развивачот при инсталирање пакети со командата npm install.

По поставувањето на алатката за кражба, напаѓачот вообичаено ја враќал промената во рок од неколку минути. Во случаите кога алатката била активирана, нејзините логови биле избришани, најчесто заедно со самото извршување. Во тие складишта, сите тајни податоци и cloud-привилегии достапни за workflow-процесите треба да се сметаат за компромитирани.

Проверка на The Hacker News открила дека и рано денеска биле испратени дополнителни pull request-барања со истиот наслов, откако пребарувањето на GitHub на самата компанија завршило во средата. Три проверени барања, испратени во периодот од 05:04 до 05:38 UTC, потекнувале од гранки со име wfx-docs. Не е познато дали по нив била поставена и алатката за кражба.

Секоја сметка од која било испратено едно од тестните pull request-барања на напаѓачот е компромитирана, дури и ако алатката за кражба никогаш не била активирана, предупреди Aikido во својата техничка анализа. Во анализата не е објаснето како напаѓачот дошол до пристапните податоци.

Истражувачите на SafeDep им препорачуваат на сопствениците на засегнатите складишта да ги отповикаат токените на авторот на малициозните commit-записи, дозволите доделени на OAuth-апликациите, SSH-клучевите и активните сесии, како и да активираат двофакторска автентикација (2FA).

Сопствениците треба да ги сменат и сите тајни податоци и променливи до кои складиштето има пристап. Секој што ја извршил командата npm install врз commit-запис од засегнато складиште треба да го смета тој компјутер за компромитиран и да ги смени своите клучеви.

Во повеќето други складишта во кои биле испратени тестните барања, потоа не биле внесени дополнителни промени или алатката за кражба не била активирана поради поставките на складиштето или ограничените дозволи на сметката. Наведените бројки ги опфаќаат само јавните складишта до кои компанијата имала пристап.

Тестните барања стигнале и до складишта кои не биле во сопственост на компромитираните сметки. Од вкупниот број тестни pull request-барања, 10.431 биле испратени преку пристап на соработник или организација, а 92% од нив сè уште биле отворени во моментот на проверката на компанијата.

Знаци дека складиштето било компромитирано

Проверете дали во кое било складиште во кое имате дозвола за запишување, почнувајќи од вторникот, се појавуваат следниве знаци:

  • Гранка: wfx-docs
  • Гранка: chore/[a-z0-9]{8} – краткотрајна гранка.
  • Гранка: ci-check-[0-9]{4}
  • Наслов на pull request: docs: dependency audit notes
  • Commit-порака: ci: refresh build cache – додава околу 1.500 линии во постоечки workflow.
  • Commit-порака: chore: add ci helper – додава .ci-xxxxxx.sh скрипта и postinstall-hook во package.json, кој ја извршува скриптата при секое инсталирање преку npm.
  • Commit-порака: chore: add dependency audit workflow – додава .github/workflows/build-audit-xxxxxx.yml во гранка chore/.
  • Commit-порака: chore: initial commit – се внесува пред додавање нова workflow-датотека во празно складиште.
  • Commit-порака: ci: restore
  • Commit-порака: ci: cleanup
  • SHA-256 (скрипта за кражба): 89695abb392d5cfd4972672961e644bb46baa98aa1ed7173c2a2816c762735cf
  • IP-адреса: 194.150.166[.]244:8080/exfil
  • IP-адреса: 18.143.168[.]96:8080/exfil
  • IP-адреса: 153.75.82[.]159:8080

Складиштето може да не содржи никакви артефакти со назив wfx-loot, записи wfx-cache или резимеа на чекорите WFX-BEGIN, а сепак да има изгубено податоци. Отсуството на број за извршување (run number) кај commit-записот на напаѓачот е посигурен показател дека алатката за кражба била активирана.

Според истражувачите на SafeDep, алатката ги испраќа украдените податоци преку HTTP POST-запроси до наведените адреси или до Telegram-разговор. Во примерок од 200 commit-записи со малициозен payload, приближно една петтина користеле исклучиво Telegram за испраќање на податоците.

Според компанијата, алатката за кражба е дизајнирана да собира пристапни податоци од сите достапни извори на runner-системот. Меѓу нив се GitHub Actions тајните податоци и променливи, GITHUB_TOKEN на workflow-процесот, OIDC и Actions runtime-токените, клучевите за AI-сервиси, како и чувствителните податоци што се наоѓаат во меморијата на самите процеси на runner-системот.

Таа, исто така, ги пребарува датотеките со пристапни податоци за AWS, Azure, GCP, Kubernetes, npm, PyPI, SSH и други алатки, користејќи ги нивните стандардни локации.

Алатката за кражба, исто така, ја копира содржината на складиштето, неговите последни 100 commit-записи и неодамнешните артефакти од workflow-процесите. Кај runner-системите што се хостирани локално (self-hosted runners), таа ги презема cloud-пристапните податоци од метаподатоците на инстанцата (instance metadata), како и информациите од состојбата на Docker-контејнерите и systemd-единиците.

Алатката има и поставки за работа со приватни складишта, што, според компанијата, укажува дека можеби се извршува и во нив.

Алатката за кражба е дизајнирана да ги користи украдените пристапни податоци за подлабок пристап до cloud-сметките. Таа ги разменува GitHub OIDC-токените за сесии на AWS, GCP и Azure, а кај AWS може да креира долгорочни пристапни клучеви за IAM-корисници.

Дел од нејзините активности се осмислени за да овозможат опстанување и по промена на пристапните податоци. Така, таа може да ја измени trust-политиката на AWS-улога и да овозможи пристап до улогата од која било AWS-сметка.

Исто така, може да додаде федеративни акредитиви за идентитет со префиксот wfx-ci- во Azure AD-апликациите. На тој начин, workflow-процесите во компромитираното складиште можат да се автентицираат во Azure без зачуван таен податок, дури и откако сите токени ќе бидат заменети.

За откривање на овие задни врати (backdoors), истражувачите препорачуваат проверка на следново:

  • Entra ID: федеративни акредитиви со имиња wfx-ci-* кои не сте ги креирале.
  • AWS CloudTrail: сесии AssumeRoleWithWebIdentity или AssumeRole со имиња wfx-*, проследени со настани CreateAccessKey или UpdateAssumeRolePolicy.
  • GCP: повици GenerateAccessToken и SignJwt од вашиот GitHub workload identity pool.
  • Vault: JWT-најави од GitHub OIDC-издавачот.

Преку автоматизираните механизми за објавување пакети, алатката за кражба стигнала најмалку до еден Packagist-пакет и еден Go-модул. Најмалку 50 од компромитираните корисници, според достапните информации, објавуваат пакети за npm, Go, Packagist, PyPI или crates.

Според компанијата, напаѓачот најверојатно е насочен кон кражба на чувствителни податоци од CI-процесите, наместо да се обидува да шири малициозен софтвер преку софтверски пакети.

Верзијата 3.14.3 на Packagist-пакетот digitalelvis/neuronai-studio е малициозна, а компанијата препорачува секој компјутер на кој пакетот бил инсталиран или отворен да се смета за компромитиран.

На страницата на пакетот е наведено дека оваа верзија била објавена во средата. Рано денеска, верзијата сè уште била достапна на страницата, но со предупредување дека верзиите на пакетот биле означени како малициозен софтвер.

Вообичаеното извршување на командата composer install не ја активира алатката за кражба. Меѓутоа, истражувачите откриле дека извршувањето на npm install во директориумот vendor на пакетот ја активира. На корисниците им се препорачува да ја блокираат верзијата 3.14.3 и да користат верзија 3.14.2 или постара.

Две верзии на Go-модулот github.com/onuragtas/docker-env, v1.0.278 и v1.0.280, ја содржат алатката за кражба единствено во датотека за GitHub Actions workflow. Go-кодот и бинарните датотеки за изданијата не се изменети, а Go-компајлирањето никогаш не ги извршува workflow-датотеките, па корисниците на модулот можеби не биле засегнати. Сепак, компанијата препорачува отстранување на овие верзии.

Истражувачите ја откриле алатката за кражба и во друг Go-модул, github.com/vkuznet/gocurl, во pseudo-верзијата v0.0.0-20261111095532-8d5aad0cb0da, каде што била сместена во workflow кој никогаш не бил активиран. На корисниците им се препорачува да ја блокираат оваа pseudo-верзија.

Алатката за кражба стигнала и до 28 WebdriverIO-складишта преку commit-записи потпишани од бот-сметката wdio-bot. Ниту едно објавување на пакет не било засегнато, но токенот на бот-сметката треба да се смета за украден.

Компанијата утврдила дека сметките користени во текот на оваа недела се преклопуваат со оние што биле погодени во октомврискиот бран на нападот GhostAction, кога украдени GitHub-сметки биле искористени за внесување workflow-процеси за кражба на чувствителни податоци во складишта.

Сметките компромитирани во октомври имале околу 1.000 пати поголема веројатност повторно да бидат искористени во текот на оваа недела, во споредба со другите активни сметки. Во повеќе од 100 складишта, новата алатка за кражба била додадена во октомвриските workflow-датотеки, при што постариот чекор за испраќање податоци кон надвор бил оставен активен.

Од Aikido соопштија: „Во оваа фаза не го припишуваме ноемврискиот напад на истиот напаѓач“, бидејќи инфраструктурата, алатките и методите се разликуваат, а украдените пристапни податоци често завршуваат кај повеќе различни напаѓачи.

Исправка (12 ноември 2026): Во претходната верзија на овој напис беше наведено дека алатката за кражба испраќала податоци исклучиво преку HTTP POST до две адреси и дека напаѓачот ја враќал секоја промена во рок од една минута. Втората анализа откри уште еден сервер, Telegram-канал и промени кои останувале присутни подолго време.

Извори:

  • The Hacker News – Attacker Used 4,837 Hijacked GitHub Accounts to Run a CI Secret Stealer in 1,806+ Repositories The Hacker News