پروژههای منبع باز به دلیل ماهیت مشارکتی و پذیرش گسترده خود مشهور هستند، اما حملات زنجیره تامین پیچیده بیش از پیش آنها را هدف قرار میدهند. محققان Checkmarx اخیراً دریافتهاند که میتوان از نقاط ورودی در چندین اکوسیستم برنامهنویسی مانند PyPI، npm، Ruby Gems، NuGet، Dart Pub و Rust Crates برای انجام حملات زنجیره تامین نرم افزار سوء استفاده کرد.
هکرها به هنگام اجرای دستورات خاص، میتوانند از این نقاط ورودی برای اجرای کدهای مخرب سوء استفاده کنند، که خطر گستردهای را در چشمانداز پروژههای منبع باز ایجاد میکند.
نقاط ورودی یکی از ویژگیهای ضروری سیستمهای packaging (بسته بندی) به شمار میآیند. آنها توسعه دهندگان را قادر میسازند تا عملکردهای خاصی را از طریق دستورات CLI بدون نیاز به دانستن مسیرهای ورودی دقیق پکیجها یا ساختارها، به کاربران نشان دهند. نقاط ورودی معمولاً هنگام نوشتن اسکریپتهای خط فرمان یا ایجاد سیستمهای پلاگین استفاده میشوند.
نقاط ورودی پس از نصب پکیج، در فایل متادیتا آن ثبت میشوند. هکرها میتوانند هر زمان که دستور یا پلاگین خاصی اجرا میشود از این متادیتا برای اجرای کد مخرب سوء استفاده نمایند.
روشهای حمله
هکرها تکنیکهای متعددی را برای نفوذ به اکوسیستمهای منبع باز و اجرای حملات زنجیره تامین توسعه دادهاند. یک تکنیک محبوبِ Command-Jacking شامل پکیجهای مخربی است که به عنوان کپی ابزارهای شخص ثالث استاندارد مانند AWS، Docker، NPM Pip Kubectl و غیره توزیع میشوند.
زمانی که توسعهدهندگان ناآگاه این پکیجها را نصب و دستورات را اجرا میکنند، این نسخههای مخرب میتوانند دادههای حساس را بربایند و یا یک اقدام غیرمُجاز را (مانند سرقت گواهی اعتبار AWS که میتواند کل زیرساختهای ابری را به خطر بیندازد) به انجام رسانند.
تاکتیک دیگر شامل جعل هویت ابزارهای محبوب سیستم مانند touch، curl، ls، و mkdir برای منحرف کردن اجرای دستورات به سمت اسکریپتهای مخرب است. این تاکتیک به ویژه در محیطهای توسعه که نصب پکیجهای لوکال ممکن است اولویت داشته باشد مؤثر خواهد بود.
هکرها میتوانند با قرار دادن این دستورات جعلی جلوتر از همتایان قانونی خود در ترتیب متغیر محیطی PATH، دستورات را مستقیماً بر روی اسکریپتهای مخرب خود اجرا کنند.
انواع پیچیدهتر Command-Jacking ممکن است از Command Wrapping استفاده کنند، که در آن یک فرمان معتبر برای انجام عملکرد مورد نظر خود در حین اجرای کدهای مخرب در پسزمینه اصلاح میشود. این تاکتیک تشخیص فوری را غیرممکن میسازد چرا که در آن زمان عملکرد جعلی، قانونی به نظر میرسد.
یکی دیگر از روشهای رایج، نصب پکیجهای به ظاهر بیضرر با وابستگیها و الزامات (dependencies ) مخرب است که در هنگام نصب (از طریق اسکریپتهای پیش نصب) و یا هنگام فراخوانی توابع خاص اجرا میشوند. چنین وابستگیهایی تا زمانی که استفاده مخرب آنها توسط برخی رویدادهای خارجی یا فراخوانی توابع فعال نگردد، شناسایی نخواهند شد و تا زمانی که برای اهداف مخرب مورد نیاز نباشند، بصورت نرمال در برنامه رفتار میکنند.
چه کسانی در معرض خطر قرار دارند؟
توسعه دهندگان فردی و شرکتهای بزرگ در برابر حملات زنجیره تامین آسیب پذیر هستند. تیمهای توسعه کوچکتر و یا توسعه دهندگان مستقل ممکن است فاقد منابع یا تخصص لازم برای بررسی تمامی وابستگیها و منابع آنها باشند و به اهداف اصلی هکرها تبدیل شوند.
در همین حال، شرکتها اغلب به سیستمهای خودکار در pipeline های CI/CD خود متکی هستند که دستورات مخرب در آن میتوانند عملیات در سراسر سیستمهای یکپارچه را مختل سازند و به طور بالقوه حجم زیادی از داده را در معرض دید قرار دهند و یا موجب اختلال در عملیات شوند.
پیامدهای حملات زنجیره تامین به پروژههای منبع باز
حملات زنجیره تامین در اکوسیستمهای منبع باز پیامدهای جدی به همراه دارند. یکی از تهدیدات مورد علاقه هکرها استخراج داده و دسترسی غیرمجاز است. هکرها با استفاده از تکنیکهایی مانند command-jacking ، میتوانند به دادهها و گواهیهای اعتبار حساس دسترسی غیرمجاز پیدا کنند. این دادهها میتواند مورد سوء استفاده قرار گرفته و یا در بازار سیاه فروخته شوند.
نفوذ به محیطهای توسعه و تولید یک خطر جدی دیگر است. دستورات مخرب ممکن است کد منبع را تغییر دهند، بکدورها را مستقر و فرآیندهای ساخت و استقرار را مختل کنند، یا محیطهای CI/CD را به خطر بیندازند. این باعث میشود که برنامههای کاربردی آلوده برای کاربران نهایی مستقر شوند و به طور مستقیم بر آنها تأثیر بگذارند و شهرت سازمان را خدشهدار کنند.
سازمان ها باید ریسکهای فنی و عملیاتی مربوط به حملات زنجیره تامین، ضررهای مالی قابل توجه و عواقب قانونی را در نظر بگیرند.
تقویت امنیت پروژههای منبع باز
به منظور حفظ سطوح امنیتی بالا در پروژههای منبع باز، هوشیاری و مشارکت جامعه باید در فرآیندهای توسعه و توزیع پکیجها حرف اول را بزند. بررسی کد، دستورالعملهای مشارکت و ابزارهای اسکن امنیتی خودکار بسیار مهم هستند.
ابزارهای امنیتی که متادیتا و رفتار پکیج را تجزیه و تحلیل میکنند برای شناسایی حملات زنجیره تامین ارزشمند میباشند که میتوانند آسیب پذیریها را در زنجیره تامین سازمان نشان دهند.
اقدامات دفاعی عملی برای Adminها
adminهای لینوکس و توسعه دهندگان پروژههای منبع باز میتوانند چندین اقدام عملی برای به حداقل رساندن حملات زنجیره تامین به پروژههای منبع باز انجام دهند. اینها شامل کنترلهای دسترسی سختگیرانهای هستند که از اصل حداقل سطح دسترسی (PoLP) پیروی میکنند تا اطمینان حاصل شود که فقط کاربران مجاز میتوانند پیکربندیهای حیاتی را تغییر دهند و یا وارد سیستمهای حساس شوند.
حسابرسی و نظارت مستمر نیز نقش اساسی در دفاع در برابر این تهدیدات دارد. adminها با بررسی مکرر پکیجهای نصب شده یا فراخوانیهای سیستمی و ردیابی هر گونه رفتار غیرعادی که ممکن است نشان دهنده یک حمله مداوم باشد، میتوانند هر چیز غیرعادی را که نشان دهنده یک حمله مداوم باشد را شناسایی کنند. استفاده از EDR ممکن است کارایی آنها را بیشتر افزایش دهد.
یکی دیگر از مراحل ضروری، تأیید یکپارچگی پکیج پیش از نصب است. adminها باید از روشهای هش (hashing methods) و ابزارهایی مانند GPG (GNU Privacy Guard) را برای تأیید عدم تغییر پکیجها استفاده کنند. علاوه بر این، تیمهای توسعه میبایست در مورد حملات زنجیره تامین آموزش ببینند تا هر گونه فلگ قرمز را شناسایی کنند.
پیاده سازی یک مدل امنیتی میتواند وضعیت امنیتی سازمان را به طور قابل توجهی بهبود بخشد. این مدل شامل بررسی مداوم هر کامپوننت در سیستم برای نقض یکپارچگی و امنیت است، بنابراین تأثیر آنها را محدود میکند. adminها با انجام چنین اقدامات عملی، میتوانند بهتر از سیستم خود محافظت کنند و احتمال حملات زنجیره تامین موفق را کاهش دهند.
سخن پایانی
حملات زنجیره تامین که نقاط ورود به پایتون، npm و سایر اکوسیستمهای منبع باز را هدف قرار میدهند، روند نگرانکنندهای در امنیت سایبری هستند. چنین حملاتی نشان میدهند که چگونه هکرها از روشهای پیچیده برای نفوذ به سیستمها استفاده میکنند. بنابراین تلاشهای جمعی در جامعه پروژههای منبع باز برای تقویت اقدامات امنیتی و به حداقل رساندن حملات ضروری هستند.
درک نحوه عملکرد این حملات، چه کسانی ممکن است آسیب پذیر باشند و توسعه پروتکلهای امنیتی برای به حداقل رساندن خطرات و آسیبها، همگی به کاهش تهدیدها و جلوگیری از بروز رخدادهای بیشتر کمک میکنند.