اگرچه امروزه شاهد وقوع حملات سایبری در حوزههای مختلف مربوط به فناوری هستیم اما تمرکز مهاجمان بر زنجیرههای تأمین نسبت به سایر بخشها بسیار بیشتر است. برای مثال در سال 2020، هک سولارویندز منجر به ایجاد شوک بزرگی در کل صنعت نرمافزار شد. وجود چنین رخنههای امنیتی مهمی باعث افزایش توجه و دقت مردم نسبت به این حوزه شدهاند.
از طرفی شناسایی دیرهنگام این حمله هم نقش چشمگیری در جلب توجه شدید رسانهها داشته است. در این حمله هکرهای روسی بیش از یک سال در حال جمعآوری و سرقت اطلاعات از شرکتهای مشتری سولارویندز بودند از جمله سازمانهای دولتی آمریکایی مثل وزارت امنیت میهن، خزانهداری، تجارت و غیره. شرکتهای خصوصی مثل دیلویت، مایکروسافت و اینتل هم تحت تأثیر این حمله قرار گرفتند.
در حال حاضر مدیریت ریسک با تهیه فهرست اجزای محصول [1] یا SBOM جزو اقدامات به شدت توصیه شده در حوزه DevOps جهت کاهش مخاطرات حملات نرمافزار زنجیره تأمین محسوب میشود. در این مطلب این روش و نقش قابلیت دید بر هر واحد تشکیلدهنده در نرمافزار زنجیره تأمین در راستای کاهش ریسک حملات سایبری را بررسی میکنیم.
نرمافزار زنجیره تأمین چیست؟
شرکتهای مختلف توسعهدهنده نرمافزار برای ارتقای بهرهوری عملیات و انجام کارهای روزمره خود از اجزای نرمافزاری مختلف استفاده میکنند. اجزا و وابستگیهای شخص ثالث معمولاً در نرمافزارها وجود دارد. از این رو محصولات نرمافزاری به صورت ذاتی شامل زنجیره تأمین هر بخش تشکیلدهنده نرمافزار میشوند.
این شبکه وابستگیها به توسعهدهندگان امکان میدهد که پروژههایشان را به سرعت افزایش مقیاس دهند اما از طرفی نرمافزارها را در معرض آسیبپذیریهای سایر سورس کدها و فرایندهایی قرار میدهند که خارج از محدوده کنترل مستقیم آنها هستند. نرمافزار زنجیره تأمین شبکهای متشکل از پلاگینها، وابستگیهای مخزن، کتابخانهها، باینریها و کدهای مختلف است. بعلاوه این شبکه شامل ابزارهایی مثل مخازن، تحلیلگران کد، ابزارهای ثبت عملیات و هماهنگکنندههای تولید نیز است. نیروهای انسانی دخیل در فرایند تولید هم جزئی از نرمافزار زنجیره تأمین هستند.
با توجه به مقیاس عظیم این موضوع، پیدا کردن راههایی برای شناسایی اجزای زنجیره تأمین، تشخیص اینکه هر بخش از کجا آمده و تفکیک تهدیدات پیش از آشکار شدن آنها ضروری است. در این راستا، جو بایدن رئیس جمهور آمریکا دستور داده که شرکتها و فروشندگان نرمافزاری که دولت آمریکا جزو مشتریان آنها است، باید فهرست SBOM را در اختیار مشتریان خود قرار دهند.
اجزای متداول یک SBOM عبارتند از:
- اجزای اپن سورس
- مجوزهای اپن سورس
- نسخههای اپن سورس
- آسیبپذیریهای اپن سورس
با توجه به تهدیدات و مخاطرات امنیتی موجود، انجام کارهای لازم برای نظارت بر زنجیره تأمین و کاهش ریسک امنیت سایبری ضروری است. در ادامه مطلب تعدادی از این اقدامات را مورد بررسی قرار میدهیم:
اسکن وابستگیها
باید وابستگیهای اپن سورس در هر مرحله از چرخه حیات و توسعه سیستمها (SDLC[2]) اسکن و ارزیابی شوند. توسعهدهندگان میتوانند از طریق تحلیل اجزای نرمافزار (SCA[3]) با مسیرهای احتمالی حمله آشنا شوند و پیش از پیشروی مهاجمان در این مسیرها، با آنها مقابله کنند.
اسکن مخازن گیتهاب
مخازن گیتهاب جزو بزرگترین کتابخانههای کد موجود هستند. در نتیجه نظارت بر این پلتفرم از طریق اسکن منظم مخازن آن ضروری است. میتوان اعلانهایی بلادرنگ برای کاربران ارسال کرد که از افشای اطلاعاتی خاص جلوگیری میکنند. به این ترتیب، توسعهدهندگان میتوانند به راحتی اعتبار سورس کدها را بررسی کنند.
استفاده از فناوری هایپرلجر[4]
پروژه متن باز هایپرلجر که توسط لینوکس تأسیس شده شامل مجموعه متنوعی از ابزارها، پروژهها و چارچوبها برای مشاغل و توسعهدهندگان است تا بتوانند شبکهها و برنامههای بلاکچین را بسازند. فناوری بلاکچین یک مکانیزم غیرمتمرکز است. استفاده از این فناوری در تحلیل نرمافزار زنجیره تأمین، شفافیت زیادی ایجاد کرده و به تشخیص نقاط ضعف در مقابله با حملات مخفی کمک میکند. برای اعتبارسنجی زنجیره تأمین، ارزیابی فناوریهای هایپرلجر و محل فناوری بلاکچین ضروری است.
استفاده از هانی توکن[5]
هانی توکنها میتوانند نقش دادههای طعمه را داشته باشند که به سازمانها درباره تهدیدات فعال هکرها و آسیبپذیریهایی که باید به صورت بلادرنگ ارزیابی و رفع شوند، کمک میکنند. هانی توکنها ابزارهای بسیار مفیدی هستند چون به مقابله با تعداد زیادی از ریسکهای امنیتی کمک میکنند.
ارزیابی ریسک
ارزیابی به موقع ریسک جزو راهکارهای کارآمد برای نظارت بر زنجیره تأمین و کاهش خطر نفوذ است. این روش برای آموزش افراد تیم هم مفید است و باعث میشود که افراد با اصول توصیه شده برای زنجیره تأمین آشنا شوند.
رسیدگی به مشکلات شخص چهارم احتمالی
مشکلات زنجیره تأمین فقط مربوط به وابستگی به اشخاص ثالث نیستند بلکه ممکن است فروشنده یک نرمافزار هم از خدمات پیمانکاران و شرکتهای دیگری استفاده کند. مقابله با این ریسک کار سادهای نیست اما ابزارهای امنیتی خاصی وجود دارند که به اسکن خط لوله نرمافزار برای تشخیص آسیبپذیریهای بالقوه کمک میکنند.
نظارت بر فروشندگان شخص ثالث
توسعهدهندگان نباید از تأمینکنندگان شخص ثالث غافل شوند به ویژه افرادی که دسترسیهای خاصی به داراییهای نرمافزاری سازمان دارند. باید یک ارزیابی کامل بر روی این تأمینکنندگان انجام شود تا این اطمینان فراهم شود که SDLC نرمافزار، حداکثر جامعیت ممکن را دارد.
نظارت بر نقاط پایانی مورد استفاده توسعهدهندگان
نقاط پایانی توسعهدهندگان هم نیاز به نظارتهای خاصی دارند. ابزارهایی مثل ماشینهای مجازی، سرورها و ایستگاههای کاری باید به صورت منظم بررسی شده و نقاط ضعفشان شناسایی شود. پس از تشخیص نقاط ضعف، میتوانید سازوکارهای حفاظت از نقاط پایانی، فناوریهای واکنش و تشخیص در نقاط پایانی را نصب و راهاندازی کنید تا گزارشدهی به بهترین نحو ممکن انجام شود.
اهمیت قابلیت دید بر زنجیره تأمین
هکرها شروع به تطبیق الگوهای حمله خود با نرمافزارها کردهاند. حملات هکرها معمولاً مستقیم هستند. بررسی و کاوش کامل سیستم به شناسایی آسیبپذیریهای نرمافزارهای نصب شده کمک میکند. پس از آن یک بدافزار نصب میشود تا از رخنههای موجود در سیستم سوءاستفاده شود. در این مرحله، بدافزار شروع به گسترش در اجزا و نرمافزارهای مختلف سیستمها میکند.
در چنین مواقعی، دو راه برای مقابله با حمله وجود دارد. سازمانها میتوانند اکسپلویتهای شناخته شده را مسدود کرده و زمان پنهان ماندن هکرها را کاهش دهند. در نتیجه توسعهدهندگان نرمافزار باید تست آسیبپذیری و SCA را در مراحل ابتدایی و مقدماتی SDLC پیادهسازی کنند تا هر گونه رخنه احتمالی در اسرع وقت شناسایی شود. اسکنرهای آسیبپذیری، کدهای ضعیف را تشخیص داده و آنها را برای بررسی بیشتر نشانهگذاری میکنند.
نتیجهگیری
برای انتخاب بهترین رویکرد در زمینه امنیت سایبری، باید با تفاوتهای بین تشخیص دستکاری نرمافزار و تشخیص آسیبپذیری آشنا شوید. در حالت اول، آسیب از قبل ایجاد شده و نرمافزار به میزان زیادی تغییر کرده است. از طرفی، تشخیص آسیبپذیری شامل پیدا کردن و تفکیک رخنهها پیش از تبدیل شدنشان به نقطه نفوذ است.
هر دو روش در مواردی خاص ضروری هستند. اما لازم است در همه مراحل SDLC از خط لوله توسعه نرمافزار حفاظت کنید. در بیشتر مواقع آسیبپذیریها در مراحل اولیه ایجاد میشوند و کم کم به مراحل بعدی حرکت میکنند تا زمانی که پروژه مستقر شود. معمولاً در این مرحله، رفع آسیبپذیری کار بسیار سختی است. اگرچه ابتکار هکرها روزبروز بیشتر میشود اما همچنان راههایی برای مقابله با فعالیتهای آنها و حفظ امنیت پروژههای نرمافزاری وجود دارد.
[1] این فهرست شامل کلیه آیتمها و مواد مورد نیاز برای تولید یک محصول، دستورالعملها و راهنماییهای لازم جهت جمعآوری این مواد و استفاده از آنها است.
[2] Systems development life cycle
[3] software composition analysis
[4] hyperledger
[5] honeytoken
منبع: gbhackers