عامل تهدید GhostAction کمپین سرقت اطلاعات خود در پلتفرم GitHub را گسترش داده است. در مرحله دوم این حمله، بدافزاری مبتنی بر JavaScript در قالب یک فایل فونت جعلی مخفی شده است که محیطهای کاری توسعهدهندگان را از طریق تسکهای Visual Studio Code هدف قرار میدهد.
مکانیزم حمله و اجرای بدافزار
تحلیلها نشان میدهد که مهاجمان یک لانچر (Launcher) را در فایل .vscode/tasks.json قرار داده و بدنه اصلی بدافزار را در مسیر public/fonts/fa-solid-400.woff2 ذخیره میکنند. اگرچه این فایل در ظاهر یک منبع Font Awesome به نظر میرسد، اما در واقع حاوی کدهای Node.js است. یک تسک با نام eslint-check، اجرای این اسکریپت مخفی را از طریق Node.js فراخوانی میکند.
این حمله از تنظیمات runOn: folderOpen استفاده میکند تا به محض باز شدن پروژه توسط توسعهدهنده، اجرا شود. همچنین تنظیمات نمایش به گونهای است که محیط ترمینال برای کاربر مخفی میماند تا متوجه اجرای عملیات نشود.
سرقت اطلاعات و دسترسیها
پس از اجرا، این بدافزار (Stealer) اقدام به جمعآوری موارد زیر میکند:
- نامهای کاربری و Hostname سیستم
- متغیرهای محیطی (Environment Variables) منتخب
- فایلهای اعتبارسنجی مرتبط با AWS، npm، PyPI، Git، Kubernetes، Claude و Gemini
- کلیدهای خصوصی SSH از نوع RSA و Ed25519
بدافزار با جستجوی بازگشتی (Recursive Search) در دایرکتوری Home، به دنبال الگوهای توکنهای دسترسی میگردد و اطلاعات جمعآوری شده را از طریق HTTP POST روی پورت 8080 به سرور مهاجم (مانند IP 193[.]32[.]204[.]199) ارسال میکند.
ماندگاری در سیستم (Persistence)
در سیستمهای مبتنی بر لینوکس، این بدافزار یک دستور زمانبندی شده در cron ایجاد میکند که هر پنج دقیقه یکبار اجرا میشود. این دستور، اسکریپتهای جدیدی را از سرور مهاجم دریافت کرده و مستقیماً به Bash میفرستد تا دستورات سفارشیسازی شده برای هر ماشین اجرا شوند. این ورودی با مارکر #ghc2 مشخص شده است و به دلیل اینکه در سطح سیستم ثبت میشود، حتی با حذف فایلهای مخرب از مخزن (Repository)، دسترسی مهاجم به سیستم باقی میماند.
توصیههای امنیتی برای تیمهای SOC و توسعهدهندگان
برای مقابله با این تهدید، اقدامات زیر توصیه میشود:
- لغو دسترسیها: پیش از پاکسازی، تمامی دسترسیهای GitHub که احتمال میدهید لو رفتهاند را ابطال کنید.
- بازرسی مخازن: تمامی مخازن قابل نوشتن را بررسی کرده و تسکها یا Workflowهای مشکوک را حذف کنید.
- بررسی ماندگاری: محیطهای Endpoint را برای وجود Cron Jobهای مشکوک یا تسکهای غیرعادی بررسی نمایید.
- چرخش کلیدها: تمامی توکنها و کلیدهای SSH که در متغیرهای محیطی یا تاریخچه Git قرار داشتند، از طریق یک دستگاه امن جایگزین (Rotate) شوند.