Кампанията Megalodon: Мащабна атака в GitHub инфектира над 5500 хранилища с цел кражба на поверителни данни

Публикувано от Svetni.me Editorial на 25 май 2026 г.

Според репортаж на Mashable [1], мащабна кампания за компрометиране на веригата за доставки на софтуер, наречена Megalodon, е засегнала над 5500 проекта с отворен код в рамките на платформи като GitHub. На 18 май 2026 г., в рамките на шестчасов времеви прозорец, автоматизирана кампания е инжектирала 5718 злонамерени коммита в общо 5561 хранилища [1, 2].

Атаката е осъществена чрез манипулиране на конфигурационните файлове на работните потоци в GitHub Actions. Тя е насочена към извличане на критични конфигурационни данни, пароли, частни SSH ключове, идентификационни данни за достъп до облачни доставчици и OIDC токени, предавани обратно към отдалечен команден сървър (C2). Кампанията подчертава значителните рискове за средите за изграждане и тестване в отворения код при липса на адекватни политики за защита [1, 3].

Механизъм на атаката: Direct Poisoned Pipeline Execution (d-PPE)

Изследователите в сферата на киберсигурността от StepSecurity и SafeDep описват кампанията Megalodon как класически пример за директно отравяне на изпълнението на конвейера (direct Poisoned Pipeline Execution - d-PPE). Това е специфичен вид атака срещу CI/CD инфраструктурата, при която нападател с права за писане в хранилището внася зловреден код непосредствено в конфигурационните файлове на работните потоци (workflow YAML файлове). При следващото изпълнение на конвейера, автоматизираната система стартира контролираните от нападателя команди [1, 2, 3].

Тази техника се класифицира под код MITRE ATT&CK T1195.002 (Компрометиране на софтуерната верига за доставки) и е документирана от CISA като ключов риск в CI/CD сигурността. За разлика от индиректното отравяне (i-PPE), което изисква изпращане на pull request от публично разклонение (fork), d-PPE атакува по директен път чрез запис в основния клон, заобикаляйки всякакви одобрения за сливане на код. Процесът се улеснява от факта, че [3]:

  • YAML конфигурациите за работните процеси често се преглеждат с по-ниско ниво на строгост в сравнение с приложния код.
  • Посланията при коммитиране на код имитират автоматизирани съобщения от ботове и лесно се сливат с ежедневния трафик в натоварени хранилища.
  • Изпълнителите на работни процеси (runners) по подразбиране разполагат с неограничен изходящ достъп до интернет, което улеснява връзката с външни адреси.

Схема на d-PPE атаката Megalodon
Изображение: Svetni.me / Авторско изображение

Обфускация и прикриване на кампанията

Нападателите зад Megalodon са приложили редица техники за избягване на детекция и маскиране на своята активност в рамките на компрометираните системи [1, 2, 3]:

  1. Фалшифициране на бот идентичности: Коммитите са изпратени чрез използване на временни акаунти и фалшиви идентичности на автоматизирани ботове за разработка. Сред използваните имена са build-bot, auto-ci, ci-bot и pipeline-bot с асоциирани имейли като build-system@noreply.dev, build-bot@github-ci.com, ci-bot@automated.dev и ci-pipeline@actions-bot.com.
  2. Маскирани съобщения при коммит: Използвани са подвеждащие съобщения, съвпадащи с рутинни оптимизации на CI конфигурацията, като например: "chore: optimize pipeline runtime", "ci: update build config", "fix: correct build workflow", "build: improve ci performance", "chore: sync ci configuration" и "ci: add build optimization step".
  3. Base64 кодиране: Зловредните bash скриптове са внедрени в YAML файловете под формата на base64-кодирани низове. Това предотвратява статичното разпознаване на ключови думи и команди от базови скенери за код.
  4. Използване на порт 8443: Данните се ексфилтрират чрез HTTPS протокол към порт 8443, което често се пропуска от филтрите за трафик, следящи единствено стандартните портове 80 и 443.
  5. Ефимерна среда: Тъй като CI изпълнителите работят във временни виртуални контейнери, които се изтриват веднага след приключване на задачата, нападателите оставят минимални форензични доказателства по хост машините.

Възможности на зловредния софтуер и извличане на чувствителни данни

След като се декодира и изпълни в CI контейнера, bash скриптът на Megalodon стартира процес по мащабно събиране и компресиране на чувствителни данни [3]. Програмата е проектирана да търси и извлича следните категории информация:

  • Променливи на средата: Пълен експорт на променливите на CI средата, както и съдържанието на /proc/*/environ за всички работещи процеси, включително тези на системния процес с PID 1.
  • Облачни идентификатори: Потребителски сесии, AWS достъпни ключове и токени, GCP OAuth токени и Azure IMDS метаданни и роли.
  • Идентификационни данни и ключове: Частни SSH ключове в директорията ~/.ssh/, Docker конфигурационни файлове за достъп до регистри (~/.docker/config.json), токени от .npmrc файлове за оторизация пред npm хранилища, конфигурации за достъп до Kubernetes (~/.kube/config), HashiCorp Vault токени и Terraform данни.
  • OIDC токени: GitHub Actions OpenID Connect (OIDC) токени, генерирани чрез привилегията id-token: write, които се използват за безпаролна автентикация пред доставчици в облака.
  • Поверителни данни и ключове в кода: Локално претърсване (grep) на цялата директория на проекта за над 30 паттерна, съвпадащи с API ключове, пароли, връзки към бази данни, JWT токени и PEM сертификати.

Всички събрани данни се архивират с gzip и се изпращат с HTTPS POST заявка към командния сървър с IP адрес 216.126.225.129:8443 под формата на бинарен поток [1, 2, 3]. Процесът приключва без грешки в конзолата на CI изпълнителя, оставяйки потребителя в заблуждение, че стъпката е преминала успешно.

Засегнати организации и софтуерни пакети

Инжектираните работни потоци са разпределени в две основни версии на базата на името на задачата им – SysDiag (масова кампания, задействаща се при всяко изпращане на код или pull request) и Optimize-Build (насочена и по-ограничена атака) [2, 3].

Кампанията е успяла да засегне редица известни отворени проекти. Сред най-значимите потвърдени жертви са [2, 3]:

  • Tiledesk (компрометирани 9 хранилища, включително основния им сървър tiledesk/tiledesk-server и административния панел tiledesk/tiledesk-dashboard). Атаката е довела до заразяване на официалния софтуерен пакет @tiledesk/tiledesk-server в npm регистъра в диапазона от версии 2.18.6 до 2.18.12, пренасяйки заплахата към крайните потребители.
  • Black-Iron-Project (компрометирани 8 хранилища, ударени от таргетирания вариант Optimize-Build).
  • WISE-Community – образователна технологична общност с отворен код.

Препоръки за защита и митигиране

Специалистите по сигурност от SafeDep и StepSecurity съветват разработчиците, чиито проекти са били засегнати от Megalodon, да предприемат спешни мерки за ограничаване на щетите [1, 3]:

  1. Възстановяване на хранилищата: Проектите трябва да се върнат към състоянието си преди коммитите от 18 май 2026 г. и да се изтрият всички инжектирани YAML файлове.
  2. Одит на конвейерите: Необходим е подробен одит на конфигурационните файлове в директорията .github/workflows/.
  3. Въвеждане на защита на клоновете: Активиране на политики за задължително ревю на код преди сливане в главния клон. Това структурно ограничение превръща d-PPE възможностите в далеч по-трудния за изпълнение сценарий i-PPE, изискващ одобрение от поддържащ член на проекта.
  4. Контрол над мрежата и достъпа: Ограничаване на правата за писане на OIDC токени (id-token) единствено до задачите, които изискват подобна оторизация, и внедряване на инструменти за филтриране на изходящия мрежов трафик на CI изпълнителите.

На 20 май 2026 г. GitHub публикува информация относно неоторизиран достъп до собствени вътрешни хранилища чрез компрометирано устройство на служител, но към момента компанията не е направила официално изявление относно кампанията Megalodon [1].

Източници:

[1]: Megalodon cyberattack infects 5,500 GitHub repositories, report says - Mashable
[2]: Megalodon: Mass GitHub Repo Backdooring via CI Workflows - SafeDep
[3]: Megalodon: Mass GitHub Actions Secret Exfiltration Across 5,500+ Public Repositories - StepSecurity