هکرها در حمله GhostAction به GitHub موفق به سرقت هزاران Secret شدند
یک حمله جدید Supply Chain در GitHub با نام GhostAction منجر به افشای ۳,۳۲۵ Secret شامل PyPI، npm، DockerHub، GitHub tokens، Cloudflare و AWS keys شده است.
این حمله توسط پژوهشگران GitGuardian شناسایی شد. به گفته آنها، نخستین نشانههای compromise در یکی از پروژههای تحت تأثیر، یعنی FastUUID، در تاریخ ۲ سپتامبر ۲۰۲۵ آشکار شد.
مهاجمان با سوءاستفاده از حسابهای maintainer compromiseشده، اقدام به ثبت commitهایی کردند که یک فایل مخرب GitHub Actions workflow را اضافه میکرد. این فایل بهصورت خودکار روی push یا اجرای دستی فعال میشود و پس از فعالسازی، secrets موجود در محیط GitHub Actions پروژه را خوانده و از طریق یک درخواست curl POST به دامنهای تحت کنترل مهاجمان منتقل میکرد.
در خصوص پروژه FastUUID، GitGuardian گزارش داد که مهاجمان موفق به سرقت PyPI token این پروژه شدند، اما تأکید کرد که پیش از کشف و رفع compromise هیچ نسخه مخربی در شاخص بستههای PyPI منتشر نشده است.
بررسی عمیقتر این حادثه نشان داد که حمله بسیار گستردهتر از آن بوده که تنها به پروژه FastUUID محدود شود.
به گفته پژوهشگران، کمپین GhostAction حداقل در ۸۱۷ مخزن (repository) تعهدات (commit) مشابهی تزریق کرده است که همگی secrets را به یک endpoint واحد به آدرس bold-dhawan[.]45-139-104-115[.]plesk[.]page ارسال میکردند.
مهاجمان با enumeration نامهای secret از workflowهای معتبر و سپس hardcode کردن آنها در workflowهای مخرب خود، توانستند انواع متعددی از secretها را به سرقت ببرند.
به محض کشف دامنه کامل این کمپین توسط GitGuardian در تاریخ ۵ سپتامبر، این شرکت در ۵۷۳ مخزن تحت تأثیر اقدام به باز کردن GitHub issue کرد و تیمهای امنیتی GitHub، npm و PyPI را بهطور مستقیم مطلع ساخت.
حدود ۱۰۰ مخزن GitHub پیشتر compromise را شناسایی کرده و تغییرات مخرب را بازگردانی کرده بودند.
مدتی کوتاه پس از افشای کمپین، exfiltration endpoint از دسترس خارج شد.
پژوهشگران برآورد کردهاند که در جریان کمپین GhostAction حدود ۳,۳۲۵ secret شامل PyPI tokens، npm tokens، DockerHub tokens، GitHub tokens، Cloudflare API tokens، AWS access keys و database credentials به سرقت رفته است.
دستکم ۹ پکیج npm و ۱۵ پکیج PyPI بهطور مستقیم تحت تأثیر این افشاگری قرار گرفتهاند و ممکن است تا زمانی که maintainerهای آنها secretهای افشاشده را باطل نکنند، نسخههای مخرب یا trojanized منتشر کنند.
به گفته GitGuardian:
«این تحلیل نشان داد که tokenهای compromiseشده در میان چندین اکوسیستم پکیج، از جمله Rust crates و npm packages وجود داشته است.»
این شرکت افزود:
«چندین سازمان شناسایی شدند که کل پورتفولیوی SDK آنها compromise شده بود؛ بهطوریکه workflowهای مخرب بهطور همزمان مخازن Python، Rust، JavaScript و Go آنها را تحت تأثیر قرار داده بودند.»
با وجود شباهتهای عملی و فنی با کمپین s1ngularity که در اواخر آگوست رخ داد، GitGuardian اعلام کرده است که ارتباطی میان این دو عملیات نمیبیند.