اکوسیستم متنباز بار دیگر با یک رخداد مهم در حوزه امنیت زنجیره تأمین نرمافزار مواجه شده است. در حمله زنجیره تأمین Laravel Lang، مهاجمان با سوءاستفاده از تگهای Git در GitHub، مسیر انتشار نسخههای این پروژه را به کامیتهای مخرب تحت کنترل خود هدایت کردند و در نتیجه، کد مخرب در قالب نسخههای ظاهراً معتبر از طریق Composer در اختیار توسعهدهندگان قرار گرفت. بررسیهای شرکتهای امنیتی StepSecurity، Aikido Security و Socket نشان میدهد حمله زنجیره تأمین Laravel Lang بدون دستکاری مستقیم سورسکد انجام شده و مهاجمان با سوءاستفاده از سازوکار انتشار نسخهها، اعتبارنامههای ابری، کلیدهای دسترسی و سایر اطلاعات حساس را هدف قرار دادهاند.
به گفته محققان، مهاجمان بهجای انتشار نسخههای جدید و مخرب، تگهای GitHub را در چندین مخزن متعلق به Laravel Lang بازنویسی کردهاند؛ روشی که باعث شد نسخههای آلوده در قالب نسخههای رسمی پروژه در اختیار کاربران قرار گیرند.
جزئیات حمله زنجیره تأمین Laravel Lang
بررسیهای محققان نشان میدهد پکیجهای زیر در این رخداد امنیتی تحت تأثیر قرار گرفتهاند:
- laravel-lang/lang
- laravel-lang/http-statuses
- laravel-lang/attributes
- laravel-lang/actions (با احتمال آلودگی)
این پکیجها، ابزارهای بومیسازی شخص ثالث (Third-Party Localization Packages) برای فریمورک Laravel هستند. اگرچه این پکیجها بهطور گسترده در پروژههای مبتنی بر Laravel مورد استفاده قرار میگیرند، اما بخشی از پروژه رسمی Laravel محسوب نمیشوند.
طبق گزارش Aikido، مهاجمان موفق به آلودهسازی 233 نسخه در سه مخزن شدهاند. در مقابل، Socket اعلام کرده است که احتمالاً نزدیک به 700 نسخه منتشرشده در بازههای قبلی نیز تحت تأثیر این رخداد قرار گرفتهاند.
نکته قابل توجه در حمله زنجیره تأمین Laravel Lang این است که مهاجمان هیچ تغییری در سورسکد اصلی پروژه ایجاد نکردهاند. در عوض، آنها از قابلیتی در GitHub سوءاستفاده کردهاند که امکان ارجاع تگهای Git به کامیتهای موجود در فورکهای یک مخزن کد را فراهم میکند. به این ترتیب، نسخههای آلوده بدون نیاز به دستکاری مستقیم کد اصلی پروژه برای کاربران منتشر شدهاند.
به گفته StepSecurity، مهاجمان بهجای انتشار یک نسخه مخرب جدید، تمامی تگهای Git موجود در مخازن کد را بازنویسی کردهاند و آنها را به کامیتهای مخرب تحت کنترل خود ارجاع دادهاند.
نحوه انتشار نسخههای آلوده
بررسیهای محققان نشان میدهد فرآیند بازنویسی تگهای Git از ساعت 22:32 به وقت UTC و از مخزن laravel-lang/lang آغاز شد و تا ساعت 00:00 بامداد با بازنویسی تگهای مخزن laravel-lang/actions ادامه پیدا کرد.
محققان چندین نشانه مشترک را در تمامی مخازن کد آلوده شناسایی کردهاند:
- استفاده از یک هویت جعلی
- فایلهای دستکاریشده مشابه
- الگوی عملکرد مشابه کد مخرب(payload)
- الگوی مشابه در بازنویسی تگهای Git
به اعتقاد محققان، این شواهد نشان میدهد عملیات احتمالاً توسط یک عامل تهدید و با استفاده از یک اعتبارنامه افشا شده دارای دسترسی Push در سطح سازمان انجام شده است.
در حمله زنجیره تأمین Laravel Lang، مهاجمان بهجای انتشار نسخههای جدید، مقصد تگهای Git را تغییر دادند و آنها را به کامیتهای مخربی در فورکهای تحت کنترل خود هدایت کردند. در نتیجه، نسخههای آلوده بهعنوان نسخههای رسمی پروژه نمایش داده میشدند و هیچ نشانه ظاهری از دستکاری در آنها وجود نداشت.
به همین دلیل، زمانی که توسعهدهندگان این پکیجها را از طریق Composer نصب میکردند، کد مخرب نیز بهصورت خودکار دانلود میشد؛ در حالی که فرآیند نصب هیچ تفاوتی با نصب نسخههای اصلی و سالم Laravel Lang نداشت.
نحوه اجرای بدافزار حمله زنجیره تأمین Laravel Lang
محققان دریافتند نسخههای آلوده حاوی فایلی با نام src/helpers.php بودند که از طریق بخش Autoload (بارگذاری خودکار) در فایل composer.json بهصورت خودکار بارگذاری میشد.
کد تزریقشده در این فایل بهعنوان یک دراپر (Dropper) عمل میکرد و کد مخرب مرحله دوم را از سرور فرماندهی و کنترل (C2) مهاجمان در دامنه flipboxstudio[.]info دریافت و اجرا میکرد.
در حمله زنجیره تأمین Laravel Lang، این کد مخرب یک بدافزار رباینده اطلاعات چندسکویی را روی سیستم قربانی مستقر میکرد؛ بدافزاری که برای سیستمعاملهای لینوکس، ویندوز و مکاواس طراحی شده و توانایی جمعآوری طیف گستردهای از اطلاعات حساس را داشت.
قابلیتهای بدافزار رباینده اطلاعات
بررسیهای فنی نشان میدهد بدافزار قادر به سرقت موارد زیر است:
- اعتبارنامههای ابری
- اطلاعات کوبرنتیز (Kubernetes)
- توکنهای Vault
- اعتبارنامههای Git
- اطلاعات CI/CD
- کلیدهای SSH
- دادههای مرورگر
- کیف پولهای رمزارزی
- نرمافزارهای مدیریت رمز عبور
- پیکربندیهای VPN
- فایلهای پیکربندی .env
علاوه بر این، بدافزار از الگوهای عبارات منظم (Regular Expressions) برای استخراج اطلاعات حساس از فایلها و متغیرهای محیطی استفاده میکند.
در حمله زنجیره تأمین Laravel Lang، مهاجمان بهطور ویژه به دنبال سرقت اطلاعات زیر بودند:
- کلیدهای AWS
- توکنهای GitHub
- توکنهای Slack
- اطلاعات Stripe
- اعتبارنامههای پایگاه داده
- توکنهای JWT
- کلیدهای خصوصی SSH
- عبارتهای بازیابی کیف پولهای رمزارزی
عملکرد نسخه ویندوز بدافزار
در سیستمهای ویندوز، کد مخرب PHP یک فایل اجرایی کدگذاریشده با Base64 را در خود جای داده بود که پس از اجرا استخراج و فعال میشد. این فایل اجرایی با یک نام تصادفی و پسوند exe. در پوشه %TEMP% ذخیره و اجرا میشد.
بررسی ها نشان میدهد این بدافزار رباینده اطلاعات (infostealer) با نام DebugElevator شناخته میشود و مرورگرهای زیر را هدف قرار میدهد:
- Google Chrome
- Microsoft Edge
- Brave Browser
هدف اصلی این بدافزار استخراج کلیدهای رمزنگاری وابسته به برنامه (App-Bound Encryption) است؛ کلیدهایی که برای رمزگشایی اعتبارنامههای ذخیرهشده در مرورگرها استفاده میشوند.
همچنین محققان یک مسیر PDB را در نمونه بدافزار شناسایی کردند که به حساب کاربری ویندوز با نام Mero اشاره دارد و واژه claude نیز در آن مشاهده میشود. این موضوع احتمال استفاده از ابزارهای مبتنی بر هوش مصنوعی در فرآیند توسعه بدافزار را مطرح کرده است.
| C:\Users\Mero\OneDrive\Desktop\stuff\claude\Chromium-DebugElevator\x64\Release\DebugChromium.pdb |
در حمله زنجیره تأمین Laravel Lang، پس از جمعآوری اطلاعات حساس، دادههای سرقتشده رمزگذاری شده و برای سرور C2 مهاجمان ارسال میشدند.
توصیههای امنیتی
به گفته Aikido، پس از گزارش این رخداد به Packagist، این سرویس بهسرعت نسخههای مخرب را حذف کرد و بستههای آلوده را بهطور موقت از فهرست عمومی خارج ساخت تا از گسترش آلودگی و نصبهای بیشتر جلوگیری شود.
محققان به کاربران Laravel Lang توصیه میکنند اقدامات زیر را در اسرع وقت انجام دهند:
- نسخههای نصبشده را بررسی کنند.
- اعتبارنامههای در معرض ریسک را تغییر (Rotate) دهند.
- سامانهها را از نظر وجود نشانههای نفوذ (IoC) بررسی کنند.
- فایلهای .env، اطلاعات CI/CD و سایر اطلاعات حساس را بررسی کنند.
- سوابق ارتباطات خروجی را برای شناسایی ارتباطات مشکوک با دامنه flipboxstudio[.]info بررسی کنند.
- در صورت شناسایی آلودگی، تمامی کلیدهای دسترسی، توکنها و اعتبارنامههای حساس را با نمونههای جدید جایگزین کنند.