حمله زنجیره تأمین GhostAction با سوءاستفاده از دو حساب نگهدارنده، بیش از ۳۴۰ مخزن گیتهاب را آلوده کرد

موج تازهای از حمله زنجیره تأمین موسوم به GhostAction در تاریخ ۸ اکتبر ۲۰۲۶ دو حساب شناختهشده از نگهدارندگان پروژههای متنباز را هک کرد و با استفاده از دسترسی push آنها، در عرض چند دقیقه یک workflow سارق اطلاعات محرمانه را در بیش از ۳۴۰ مخزن گیتهاب جایگذاری کرد؛ این موضوع را شرکت تحقیقاتی StepSecurity منتشر کرده است.
حساب اول متعلق به توسعهدهنده موتور بازیسازی pyxel بود، پروژهای با حدود ۱۸٬۴۰۰ ستاره در گیتهاب. این حساب بین ساعت ۱۳:۲۰ تا ۱۳:۴۴ به وقت UTC برای ارسال workflow مخرب به ۲۷ مخزن استفاده شد. هشت ساعت بعد، حساب هکشده دوم که متعلق به نویسنده اصلی کتابخانه متنباز athenadriver شرکت Uber بود، همان workflow را در یک بازه ۱۶ دقیقهای به ۳۱۸ مخزن از جمله ۳۹ پروژه اصلی و ۲۷۹ fork ارسال کرد. این دسترسی حتی به سازمان گیتهاب خود Uber هم رسید، پیش از آنکه این شرکت بتواند مداخله کند.
گردشکارهای GitHub Actions به هدف محبوب مهاجمان زنجیره تأمین تبدیل شدهاند، زیرا هک شدن یک حساب نگهدارنده بهتنهایی کافی است تا اتوماسیون مخربی بهصورت بیسروصدا در تمام مخازنی که آن حساب دسترسی نوشتن دارد تزریق شود؛ این اتوماسیون سپس با همان اعتماد و اعتبارنامههایی که از پیش برای پروژه تنظیم شده، اجرا میشود. کمپین اصلی GhostAction که در سپتامبر ۲۰۲۵ شناسایی شد، بیش از ۳٬۳۰۰ اطلاعات محرمانه را از ۸۱۷ مخزن متعلق به ۳۲۷ توسعهدهنده سرقت کرده بود. این موج دوم همان الگو را در مقیاسی بزرگتر و علیه اهدافی شناختهشدهتر بازتولید کرده است.
فایلهای تزریقشده با نام security-audit.yml و نسخه قدیمیتری با نام github_actions_security.yml، خود را به شکل وظایف معمول اسکن امنیتی پنهان کرده بودند. پس از اجرا، این فایلها هم در working tree و هم در کل تاریخچه git، از جمله فایلهای حذفشده، به دنبال ۱۳ دسته از اطلاعات محرمانه میگشتند: کلیدهای دسترسی AWS و توکنهای session، کلیدهای API شرکتهای Anthropic، OpenAI و OpenRouter، توکنهای GitHub و GitLab، کلیدهای Google و Firebase، توکنهای بات Slack، و اطلاعات محرمانه SendGrid. این فایلها همچنین اطلاعات محرمانه مشخصی را که از پیش در workflow هر مخزن تنظیم شده بود، مانند توکنهای انتشار PyPI و Cargo، جمعآوری میکردند. تمام این اطلاعات بهصورت متن ساده (cleartext) به یک سرور فرمانوکنترل با آدرس IP ثابت ارسال میشد.
تا تاریخ ۹ اکتبر، StepSecurity ۳۷۸ مخزن را یافت که همچنان workflow مخرب روی شاخه پیشفرض آنها فعال بود، و شواهدی قطعی وجود داشت که اطلاعات محرمانه مشخصی حداقل از ۸۸ مورد از آنها سرقت شده است. تا زمان انتشار این تحقیق، هیچ نسخه بسته مخربی که مرتبط با توکنهای انتشار سرقتشده باشد منتشر نشده بود، اما این شرکت هشدار داد که هر مخزنی که یک اجرای کامل از این workflow را نشان دهد باید بهعنوان یک نفوذ تأییدشده در نظر گرفته شود.
این حادثه یادآوری میکند که اعتماد در دنیای متنباز نه از طریق سازمانها، بلکه از طریق حسابهای فردی نگهدارندگان جریان مییابد: مخزن خود Uber نه به این دلیل که این شرکت مستقیماً هدف قرار گرفته بود، بلکه به این دلیل آسیب دید که اعتبارنامههای هکشده یک مشارکتکننده خارجی به آن رسیده بود. StepSecurity از نگهدارندگان پروژههای آسیبدیده خواسته است تمام اطلاعات محرمانهای را که تا به حال در هر شاخهای commit شده بازنشانی کنند، زیرا مرحله جستوجوی تاریخچه در این حمله حتی اطلاعات محرمانهای را که مدتها پیش حذف شدهاند نیز میخواند؛ همچنین نشستهای هکشده را باطل کنند، workflow مخرب را از تمام شاخهها و forkها حذف کنند، و برای هرگونه تغییر در پوشه .github/workflows مخزن، بررسی pull request را الزامی کنند.
در ابتدا توسط StepSecurity گزارش شده است. برای جزئیات بیشتر مقالهٔ اصلی را بخوانید.
مشاهدهٔ منبع اصلی