یک حمله supply chain پیدرپی که با به خطر افتادن GitHub Action به نام reviewdog/action-setup@v1 آغاز شد، تصور میشود که منجر به نقض امنیتی اخیر در tj-actions/changed-files شده باشد، که در نتیجه آن، اطلاعات محرمانه CI/CD فاش شده است.
هفته گذشته، یک حمله supply chain بر روی GitHub Action به نام tj-actions/changed-files باعث شد که کد مخرب، اطلاعات محرمانه CI/CD را در لاگهای گردش کار (workflow logs) مربوط به ۲۳,۰۰۰ مخزن ثبت کند. اگر این لاگها عمومی بودند، مهاجم میتوانست این اطلاعات محرمانه را سرقت کند.
توسعهدهندگان tj-actions نمیتوانند دقیقاً مشخص کنند که مهاجمان چگونه یک GitHub personal access token (PAT) را که توسط یک ربات برای اعمال تغییرات مخرب در کد استفاده شده بود، به خطر انداختهاند.
پژوهشگران Wiz فکر میکنند که علت این رخنه امنیتی حملات supply chain پیدرپی بوده که از یک GitHub Action دیگر به نام ‘reviewdog/action-setup’ شروع شده است.
شرکت امنیت سایبری گزارش میدهد که مهاجمان ابتدا برچسب v1 مربوط به GitHub Action reviewdog/action-setup را به خطر انداختند و کدی مشابه را برای استخراج اطلاعات محرمانه CI/CD و ثبت آنها در فایلهای لاگ تزریق کردند.
از آنجایی که tj-actions/eslint-changed-files از اکشن reviewdog/action-setup استفاده میکند، گمان میرود که اکشن به خطر افتاده برای استخراج و سرقت توکن دسترسی شخصی tj-actions مورد استفاده قرار گرفته است.
Wiz معتقد است که علت اصلی هک شدن توکن دسترسی شخصی (PAT) مربوط به tj-actions-bot، به خطر افتادن reviewdog/action-setup بوده است.
tj-actions/eslint-changed-files از reviewdog/action-setup@v1 استفاده میکند و مخزن tj-actions/changed-files این اکشن tj-actions/eslint-changed-files را با استفاده از یک توکن دسترسی شخصی (PAT) اجرا میکند.
اکشن reviewdog تقریباً در همان بازه زمانی که توکن دسترسی شخصی (PAT) tj-actions به خطر افتاد، دچار نفوذ شد.
مهاجمان یک بارگذاری (payload) کدگذاری شده بهفرمت base64 را در install.sh وارد کردند که باعث افشای اطلاعات محرمانه از گردشکارهای CI متاثر شد.
اطلاعات محرمانهای که افشا میشوند، مشابه آنچه در مورد tj-actions رخ داده، در مخازن عمومی بهعنوان بخشی از لاگهای گردشکار قابل مشاهده خواهند بود.
علاوه بر reviewdog/action-setup@v1 که بهطور قطعی هک شده است، ممکن است اکشنهای دیگری هم تحت تأثیر این حمله قرار گرفته باشند.
“reviewdog/action-shellcheck
reviewdog/action-composite-template
reviewdog/action-staticcheck
reviewdog/action-ast-grep
reviewdog/action-typos”
اینها نامهای مختلف GitHub Action ها هستند که با پیشوند reviewdog/ مشخص شدهاند. هرکدام از این اکشنها احتمالاً عملکرد خاص خود را دارند، مانند بررسی خطاهای کدی (مثل shellcheck یا staticcheck)، بررسی قالبها، یا شناسایی تایپها.
نفوذ امنیتی در Reviewdog به طور تصادفی رفع شده بود، ولی تیم Wiz به GitHub و تیم Reviewdog اطلاع دادند تا از وقوع دوباره این مشکل جلوگیری شود.
اگرچه روش دقیق نفوذ تعیین نشده است، وییز اظهار میکند که Reviewdog یک پایگاه بزرگ از مشارکتکنندگان دارد و اعضای جدید را از طریق دعوتهای خودکار میپذیرد، که به طور طبیعی خطر را افزایش میدهد.
به طور قابل توجهی، اگر این اکشن همچنان به خطر افتاده بود، حمله تکراری به tj-actions/changed-files با نتیجه موفقیتآمیز به طور عملی ممکن بود و احتمالاً اطلاعات محرمانه CI/CD که به تازگی تغییر کرده بودند، افشا میشد.
پیشنهادات
Wiz پیشنهاد میکند که پروژههای احتمالی تحت تأثیر، این جستجوی GitHub را برای بررسی ارجاعات به reviewdog/action-setup@v1 در مخازن اجرا کنند.
اگر در لاگهای گردشکار بارگذاریهای (payloads) که دوبار به فرمت base64 کدگذاری شدهاند پیدا شود، این باید بهعنوان نشانهای از افشای اطلاعات محرمانه در نظر گرفته شود.
توسعهدهندگان باید فوراً ارجاعاتی که به اکشنهای آسیبدیده در تمامی شاخهها اشاره دارند را حذف کرده، لاگهای گردشکار را پاک کنند و هرگونه اطلاعات محرمانهای که ممکن است به خطر افتاده باشد را تغییر دهند.
برای جلوگیری از حملات مشابه در آینده، بهتر است به جای استفاده از برچسبهای نسخه، اکشنهای GitHub را به هشهای کامیت متصل کنید و از ویژگی allow-listing برای محدود کردن اکشنهای غیرمجاز استفاده کنید.
این حملات و افشای اطلاعات محرمانه در سیستمهای CI/CD ممکن است تأثیرات بلندمدتی بر پروژهها داشته باشند، بنابراین باید به سرعت اقدام کرد تا خطرات کاهش یابند.
بهروزرسانی ۱۹/۳: تیم Reviewdog یک مشاوره امنیتی منتشر کرده است که نفوذ را تایید کرده و دستورالعملهایی برای کاربران احتمالی متاثر ارائه داده است.