محققان امنیت سایبری Palo Alto Network اخیرا متوجه شدهاند که تعدادی از پروژههای منبع باز اصلی همچون AWS، Microsoft، Google، Red Hat در حال افشای توکنهای احراز هویت GitHub هستند.
این باگ که مربوط به آرتیفکت Actionهای GitHub در workflowهای (گردشهای کاری) CI/CD میباشد، ArtiPACKED نام دارد و میتواند برای تصرف مخازن و دسترسی به محیطهای ابری سازمانها مورد سوء استفاده قرار گیرد.
هکرها در واقع میتوانند با ربودن این توکنها (مانند GITHUB_TOKEN و ACTIONS_RUNTIME_TOKEN) و کد منبع به مخازن خصوصی دست یابند و یا کدهای مخرب را به پروژه تزریق کنند.
ترکیبی از پیکربندیهای پیش فرض و نادرست، بررسیهای امنیتی ناکافی و نقصهای امنیتی میتواند علت این فاجعه (انتشار توکنهای GitHub) باشد.
لازم به ذکر است که توسعه دهندگان GitHub قبلا مسئولیت حفاظت از آرتیفکتها را بر عهده کاربران گذاشتهاند، از این رو هیچ گونه مسئولیتی در قبال مشکل به وجود آمده ندارند.
اولین مشکل، مربوط به action/checkout میباشد که معمولاً در گردش کار GitHub برای کلون کردن کد مخزن استفاده میشود تا در طی کار در دسترس باشد.
این action به طور پیشفرض، توکن GitHub را در دایرکتوری مخفی لوکال git ذخیره میکند که برای انجام احراز هویت ضروری میباشد. چنانچه کاربر به اشتباه کل دایرکتوری checkout را به عنوان بخشی از آرتیفکت دانلود کند، توکن GitHub در پوشه git فاش میشود.
از سوی دیگر ممکن است اطلاعات حساسی همچون کلیدهای API، توکنهای دسترسی سرویسهای ابری و دادههای لاگین حسابهای مختلف در این دایرکتوری وجود داشته باشند.
یکی از خطاهای مشابه کشف شده مربوط به بارگذاری آرتیفکتهایی است که میتوانند به علت آرتیفکتهایی که در طول فرایند CI/CD ایجاد شدهاند، رخ دهند (به عنوان مثال، نتایج ساخت و آزمایش که ذخیره می شوند و تا سه ماه در دسترس قرار دارند).
مسئله بعدی مربوط به pipelineهای CI/CDمیباشد که از متغیرهای محیطی برای ذخیره توکنهای GitHub استفاده میکند. چنانچه actionها و اسکریپتهای درون یک workflow به طور هدفمند یا اشتباه این متغیرها را ثبت کنند، آنگاه لاگها به عنوان آرتیفکت بارگذاری خواهند شد.
اگر CREATE_LOG_FILE بر روی True تنظیم شده باشد، باعث ایجاد اکشن super-linter برای ارائه لاگهای دقیق میشود.
توکنهای گیت هاب (GITHUB_TOKEN) تنها تا پایان کار، معتبر میمانند و پس از آن منقضی میشوند. از این رو، پتانسیل استفاده از آنها بستگی به موارد خاصی دارد.
بهبودهایی که در ویژگی آرتیفکتهای نسخه 4 انجام شده است این امکان را فراهم میآورد تا هکرها بتوانند با دانلود یک آرتیفکت در حین اجرای workflow از سناریوهای race condition برای ربودن و سوء استفاده از توکن بهره برداری کنند.
توکن Actions_Runtime_Token نیز که توسط GitHub برای ذخیره سازی و مدیریت آرتیفکتها مورد استفاده قرار میگیرد، دارای بازه زمانی بهره برداری محدود و کم است و معمولا ظرف شش ساعت منقضی میشود. اما رمز و توکنهای دیگر از جمله کلیدهای API یا توکنهای دسترسی سرویس ابری، میتوانند تاریخ انقضای چند دقیقهای تا بینهایت داشته باشند.
مجموعه دیگری از اسکریپتها به هکرها این امکان را میدهند که به صورت خودکار، آرتیفکتها را از pipelineهای CI/CD مخازن هدف دانلود کنند (که در مورد مخازن عمومی اصلا دشوار نیست) و سپس آنها را به صورت پنهان مورد بررسی قرار دهند.
متخصصان امنیت سایبری Palo Alto Network ، چهارده پروژه بزرگ منبع باز را شناسایی کردهاند که امکان انتشار چنین توکنهایی را فراهم میکردند. کارشناسان این یافتههای خود را به توسعه دهندگان گزارش کردند و آنها نیز این باگ را در موارد زیر برطرف نمودند:
- firebase/firebase-js-sdk (Google)
- microsoft/TypeScript-repos-automation, microsoft/json-schemas, microsoft/typescript-bot-test-triggerer, Azure/draft (Microsoft)
- Ubuntu/adsys (Canonical)
- quay/clair (Red Hat)
- CycloneDX/cdxgen (OWASP)
- opensearch-project/security (AWS)
- penrose/penrose
- Aiven-Open/guardian-for-apache-kafka
- Deckhouse/Deckhouse
- datalad/git-annex
- schemacrawler/SchemaCrawler
- zama-ai/concrete-ml
- official-stockfish/Stockfish
- libevent
کارشناسان در پایان، توصیه کردهاند که کاربران GitHub از گنجاندن کل دایرکتوریها در آرتیفکتهای قابل دانلود خودداری کنند، لاگها را پاک کرده و به طور منظم تنظیمات pipelineهای CI/CD را مورد بررسی قرار دهند. تنظیمات برای actionهای خطرناک باید به گونهای انجام شود که از ذخیره دادههای لاگین جلوگیری به عمل آید.
منابع
مقالات مرتبط:
حذف مخازن GitHub توسط حملات Gitloker
GitLab تحت تأثیر نقص CDN به سبک GitHub قرار گرفت
Stargazers Ghost: شبکهای از اکانتهای GitHub برای ارائه بدافزار
بخش نظرات گیت هاب برای ارسال بدافزار مورد سوء استفاده قرار گرفت
عملیات GitCaught و سوء استفاده مجرمان سایبری از GitHub برای ارائه بدافزار
شناسایی پکیجهای jQuery تروجانیزه شده در مخازن کد npm ،GitHub و jsDelivr