چه چیزی درون کد شماست؟ چرا ما با لیست متریال های نرم افزار نیاز داریم؟

شنبه 17 خرداد 1399

لیست متریال های نرم افزار به میزان زیادی در امنیت نرم افزارها مهم است، ما در این مطلب کمی بیشتر درباره لیست متریال های نرم افزار صحبت خواهیم کرد.

 چه چیزی درون کد شماست؟ چرا ما با لیست متریال های نرم افزار نیاز داریم؟

قبل از صحبت درباره لیست متریال های نرم افزاری برنامه باید بدانید که طراحی و ساخت اپلیکیشن های امن صرفا به این معنا نیست کدهای خود را چک کنید تا مطمئن شوید خطاهای منطقی و برنامه نویسی در کدهای شما وجود نداشته باشد. بسیاری از هکرها به صورت گسترده ای در بخشی از حملات خود آسیب پذیری های مربوط به کتابخانه های شخص ثالث را مورد هدف قرار می دهند، بنابراین شما در زمان بررسی امنیت اپلیکیشن خود باید وابستگی های برنامه و کامپوننت ها را مورد بررسی قرار دهید تا نسبت به این موضوع اطمینان کاملی داشته باشید.

لیست متریال ها در شرکت ها

معمولا در زمان ساخت محصول بسیاری از شرکت های بزرگ معمولا لیستی از کامپوننت های استفاده شده را ایجاد می کنند و تمامی موارد موجود که در زمان ساخت محصول از آنها استفاده کرده اند را در این لیست می آورند تا افرادی که قصد دارند محصول نهایی را خریداری کنند دقیقا بدانند که دقیقا چه محصولی را خریداری می کنند. به عنوان مثال معمولا بر روی بسته بندی مواد غذایی به صورت کامل بیان می شود که محصول از چه موادی ساخته شده است  و بنابراین شرایط خرید آگاهانه را در اختیار مشتریان خود قرار می دهند.

زمانی که وارد بازار نرم افزار می شویم جدا کردن کدها و استفاده از لیست متریال های نرم افزار برای این که تعیین کنیم دقیقا از چه کتابخانه هایی استفاده کرده ایم و کدام وابستگی ها در پروژه ما وجود دارند از اهمیت ویژه ای برخوردار می شود. این یک چالش بسیار بزرگ است که اکثر تیم های فناوری اطلاعات و IT معمولا یا زمان کافی برای انجام آن را ندارند یا این که منابع لازم برای کشف این وابستگی ها را ندارند.

Derek Weeks از حامیان شرکت Sonatype که از ارائه دهندگان اتوماسیون زنجیره تامین نرم افزار است می گوید:" قطعا شما دوست ندارید که مواد غذایی بی کیفیت را خریداری کنید، یک ماشین با کیسه هوای نامطلوب نمی تواند گزینه مناسبی برای خرید شما باشد و ... ولی مشکلی که امروزه وجود دارد این است که این قوانین امروزه در دنیای نرم افزار از اهمیت زیادی برخوردار نیستند و توجه زیادی به آنها نمی شود.

 لیست متریال های نرم افزار

بگویید چه چیزی داخل کدهای شما است

به صورت حداقلی یک لیست متریال های نرم افزار باید به خوبی توصیف کند که از چه کامپوننت هایی در اپلیکیشن استفاده شده است، ورژن نسخه ای از کامپوننت که در اپلیکیشن خود از آن استفاده کرده اید چند است و نوع لایسنسی که برای هر یک از این کامپوننت ها استفاده کرده اید نیز باید در لیست متریال های نرم افزار آمده باشد.

به عنوان مثال مدیران شرکت های IT زمانی که برای اولین بار در سال 2014 میلادی آسیب پذیری Heartbleed آشکار شد اگر لیست متریال های نرم افزار را در اختیار داشتند می دانستند که در کدام نرم افزارها و اپلیکیشن ها از کتابخانه های مربوط به این آسیب پذیری استفاده کرده اند و در نتیجه راحت تر می توانستند مشکلات مربوط به این آسیب پذیری را حل کنند. در واقع آنها به جای این که تمامی اپلیکیشن هایی که در محیط آنها اجرا می شد را تست کنند تا تشخیص دهند که کدام یک از آنها از شامل OpenSSL می شدند می توانستند به راحتی این لیست را بررسی کرده و فورا نرم افزارهایی که در مقابل این آسیب پذیری نقطه ضعف داشتند را شناسایی کرده و اقدامات لازم را صورت دهند.

 لیست متریال های نرم افزار

سایر اطلاعاتی که می توان در لیست متریال های نرم افزار قرار داد

سایر اطلاعات خوبی که می توانید در لیست متریال های نرم افزار قرار دهید می توانند شامل جزئیاتی مانند لوکیشن هر کامپوننت در سورس کد شما، مکان هایی که این کامپوننت ها فراخوانی شده اند، لیست ابزارهایی که برای ساخت اپلیکیشن از آنها استفاده شده است و اسکریپت های مربوطه باشند.

توسعه دهندگان امروزی به میزان زیادی متکی به منابع متن باز و سایر پروژه ها و کامپوننت های شخص ثالث می باشند و ممکن است حدود 80 تا 90 درصد یک برنامه شامل کدهایی باشد که توسط شخص دیگری نوشته شده است. طبق آماری که توسط Sonatype جمع آوری شده است به صورت میانگین هر برنامه شامل 106 کامپوننت است. دقت داشته باشید که فرقی نمی کند مشکل در کدام یک از این مولفه ها باشد. سازمانی که اپلیکیشن را طراحی کرده است موظف است برنامه لیست متریال ها را ایجاد کند و در واقع مسئول کل زنجیره نرم افزار است و باید بداند که در صورت آسیب پذیری در هر یک از این کامپوننت ها یک حادثه امنیتی در اپلیکیشن ایجاد خواهد شد.

 لیست متریال های نرم افزار

جعبه های سیاه و لیست متریال های نرم افزار

زمانی که سازمان ها اقدام به خرید نرم افزاری می کنند( چه نرم افزارهای تجاری و چه نرم افزارهای متن باز) آنها نمایی محدود از کامپوننت هایی که در نرم افزار مورد استفاده قرار گرفته است دارند. برخی از تیم های بسیار سخت کوش در صورتی که لیست متریال های نرم افزار را در اختیار نداشته باشند ممکن است کدها را به صورت کامل بازبینی کنند تا متوجه شوند که از چه کامپوننت هایی در آن استفاده شده است. با این حال در اینجا باید به این نکته دقت داشته باشید که کتابخانه ها می توانند سایر کامپوننت ها را فراخوانی کنند و به راحتی سطوح عمیق تری از کامپوننت های استفاده شده در نرم افزار را ایجاد کنند.

 لیست متریال های نرم افزار

نیاز به لیست متریال های نرم افزار

Mark Curphey مدیرعامل شرکت Sourceclear که یک شرکت در زمینه امنیت نرم افزار است می گوید: " بسیاری از افراد حتی مطمئن نیستند که از چه چیزهایی در نرم افزار استفاده کرده اند. این موضوع به خصوص زمانی که برخی از کتابخانه ها سایر کتابخانه ها را فراخوانی کنند و افراد نتوانند این ارتباط را درک کنند بسیار بیشتر احساس می شود".

طبق گزارشی که زنجیره تامین نرم افزار Sonatype در سال 2016 میلادی ارائه داد از هر 16 کامپوننتی که مورد استفاده تیم های توسعه دهنده نرم افزار قرار می گیرد یکی از آنها دارای یک نقص امنیتی شناخته شده هستند. Weeks در این باره می گوید در زمینه خودروسازی نیز این چنین است، بسیاری از افراد می دانند که 6 درصد از قطعات استفاده شده در ساخت خودروها دارای مشکل هستند ولی هیچ کس نمی داند که این این 6 درصد در کدام بخش از خودروها استفاده شده و یا کدام شرکت های خودروسازی از این 6 درصد از تجهیزات استفاده کرده اند. در واقع این نقص های امنیتی را امروزه نه صاحبان شرکت های خودروسازی می پذیرند و نه صاحبان شرکت های نرم افزاری آن را می پذیرند.

 لیست متریال های نرم افزار

موضع گیری خریداران نرم افزارها در مقابل این موضوع

برخی از خریداران نرم افزارها در مقابل این موضوع موضع های خاصی می گیرند. به عنوان مثال هر دو کلینیک Exxon و Mayo سازندگان نرم افزارها را مجبور می کنند تا لیست متریال های نرم افزار را بسازند تا به این طریق بتوانند مشکلات امنیتی احتمالی را در نرم افزارها یافته و مجوز استفاده از برخی از کامپوننت های نام برده شده در لیست متریال های نرم افزار را ارائه دهند. علاوه بر این در صورت بروز مشکل نیز راه حل های احتمالی را به سازندگان ارائه می دهند.

 لیست متریال های نرم افزار

حل مشکلات بعد از پیدا شدن آسیب پذیری های احتمالی

زمانی که مشکلات مربوط به آسیب پذیری های هر یک از کامپوننت های موجود در لیست متریال های نرم افزار پیدا شد مدیر می تواند به راحتی از توسعه دهندگان بخواهد تا برنامه را با نسخه های جدیدتر و بدون آسیب پذیری کامپوننت ها بازسازی کنند. در حالی که شما احتمالا منتظر نرم افزار به روز شده هستید شرکت فناوری اطلاعات این فرصت را در اختیار دارد تا با استفاده از برنامه های امنیتی، امنیت نرم افزار را در مقابل مهاجمین افزایش دهد. لیست متریال های نرم افزار همچنین به مدیران کمک می کند تا هر زمان که آسیب پذیری های مربوطه فاش شدند به راحتی بتوانند اپلیکیشن را از لحاظ آسیب پذیری های مربوطه بررسی کرده و در صورت نیاز تغییرات لازم را انجام دهند.

 لیست متریال های نرم افزار

یک نکته اساسی در توسعه نرم افزار

دقت داشته باشید که فقط به این دلیل که یک کامپوننت هیچ گونه باگی را در یک زمان مشخص نداشت نمی توان گفت که امنیت صد در صدی دارد. برخی از کامپوننت ها ممکن است در آخرین نسخه خود باشند ولی با این حال آخرین نسخه آنها بسیار قدیمی باشد. اگر مدیران و توسعه دهندگان اطلاعات درستی را درباره آن در اختیار داشته باشند آنها می توانند به خوبی تصمیم بگیرند که آیا قصد دارند ریسک استفاده از این کامپوننت را بپذیرند یا خیر؟ چرا که احتمالا پشتیبانی های مربوط به کامپوننت های قدیمی نیز بسیار ضعیف باشد.

برنامه های مشابهی که در واقع با یکدیگر متفاوت هستند

دانستن این موضوع که از چه کامپوننت هایی در یک نرم افزار استفاده شده است تنها یک موضوع برای نرم افزارهای متن باز نیست. امروزه تلاش های بسیار زیادی برای ایجاد آزمایشگاه های صدور مجوز و آزمایش با محوریت امنیت نرم افزار در حال انجام است. برخلاف لیست متریال های نرم افزار که به صاحبان نرم افزارها کمک می کند که خود را در حد بالای بروزرسانی و نگهداری نرم افزارهای خود نگه دارند این تلاش ها بیشتر در راستای کمک به خریداران نرم افزارها است و نحوه کارکرد آن مانند لیست متریال های نرم افزار نیست.

 لیست متریال های نرم افزار

تست ها در برابر لیست متریال های نرم افزار

آزمایشگاه های Underwriters در اوایل سال جاری یک برنامه داوطلبانه تضمین امنیت در دنیای سایبری با نام UL CAP را برگزار کردند که بیشتر تمرکز آن بر روی اینترنت اشیا و زیرساخت های اینترنتی بود. هدف آنها از این برنامه این بود که آسیب پذیری ها و ضعف های امنیتی موجود در محصولات خود را در برابر مجموعه ای از استانداردهای امنیتی ارزیابی کنند. UL CAP می تواند به عنوان یک ابزار فوق العاده در مقابل لیست متریال های نرم افزار برای خریداران ارائه شود که به آنها کمک می کند تا زیرساخت های مهم محصول و تجهیزات مورد استفاده در اینترنت اشیا را از لحاظ امنیتی ارزیابی کنند. آزمایشگاه های ICSA نیز تست های تایید گواهینامه های اینترنت اشیا را به صورت مشابه انجام می دهند تا بررسی کنند که تجهیزات مورد استفاده چگونه می توانند هشدارها را مدیریت کرده، رمزنگاری مناسبی داشته باشند و عملیات احراز هویت را به خوبی انجام دهند. علاوه بر این امنیت فیزیکی و امنیت سیستم عامل آنها نیز در این آزمایش ها مورد بررسی قرار می گیرد. صدور گواهینامه های آزمایشگاه ICSA به این معنا است که این محصول تحت یک برنامه استاندارد مورد آزمایش قرار گرفته است و آسیب پذیری ها و نقص های امنیتی آن برطرف شده است.

 لیست متریال های نرم افزار

فریم ورکی برای امنیت در اینترنت اشیا

با صحبت درباره لیست متریال های نرم افزار احتمالا متوجه اهمیت بسیار زیاد امنیت در نرم افزار شده اید و شما هم به گروه علاقه مندان به لیست متریال های نرم افزار پیوسته اید. بعد از صحبت درباره لیست متریال های نرم افزار بهتر است درباره امنیت در اینترنت اشیا نیز صحبت کنیم.

گروه Trust Alliance دارای یک فریم ورک اعتماد به اینترنت اشیا است که مجموعه ای از مشخصات تولید کنندگان اینترنت اشیا را برای ایجاد امنیت بیشتر( مانند رمزهای عبور منحصر به فرد، ترافیک های رمزنگاری شده و سایر مکانیزم های پیچیده) نگهداری می کند. پیش بینی می شود که این فریم ورک در آینده ای نزدیک تبدیل به یک برنامه صدور گواهینامه های اعتماد به اینترنت اشیا شود اما در حال حاضر بیشتر به عنوان یک راهنمای خوب برای تولید کنندگان محصولات مرتبط با اینترنت اشیا کاربرد دارد.

 لیست متریال های نرم افزار

افزایش امنیت با آزمایشگاه های تست امنیت

در کنفرانس امسال Black Hat که Peiter Zatko که یکی از هکرهای مشهور دنیا است و همین طور خواهرش Sarah Zatko یک سیستم امتیاز دهی برای خریداران را ارائه دادند و از یک آزمایشگاه مستقل تست رونمایی کردند که برای بررسی امنیت و نقاط ضعف اپلیکیشن های مختلف به کار گرفته می شود. متدولوژی به کار رفته در CITL شامل جستجوی توابع نامناسب شناخته شده و این که چند بار یک اپلیکیشن از این توابع استفاده می کند بود. علاوه بر این، این متدولوژی مقایسه استفاده از توابع مناسب را نیز به کاربران ارائه می داد.

Zatko در طول ارائه خود گفت: " ما به عنوان یک تیم امنیتی که داریم بر روی این پروژه ها کار می کنیم بر روی موارد خاصی تمرکز کرده ایم اما به عنوان مصرف کننده یک محصول باید بگوییم که مصرف کنندگان همواره از اختلال پذیری محصولات نرم افزاری گله دارند.

 لیست متریال های نرم افزار

دنبال کردن عناصر برای امنیت بهتر

مهاجمان به صورت گسترده ای تمرکز خود را تغییر داده اند و امروزه بیشتر به کامپوننت های مختلف دقت می کنند چرا که می دانند هدف قرار دادن آسیب پذیری های کتابخانه ها قربانی های بیشتری را از آنها می گیرد تا این که بخواهند فقط بر روی یک نرم افزار و اپلیکیشن خاص تمرکز کنند. جریان serialization در Apache Common Core یک مثال فوق العاده است که به خوبی نشان می دهد چنین جریان هایی چگونه به راحتی از دست می روند. یک مدیر چیز خاصی برای نگرانی وجود ندارد چرا که سازمان ها از JBoss استفاده نمی کنند. با این حال این دسته از مدیران باید بدانند که عدم درک برنامه های دیگر ممکن است آسیب پذیری های بزرگی را در نرم افزار شما ایجاد کند. به همین علت است که لیست متریال های نرم افزار امروزه از اهمیت بسیار زیادی برخوردار است.

 لیست متریال های نرم افزار

صحبت پایانی درباره لیست متریال های نرم افزار

یک لیست متریال های یک نرم افزار به مدیران کمک می کند تا دید بهتری را نسبت به کامپوننت های استفاده شده در نرم افزار بدست بیاورند و در نتیجه بتوانند مشکلات امنیتی موجود در اپلیکیشن ها و نرم افزارهای خود را به راحتی پیدا کنند. از همه مهم تر، مدیران با استفاده از لیست متریال های نرم افزارها می توانند کدهای خود را به صورت دقیق تری مورد بررسی قرار دهند و آسیب پذیری های موجود در کامپوننت های مختلف و ضعف های احتمالی را نیز مورد بررسی قرار دهند و در نتیجه به موقع برای مقابله با این آسیب پذیری ها اقدام کنند.

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

تاکنون هیچ کاربری از این پست تشکر نکرده است

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید