حمله زنجیره تأمین پیدرپی که در ابتدا شرکت Coinbase را هدف قرار داده بود و سپس دامنه آن گسترش یافت تا کاربران اکشن “tj-actions/changed-files” در GitHub را نیز شامل شد، در نهایت به سرقت یک توکن دسترسی شخصی (PAT) مربوط به پروژه SpotBugs بازمیگردد. بر اساس گزارش Endor Labs، حدود 218 مخزن GitHub به دلیل حمله زنجیره تأمین شرکت Coinbase، اسرارشان افشا شده است. بیشتر این اطلاعات شامل چندین اطلاعات کاربری برای DockerHub، npm، Amazon Web Services (AWS) و توکنهای دسترسی نصب GitHub بوده است.
زنجیره حمله
شرکت Palo Alto Networks در گزارشی اعلام کرده است که مهاجمان با سوءاستفاده از روال کاری (workflow) GitHub Actions در پروژه SpotBugs، که یک ابزار متنباز محبوب برای تحلیل باگهای کد است، دسترسی اولیه را بهدست آوردند. این موضوع به مهاجمان اجازه داد تا در بین مخازن مختلف SpotBugs گسترش پیدا کنند تا سرانجام به پروژه reviewdog دسترسی پیدا کنند. شواهد نشان میدهد که فعالیتهای مخرب احتمالاً از اواخر نوامبر ۲۰۲۴ آغاز شدهاند، هرچند حمله یی به Coinbase تا مارس ۲۰۲۵ اتفاق نیفتاده است.
تحقیقات Unit 42 با دانستن این موضوع شروع شد که GitHub action پروژه reviewdog بهدلیل نشت یک PAT متعلق به مدیر پروژه، مورد نفوذ قرار گرفته است. این نشت در نهایت به مهاجمان اجازه داد تا نسخهای دستکاریشده از reviewdog/action-setup را منتشر کنند که سپس توسط tj-actions/changed-files به کار گرفته شد، زیرا این اکشن بهعنوان یک وابستگی از طریق tj-actions/eslint-changed-files فهرست شده بود. آسیبپذیری مربوط به reviewdog/action-setup با شناسه CVE-2025-30154 ردیابی میشود.
در ادامه مشخص شد که مدیر پروژه reviewdog همزمان در پروژه متنباز دیگری بهنام SpotBugs نیز فعالیت داشته است. مهاجمان یک فایل workflow مخرب را با استفاده از نام کاربری موقت jurkaofavakدر مخزن spotbugs/spotbugs ارسال(push) کردند. این اقدام منجر به افشای PAT مدیر پروژه هنگام اجرای آن workflow شد.
ظاهراً همان PAT امکان دسترسی به هر دو مخزن “spotbugs/spotbugs” و “reviewdog/action-setup” را فراهم کرده است. بهعبارت دیگر، توکن افشا شده میتوانست برای آلودهسازی مخزن reviewdog نیز مورد سوءاستفاده قرار گیرد.
مهاجم بهنوعی توانسته است حسابی با سطح دسترسی نوشتن (write) در مخزن spotbugs/spotbugs داشته باشد که با استفاده از آن شاخهای را در مخزن ایجاد(push) کرده و به اسرار CI دسترسی یافته است.
چگونگی بدست آورن دسترسی به spotbugs
در مورد چگونگی بهدست آوردن این سطح دسترسی، مشخص شده که کاربر پشت commit مخرب در SpotBugs با نام jurkaofavak، در تاریخ ۱۱ مارس ۲۰۲۵ از سوی یکی از مدیران پروژه بهعنوان عضو به مخزن دعوت شده است.
بهعبارت دیگر، مهاجمان با استفاده از توکن دسترسی SpotBugs، jurkaofavak را به پروژه دعوت کردهاند. شرکت امنیتی گفته است که این اقدام با ساخت یک fork از مخزن spotbugs/sonar-findbugs و ایجاد یک pull request از طرف کاربری بهنام randolzfow صورت گرفته است.
در تاریخ ۲۸ نوامبر ۲۰۲۴، ساعت ۰۹:۴۵:۱۳ UTC، مدیر پروژه SpotBugs یکی از workflowهای پروژه spotbugs/sonar-findbugs را طوری تغییر داده که از PAT شخصی خودش استفاده کند، چرا که در بخشی از فرایند CI/CD خود با مشکلات فنی مواجه شده بود.

در تاریخ ۶ دسامبر ۲۰۲۴، ساعت ۰۲:۳۹:۰۰ UTC، مهاجم یک pull request مخرب به مخزن spotbugs/sonar-findbugs ارسال کرد که از یک workflow با محرکی(trigger) بهنام pull_request_target سوءاستفاده میکند.
محرک pull_request_target در GitHub Actions باعث میشود workflowهایی که از fork اجرا میشوند، به اسرار پروژه (که در این مورد، منجر به نشت PAT شده) دسترسی پیدا کرده و نوعی حمله بهنام Poisoned Pipeline Execution یا PPE را رقم زده است.
مدیر پروژه SpotBugs تأیید کرده است که توکن استفادهشده در این workflow، همان توکنی است که بعداً برای دعوت کاربر jurkaofavak به مخزن SpotBugs استفاده شد. این مدیر از آن زمان تمام توکنها و PATهای خود را تغییر داده و دسترسی مهاجمان را لغو کرده است.
یکی از نقاط مبهم این حمله، فاصله زمانی سهماهه میان افشای PAT و سوءاستفاده مهاجمان از آن است. گمان میرود که مهاجمان پروژههایی که به tj-actions/changed-files وابسته بودند را زیر نظر داشتهاند و منتظر فرصتی برای حمله به هدفی باارزش مانند Coinbase بودهاند.
توصیه امنیتی
محققان امنیتی توصیه کردهاند که توسعهدهندگان و مدیران مخازن GitHub:
- توکنها و اسرار خود را بازبینی و در صورت لزوم بازنشانی کنند.
- از مکانیزمهای احراز هویت قویتر استفاده کنند.
- دسترسیها و مجوزهای کاربران را محدود به نیازهای ضروری کنند.
- workflowهای GitHub Actions را برای شناسایی فعالیتهای مشکوک نظارت کنند.