نفوذ سایبری به مخازن Packagist؛ حمله ترکیبی به اکوسیستم PHP و جاوااسکریپت با بدافزار لینوکسی!
حملات زنجیره تأمین (Supply Chain Attacks) در حوزه توسعه نرمافزار، روز به روز پیچیدهتر و فریبندهتر میشوند. در جدیدترین موج از این حملات که توسط پلتفرم امنیتی Socket فاش شده است، مهاجمان سایبری توانستهاند با تزریق کدهای مخرب به ۸ بسته (Package) محبوب در مخزن Packagist مدیریت وابستگیهای زبان PHP ، زیرساختهای توسعه لینوکسی را هدف قرار دهند. نکته کلیدی و بسیار خطرناک این خط لوله آلوده، استفاده از یک استراتژی ترکیبی و بیناکوسیستمی است که عملاً سیستمهای اسکن امنیتی سنتی را دور میزند.
۱. واکاوی شگرد فریب: پنهانکاری در بستر نفوذ متقاطع (Cross-Ecosystem)
بستههای تحت تأثیر در این حمله همگی از نوع بستههای Composer مربوط به اکوسیستم PHPبودند. در شرایط عادی، تیمهای امنیتی و ابزارهای اسکن خودکار برای بررسی وابستگیهای یک پروژه PHP، فایل پیکربندیcomposer.json را بازرسی میکنند. اما هکرها برای پنهانکاری دست به یک ابتکار عمل شیطانی زدند:
- تزریق به فایل لایه دوم: مهاجمان کدهای مخرب خود را اصلاً وارد فایل ابزارهای PHP نکردند؛ بلکه آن را درون فایل package.json جاسازی کردند! این فایل مربوط به مدیریت وابستگیهای جاوااسکریپت (npm) است که در پروژههای مدرن وب (مانند فریمورکهای متصل به لندینگپیجها و ابزارهای فرانتاند) در کنار کدهای PHP سورس میشوند.
- نقطه کور اسکنرها: از آنجا که کارشناسان SecOps در زمان بررسی پروژههای PHP تمرکز خود را روی متادیتای مدیریت ابزار Composer میگذارند، فایلpackage.json به یک نقطه کور تبدیل شد و بدافزار توانست بدون جلب توجه، وارد خط لوله توسعه سازمانها شود.
۲. مکانیسم فنی اجرای بدافزار و فرار از سازوکارهای امنیتی
مهاجمان پس از دستکاری مخازن اصلی (Upstream Repositories) این ۸ بسته، یک اسکریپت مخرب از نوع postinstall را درون package.json تعریف کردند. به محض اینکه برنامه نویس یا سرورِ ساخت خودکار (Build Server) اقدام به نصب بسته میکرد، این اسکریپت به صورت خودکار فعال شده و فرآیند زیر را اجرا میکرد:
- دانلود زنجیره دوم از گیتهاب: اسکریپت تلاش میکرد یک فایل باینری لینوکس را از بخش تدارکات دانلود گیتهاب (GitHub Releases) به آدرس جعلی github[.]com/parikhpreyash4/systemd-network-helper-aa5c751f فراخوانی کند.
- پنهانسازی در دایرکتوری موقت: فایل دانلود شده با نام ظاهری و گمراهکنندهgvfsd-network (که نام یک دیمون قانونی در دسکتاپهای گنوم لینوکس برای مدیریت اشتراکگذاری شبکه است) در مسیر /tmp/.sshd ذخیره میشد.
- تغییر دسترسی و اجرای مخفی: اسکریپت با اجرای دستور chmod دسترسی کامل اجرا (Execute) به همه کاربران روی این فایل اعطا کرده و سپس آن را در پسزمینه سیستمعامل (Background) به صورت بیصدا به جریان میانداخت.
- غیرفعالسازی پروتکلهای امنیتی: برای جلوگیری از قطع شدن فرآیند نفوذ، این اسکریپت تاییدیه پروتکلهای TLS/SSL را به طور کامل غیرفعال میکرد، پیامهای خطای سیستمعامل را قطع (Suppress) مینمود و به هکر قابلیت اجرای از راه دور کد (RCE) را اعطا میکرد.
تحقیقات بیشتر نشان داد این زنجیره آلوده تنها به اسکریپتهای نصب محدود نبوده و در ۷۷۷ فایل در گیتهاب ردیابی شده است. در چندین مورد، هکرها این پیلود را مستقیماً درون فایلهای جریان کاری گیتهاب (GitHub Actions Workflow) جاسازی کرده بودند تا بدافزار دقیقاً در زمان تست و کامپایل خودکار روی سرورهای ابری اجرا شود.
🔍 تحلیل اختصاصی امنیت سایبری ۲۴ نیوز:
این حمله یک زنگ خطر جدی برای تیمهای DevSecOps و پدافند سایبری کشور است. مهاجمان به خوبی درک کردهاند که ابزارهای اسکن آسیبپذیری (مانند ابزارهای تست امنیت برنامه استاتیک یا SAST) معمولاً در مرزهای اکوسیستمهای نرمافزاری قفل میشوند. وقتی یک سازمان پروژه ساختیافته خود را بر پایه PHP مانیتور میکند، اسکنرهای وابستگی PHP توجهی به اسکریپتهای لایفسایکلِ محیط Node.js ندارند.
بُعد خطرناکتر این حمله، هدف قرار دادن سیستمهای CI/CD و سرورهای بیلد از طریق GitHub Actions است. سرورهای ساخت نرمافزار معمولاً دسترسیهای سطح بالایی به شبکه داخلی و کدهای منبع دارند. اجرای یک باینری مخرب لینوکسی در پسزمینه این سرورها میتواند به سادگی به یک نشت سرتاسری اطلاعات، سرقت کلیدهای API سازمانی و حتی تزریق درب پشتی (Backdoor) به محصول نهایی سازمانها منجر شود، بدون اینکه برنامه نویس روحش از این ماجرا باخبر باشد.
🛡️ دستورالعمل پدافند سایبری ۲۴ نیوز برای ایمنسازی خط لوله تولید نرمافزار:
برای جلوگیری از سقوط خط لوله توسعه سازمانی در برابر حملات متقاطع زنجیره تأمین، اجرای فوری پروتکلهای زیر در لایه DevSecOps الزامی است:
- اجرای اسکنهای همهجانبه وابستگیها(Multi-Ecosystem Scanning): تیمهای امنیتی باید سیستمهای مانیتورینگ خود را مکلف کنند که تمام فایلهای وابستگی پکیجها اعم از package.json و composer.json را بدون توجه به زبان اصلی پروژه، مورد بازرسی رفتاری و امضایی قرار دهند.
- قرنطینه و محدودسازی سرورهایCI/CD Network Isolation: محیطهای ساخت خودکار و رانرهای GitHub Actions باید در لایه شبکه کاملاً محدود شوند. این سرورها نباید اجازه داشته باشند به صورت آزادانه به اینترنت متصل شده و فایلهای باینری ناشناخته را از منابع خارجی (مانند اکانتهای شخصی گیتهاب) دانلود و اجرا کنند.
- ممنوعیت استفاده از نسخههایDev-Master: همانطور که در لیست بستههای آلوده این حمله مانند dev-main و dev-master مشخص است، هکرها بستههای در حال توسعه و فاقد تگ نسخه ثابت را هدف قرار دادهاند. سازمانها باید اکیداً استفاده از شاخههای مستقیم را ممنوع کرده و تنها از نسخههای پایدار و هششده (Locked Versions) استفاده کنند.
- کنترل اسکریپتهای پس از نصب((Ignore Scripts: در زمان نصب پکیجها با ابزار npm، ادمینها باید از سوئیچ --ignore-scripts استفاده کنند تا جلوی اجرای خودکار کدهای مخربی که در رویدادهای postinstall کمین کردهاند، گرفته شود.
تحلیل و تنظیم فنی: تحریریه تخصصی امنیت زیرساخت ۲۴ نیوز (بهراد یوسفی)