Transcript مثال
جلسه دوم
مبانی امنیت ()3
ارائه دهنده:
حسین محمدحسن زاده
15اسفند 1391
1
H.M.Hassanzade, [email protected]
برنامه های امن
زمانی که می گوییم یک برنامه «امن» است ،به چه معنی می باشد؟
افراد مختلف با توجه به تعریف متفاوتشان از یک برنامه امن ،می توانند نظر مختلفی در مورد
خصوصیات یک برنامه امن داشته باشند.
اکثر افراد آشنا به نرم افزار ،تعداد و نوع نقص های موجود در نرم افزار را به عنوان نشانه
ای برای سنجش میزان کیفیت آن می دانند.
2
برنامه های امن
از بین بردن نقص ها
یک رویکرد در قضاوت در مورد کیفیت امنیت ،از بین بردن نقص ها بوده است.
نرم افزاری که 100نقص داشته و برطرف شده بهتر است یا نرم افزاری که 20خطا داشته و
شناسایی و برطرف شده اند؟؟
• ممکن است کسی بگوید نرم افزاری که 100خطا داشته است ،بیشتر مورد تحلیل قرار گرفته است؛ اما ممکن
است نظر دیگری این باشد که نرم افزاری که در آن 100خطا شناسایی شده 100 ،خطای دیگر دارد که باید
منتظر شناسایی شدن هستند!!
3
برنامه های امن
از بین بردن نقص ها-ادامه
اولین برنامه های امنیت کامپیوتر بر مبنای مفهوم «نفوذ و اصالح» بودند که با توجه به آن تحلیل
گران در پی یافتن و رفع نواقص بودند.
معموال تیمی با عنوان
Tiger Team
برای آزمون امنیت سیستم ،سعی در انجام کارهایی داشت که
باعث نقص سیستم شود.
اگر سیستم در مقابل عمل ها گروه مقاومت نشان می داد ،به معنی امن بودن آن بود.
متأسفانه ،با این روش بسیاری از نقص ها ناشناخته باقی می ماندند.
در این حین حتی روش های اصالح سیستم ،نه تنها باعث امن تر شدن سیستم نمی شدند ،بلکه بدلیل
یافتن نقص های جدید ،آن را نا امن تر می کردند .
4
برنامه های امن
از بین بردن نقص ها -ادامه
4دلیل برای مورد قبل وجود دارد:
• فشارهایی که برای رفع یک نقص به سیستم وارد می شد تنها به خود نقص و نه به زمینه آن توجه می کرد .به
عبارتی تحلیل گران تنها ظاهر نقض را دیده و سعی در رفع آن داشتند و به نقص های واقعی موجود در طراحی و
ابزار توجهی نداشتند.
• نقص موجود عموما تأثیرات غیرواضح دیگری در قسمت های دیگری غیر از محیط اطراف خود داشت.
• درست کردن یک مشکل باعث شکست هایی در قسمت های دیگر شده و یا روند های اصالح مشکل یک قسمت را
حل می گردندف نه همه قسمت ها را.
• ایرادات و نقص های یک سیستم به طور کامل قابل رفع کردن نیستند ،زیرا عملکرد سیستم در نتیجه آن پایین می
آید.
5
برنامه های امن
رفتارهای غیرمنتظره
نامناسب و ناکافی بودن برنامه های یافتن و رفع نقص باعث شد تحلیل گران به دنبال راه بهتری
باشند.
یک راه مقایسه بین عمل واقعی یک برنامه و آنچه مورد نیاز است ،می باشد.
نقض در اجرای برنامه بر خالف انتظار ،نقص در امنیت برنامه نامیده می شود.
نقص در امنیت برنامه رفتاری نادرست است که در اثر یک آسیب پذیری در برنامه ایجاد میشود.
6
برنامه های امن
رفتارهای غیرمنتظره -ادامه
اصطالحات آسیب پذیری ( )vulnerabilityو نقص ( )flawبه طور کامل با مفاهیم خطا ( )faultو
شکست ( )failureهمپوشانی ندارند.
یک نقص ( )flawمی تواند یک خطا ( )faultیا شکست ( )failureباشد و یک آسیب پذیری
( )vulnerabilityمجموعه ای از نقص ( )flawها ،مانند سرریز بافر ،را شرح می دهد.
آسیب پذیری ( )vulnerabilityو نقص ( )flawباید از دو جنبه مد نظر قرا گیرند :علت و معلول
بنابراین می بینیم که خطا باعث چه مسائل و شکست هایی می شود که برای کاربر مشخص و واضح
است.
7
برنامه های امن
رفتارهای غیرمنتظره -ادامه
نقص های امنیت برنامه از هر نوع شکست در آن می تواند ناشی شود.
یک نقص می تواند ناشی از مشکلی در یک قطعه برنامه یا شکستی در ارتباط چند برنامه با
یکدیگر باشد.
نقص های امنیتی می توانند کدهایی که از ابتدا به عنوان کد مخرب نوشته شده و یا به صورت درهم
بر هم و خراب هستند را شناسایی و نمایان کنند.
بنابراین نقص های امنیتی می توانند ناشی از دو حالت باشند:
• اشتباهات غیرعمدی انسانها
• کدهای ذاتا مخرب
8
برنامه های امن
رفتارهای غیرمنتظره -ادامه
تفاوت بین اشتباهات غیرعمد انسانی و برنامه های ذاتا مخرب چندان مهم نیست و هر دو می
توانند به یک اندازه به سیستم و برنامه آسیب برسانند.
بر خالف آنچه تصور می شود ،خرابی های ناشی از اشتباهات غیرعمد انسانی بسیار بیشتر و
بدتر از دیگری است.
9
برنامه های امن
رفتارهای غیرمنتظره -ادامه
متأسفانه تکنیکی برای برطرف نمودن همه نقص های امنیتی وجود ندارد .این مشکل به دو
دلیل است:
• کنترل های امنیتی اصول ا به سطحی از برنامه و برنامه ریزهای فردی اعمال می شوند .در هر
سیستم مجموعه ای از «عمل هایی که باید انجام شود» وجود دارد که کنترل سیستم «عمل هایی که
نباید انجام شود» است .چون این دو برای سیستم متفاوت استف مجموعه ای که همه این ها را شامل
شود وجود ندارد.
• تکنیک ها و برنامه های کامپیوتری پیشرفتی بسیار سریع تر از کنترل های امنیتی دارند.
10
برنامه های امن
انواع نقص ها
نقص های امنیتی به دو دسته ذاتی و غیر عمد نقسیم می شوند.
نقص های ذاتی:
• مخرب
• غبر مخرب
نقص های غیر عمد:
• خطاهای ارزیابی :کنترل ها
•
•
•
•
•
خطای دامنه :دسترسی های کنترل شده به داده
سلایر سازی :چریان های برنامه
معرفی و احراز هویت نامناسب
نقض شرایط مرزی
خطاهای منطقی موجود
11
خطاهای برنامه
توسعه دهندگان و برنامه نویسان برنامه های کامپیوتری همواره با خطاهایی ( )errorمواجه
بوده اند که ذاتی و مخرب نیستند ،اما باعث اختالل در عملکرد برنامه می شوند.
این خطاها به سه دسته تقسیم می شوند:
• سرریز شدن بافر
()buffer overflow
• واسطه گری ناقص
()incomplete mediation
• خطاهای زمان بررسی تا زمان استفاده
()time-of-check to time-of-use errors
12
خطاهای برنامه -سرریز شدن بافر
این خطا را می توان با جادادن 2لیتر آب در ظرفی 1لیتری معادل دانست که در اثر این کار
مقداری آب همواره هدر می رود.
تعریف:
یک بافر فضایی برای ذخیره داده است ،که در حافظه قرار گرفته است.
از آنجا که ظرفیت حافظه محدود است ،ظرفیت بافر نیز محدود می باشد.
معموال در برنامه نویسی ها ،در ابتدا ظرفیت بافر مشخص می شودکه این خطا ایجاد نشود.
13
خطاهای برنامه -سرریز شدن بافر
مثال:
]Char sample [10
با این دستور در حافظه آرایه ای با 10عنصر در نظر گرفته شده که از ] sample [0تا
] sample [9می باشد.
دستور زیر باعث بروز خطا در برنامه می شود؛ زیرا ] sample [10در محدوده آرایه قرار ندارد.
’Sample [10] = ‘B
14
خطاهای برنامه -سرریز شدن بافر
قطعه کد زیر را در نظر بگیرید:
)For (i=0; i<=9 ; i++
;’sample [i] = ‘A
’Sample [10] = ‘B
در این حالت مانند مثال قبل به دلیل سرریز شدن بافر ،خطا رخ می دهد.
شکل زیر مکان هایی که یک بافر ممکن است در آنها سرریز کند را نشان می دهد:
15
خطاهای برنامه -سرریز شدن بافر
16
خطای برنامه -سرریز شدن بافر
نکات امنیتی:
یک فرد حمله کننده می تواند از خطاهای غیرمخرب مانند سرریز شدن بافر ،برای آسیب زدن و
ایجاد نقص استفاده کند.
یک حمله کننده می تواند از دو حالت آخر در شکل های قبل برای قرار دادن داده های خود و
بر هم زدن روند کار سیستم استفاده نماید.
دو حمله رایج که معموال در اثر سرریز شدن بافر اتفاق می افتد به صورت زیر است:
17
خطای برنامه -سرریز شدن بافر
حالت اول:
یک حمله کننده می تواند کدهای خود در محدوده فضای سیستم قرار دهد.
از آنجا که سیستم عامل نسبت به برنامه های عادی دارای اولویت باالتری است ،یک حمله
کننده می تواند با تغییر هویت خود به سیستم عامل ،هربرنامه ای را با یک نقش پررنگ اجرا
نماید.
بنابراین با قرار دادن کدهایی در فضای سیستم و با اجرای آنها توسط سیستم عامل که کنترل آن
در دست حمله کننده است ،برنامه های وی اجرا می شود.
18
خطای برنامه -سرریز شدن بافر
حالت دوم:
یک حمله کننده می تواند از اشاره گر پشته ( )stack pointerاستفاده نماید.
اجرای زیرفرایند ها معموال با استفاده از پشته صورت می گیرد.
در این حالت ،داد ها و آدرس مربوط به هر زیر فرایند در باالی پشته قرار گرفته و اشاره گر
پشته به آن اشاره می کند.
یک حمله کننده می تواند با قرار دادن برنامه های خود در پشته و ایجاد حالت سرریز ،و نیز
تغییر در اشاره گر آن ،باعث اختالل در سیستم شود.
19
خطای برنامه -سرریز شدن بافر
نوع دیگری از سرریز شدن بافر زمانی است که مقدارهایی به عنوان پارامتر به یک روتین ،بخصوص
یک صفحه وب ارسال می شوند.
http://www.somesite.com/subpage/userinput.asp?parm1=(808)555-1212 &parm2=2009Jan17
در مثال باال ،عدد 1212-555به عنوان پارامتر 1به صفحه وب ارسال می شود.
در اینجا عددی با طول بزرگ تر را به عنوان پارامتر ارسال نمود که این باعث خطا در سیستم می شود.
در بسیاری از برنامه ها برای طول ورودی ها معموال محدودیت هایی قرا می دهند.
ارسال داده های با طول بیش از حد مجاز نوعی از سرریز شدن بافر است ،که تأثیری بیشتر از حالت های
قبل ندارد.
20
خطای برنامه – واسطه گری ناقص
تعریف:
در مثال اسالید قبل ،پارامتر 2به نوعی بیانگر تاریخ است که دارای فرمت مشخصی می باشد.
برای جلوگیری از وارد کردن مقادیر غیر مجاز یا خارج از محدوده ،می توان شرطی تعیین نموده و یا از
منوهای بازشونده استفاده نمود .مثال جلوگیری از وارد نمودن 2048Min32به جای تاریخ صحیح.
اگر برنامه نویس این تمهیدات را برای جلوگیری از خطا در سمت مشتری بکار برده و آدرس صحیحی
شبیه مثال اسالید قبل تولید شود ،اما در هنگام ارسال به سرویس دهنده مقادیر به صورت دستی توسط
مخربی تغییر داده شوند ،سرویس دهنده متوجه نمی شود که این مقدار در سمت مشتری این گونه وارد
شده یا در بین راه تغییر کرده است!!
به مشکل بیان شده واسطه گری ناقص می گویند.
21
خطای برنامه – واسطه گری ناقص
نکات امنیتی:
واسطه گری ناقص راه آسانی برای سوء استفاده کردن است.
گرچه این روش کمتر از سرریز شدن بافر مورد توجه است ،اما داده های استباه می توانند به راحتی
تهدیدهای جدی ایجاد کنند.
یک مورد که در این زمینه به در دنیای واقعی اتفاق افتاد ،در مورد وب سایت Thingsبود .این سایت که
به منظور خرید آنالین و سفارش بکار گرفته می شد ،با این روش مورد دزدی واقع شد URL .زیر
اطالعات خرید یک مشتری است.
http://www.things.com/order.asp?custID=101&part=555A&qy=20&price=10&ship=boat&shipcost=5&total=205
در این عبارت می توان با تغییر 205به 25همان مقدار کاال را با قیمتی بسیار پایین تر خریداری نمود.
22
خطای برنامه – خطای زمان بررسی تا زمان استفاده
تعریف:
کنترل دسترسی ،قسمتی مهم و اساسی در امنیت کامپیوتر است.
در کنترل دسترسی ،هر نوع دسترسی به برنامه ها باید توسط عاملی به صورت سراسری کنترل شود.
خطای زمان بررسی تا زمان استفاده ،زمانی رخ می دهد که کنترل دسترسی به صورت دائم انجام نشده و
در بین زمان های کنترل ،خطاهایی ایجاد شود.
این خطا مانند زمانی است که خریداری پولی را به فروشنده داده و فروشنده پس از چک کردن آن قصد
دادن رسید به وی را دارد؛ در این زمان خریدار فرصت برداشتن مقداری از پول بدون توجه فروشنده را
دارد.
23
خطای برنامه – خطای زمان بررسی تا زمان استفاده
این خطا برای دسترسی به یک فایل نیز می تواند رخ دهد.
در مثال زیر که یک ساختار داده ای است ،فردی از سیستم تقاضای دسترسی به فایلی با نام my-fileو
انجام عمل ’ change byte 4 to ‘Aرا می نماید.
زمانی که سیستم در حال بررسی نام فایل و چک کردن دسترسی های امکان پذیر به آن است،
یک حمله کننده می تواند نام فایل را به your-fileتغییر دهد.
24
خطای برنامه– خطای زمان بررسی تا زمان استفاده
نکات امنیتی:
مثالی از کنترل دسترسی ناقص ،چک کردن یک عمل و انجام عملی دیگر است.
همواره باید از عدم تغییر نتایج در بین بازه های زمانی اطمینان داشت .راه هایی برای این کار
وجود دارد که شامل موارد زیر است:
• اطمینان از عدم نمایاندن و دسترسی به داده ها در زمان کنترل کردن نوع دسترسی
• عدم وقفه در زمان کنترل
• مقایسه داده های کاربر با داده های اولیه از طریق کپی کردن داده های اولیه و مقایسه جمع تطبیقی
آنها در انتها
25
خطای برنامه -ترکیب این خطاها
خطاهای ذکر شده در قسمت های قبل می توانند در ترکیب با یکدیگر نیز بکار روند.
مثال:
یک مهاجم می تواند با خطای سرریز بافر باعث ایجاد وقفه در کار سیستم شود .در همین
زمان ،وی با استفاده از خطای زمان کنترل تا زمان استفاده ،شناسه ی جدیدی برای خود ایجاد
کرده و با استفاده از خطای واسه گری ناقص ،می تواند امتیازهایی بدست آورد.
26
ویروس ها و برنامه های مخرب دیگر
برنامه ها به خودی خود ،به ندرت ممکن است باعث ایجاد تهدید در سیستم شوند.
از آنجا که داده ها و عملیاتی که روی آنها انجام می شود قابل مشاهده برای افراد نیست ،افراد
خرابکار با ایجاد برنامه هایی به آنها ایجاد دسترسی کرده و تهدید هایی را ایجاد می نمایند.
27
ویروس ها و برنامه های مخرب دیگر -نگرانی در مورد کدهای مخرب
هیچ کس عملی غیرمنتظره را در اجرای برنامه های خود نمی پسندد.
کدهای مخرب با توجه به قصد افراد مخرب ،به صورت غیرمنتظره در سیستم رفتار می کنند.
برنامه های مخرب در قسمت هایی از سیستم مانند کل برنامه و یا قسمتی از برنامه در حال
اجرا ،کمین کرده و عمل مورد نظر خود را انجام می دهند.
چنین موقعیتی ممکن است در زمان نصب برنامه ای بر روی سیستم ایجاد شود؛ در این حالت
تغییرات بسیار زیادی در فایل های موجود در سیستم ایجاد شده ونیز ،کدهای جدیدی در آن
اجرا می شوند ،که کاربر رضایت صریح و مستقیمی از آنها ندارد.
28
ویروس ها و برنامه های مخرب دیگر -نگرانی در مورد کدهای مخرب
.1کدهای مخرب می توانند آسیب زیادی وارد کنند:
کدهای مخرب قادر به انجام هر عملی که توسط دیگر برنامه انجام می شود ،هستند .مانند نوشتن یک متن
در یک کامپیوتر یا متوقف کردن اجرای یک برنامه و ...
همچنین کدهای مخرب می توانند در یک زمان به هیچ وجه کاری انجام ندهند و ناشناخته باقی بمانند؛ اما
پس از یک اتفاق ،مانند گذشت زمان یا اجرای یک برنامه و ...نمایان شوند.
در واقع می توان گفت رفتار برنامه های مخرب مانند رفتار یک بچه دوساله است؛ عمل هایی که وی می
تواند و انتظار می رود انجام دهد مشخص است ،اما گاهی ممکن است عملی خارج از انتظار و ناگهانی
انجام دهد.
کدهای مخرب در واقع هویت کاربر را دارند و هرکاری که او می تواند انجام دهد ،آنها نیز می توانند.
29
ویروس ها و برنامه های مخرب دیگر -نگرانی در مورد کدهای مخرب
.2حضور طوالنی مدت کدهای مخرب در اطراف
کدهای مخرب همواره در اطراف وجود داشته و تأثیرات آنها بسیار نافذ است.
راه های مقابله با کدهای مخرب باید آموخته و برای مقابله با آنها بکار گرفته شود.
30
ویروس ها و برنامه های مخرب دیگر -انواع کدهای مخرب
کد مخرب یا برنامه هرز()malicious code or rogue program
کد مخرب یا برنامه هرز ،نامی کلی برای تأثیرات ناخواسته و غیرمطلوبی است که توسط عامل
هایی با قصد آسیب زدن در برنامه ها ایجاد می شود.
تعریف باال شامل برنامه ها و خطاهایی که به قصد آسیب به سیستم نیستند ،نمی شود؛ گرچه
این خطاها می توانند تأثیراتی منفی داشته باشند.
همچنین تعریف ارائه شده ،برنامه هایی که در ترکیب با برنامه های دیگر آسیب هایی به
سیستم وارد می کنند را شامل نمی شود.
31
ویروس ها و برنامه های مخرب دیگر -انواع کدهای مخرب
ویروس ()virus
ویروس ها برنامه هایی هستند که قابلیت تکثیر خود را داشته و می توانند از یک برنامه
مخرب به یک برنامه عادی انتقال یابند.
نام ویروس به این دلیل است که آنها می توانند خود را به قسمت های سالم چسبانده و باعث
معیوب شدن آنها شوند.
ویروس ها می توانند دو حالت زیر را داشته باشند:
• موقتی و گذرا :این نوع ویروس فقط زمانی که برنامه ای که روی آن قرار دارد ،اجرا شود ،اجرا
می شود.
• پایدار و ثابت :این ویروس در حافظه قرار داشته و بدون توجه به برنامه میزبان ،اجرا می شود.
32
ویروس ها و برنامه های مخرب دیگر -انواع کدهای مخرب
اسب تروجان ()Trojan horse
اسب تروجان یک کد مخرب است که عالوه بر تأثیر اولیه خود ،دارای تأثیر دیگری است که
قابل مشاهده نمی باشد.
مثال:
زمانی که کاربر شناسه و رمز عبور خود را برای ورود به سیستم وارد می نماید؛ در این زمان
این کد مخرب نسخه ای از آن را برای استفاده در زمان های دیگر بر می دارد.
33
ویروس ها و برنامه های مخرب دیگر -انواع کدهای مخرب
بمب منطقی و بمب زمانی ()logic and time bomb
یک بمب منطقی ،کدی مخرب است که وقتی شرایط خاصی ایجاد شود عمل می نماید .همچنین
یک بمب زمانی ،بمبی است که پس از گذشت مدت زمان معین اجرا می شود.
در گریز یا در پشتی ()trap door or back door
در گریز یا در ُپشتی ،حالتی است که فرد میتواند از راهی غیر از راه معمول و شناخته شده ،به
برنامه ای دسترسی داشته باشد.
34
ویروس ها و برنامه های مخرب دیگر -انواع کدهای مخرب
کرم ()worm
کرم ها کدهای مخربی هستند که قابلیت تکثیر خود را داشته و در شبکه عمل میکنند.
تفاوت کرم و ویروس:
• کرم ها در شبکه عمل می کنند؛ اما محل عملکرد ویروس ها درهر رسانه است.
• کرم ها برنامه هایی قابل اجرا به صورت تکی ایجاد می نمایند؛ اما ویروس حتما باید روی برنامه ای
میزبان قرار گیرند.
Rabbit
یک rabbitبرنامه ای مخرب مانند کرم یا ویروس است که خود را بدون هیچ محدودیتی تکثیر کرده
وهدفش هدر دادن منابع است.
35
ویروس ها و برنامه های مخرب دیگر -نحوه اتصال ویروس ها
یک ویروس به خودی خود نمی تواند اجرا شود ،بلکه نیاز به یک عامل انسانی دارد که با
شروع عملی ،باعث فعال شدن ویروس شود.
مثال :قرار دادن سی دی ویروسی در دستگاه و ...
پس از فعال شدن ویروس اولیه ،ویروس هایی که از آن تکثیر شده اند به راحتی فعالیت خود
را شروع می کنند.
بسیاری از ویروس ها به ایمیل ضمیمه می شوند؛ در این حالت مخرب فایلی را به ایمیل
ضمیمه کرده و گیرنده را متقاعد می کند آن را باز کند که با این کار ویروس منتشر می شود.
36
ویروس ها و برنامه های مخرب دیگر -نحوه اتصال ویروس ها
ویروس های الحاق شده
در این حالت ،ویروس قبل از اجرای یک برنامه خود را به آن ملحق کرده و هر زمان برنامه
اجرا می شود ،ویروس نیز اجرا می شود.
37
ویروس ها و برنامه های مخرب دیگر -نحوه اتصال ویروس ها
ویروس هایی در اطراف برنامه
در این حالت برنامه پس از فراخوانی برای وجود ویروس ،کنترل می شود .بنابراین یک مخرب
پس از کنترل شدن آن و قبل از اجرا ،ویروس رابه آن ملحق می کند.
38
ویروس ها و برنامه های مخرب دیگر -ویروس های اسناد
معمول ترین حالت که با آن مواجهیم ،قرار گرفتن ویروس ها در اسنادی مانند پایگاه داده ها،
عکس ها ،اسالید و ...است
در این حالت این سند ترکیبی از داده هایی مانند حرف و عدد و نیز،
command
هایی مانند
فرمول و زبان برنامه نویسی است.
یک مخرب می تواند کدهای خود را در
اجرا شود.
command
ها قرار دهد که با اجرای سند ،ویروس نیز
39
ویروس ها و برنامه های مخرب دیگر -روش گرفتن کنترل توسط ویروس ها
یک ویروس ( )Vمی تواند با استفاده از راه های زیر ،به جای یک برنامه ( )Tفراخوانی شود:
• ویروس خود را جای برنامه قرار می دهد و می گوید «»I am T
• ویروس برنامه را حذف کرده و می گوید «»call me instead of T
• ویروس به راحتی خود را به جای برنامه قرار داده و می گوید «»invoke me
یک ویروس می تواند کنترل را بدست گیرد .این امر در دو حالت امکان پذیر است:
• تصاحب فضای یک برنامه در یک فایل
• عوض کردن مکان اشاره گر و تغییر آن به سمت خود
شکل بعد این موضوع را نشان می دهد:
40
ویروس ها و برنامه های مخرب دیگر -روش گرفتن کنترل توسط ویروس ها -ادامه
41
هدف کدهای مخرب – دَر گریز
در گریز ،همانطور که در اسالیدهای قبل گفته شد ،یک راه ورود به ماژول است که جایی ذکر
نشده است.
دالیل نیاز به در گریز:
• برای تست کردن ماژول
• اجازه دسترسی در صورت از بین رفتن ماژول در آینده
• اجازه دسترسی در صورت استفاده ماژول در تولید
• ....
42
هدف کدهای مخرب – دَر گریز
برای تست یک جزء به تنهایی باید از stubو driverاستفاده نمود که در شکل زیر نشان داده شده است؛
در این حالت برای هر جزء باید ورود و خروج جداگانه وجود داشته باشد.
در این شکل driver ،MAINو OUTPUT ،SORTو stub ، NEWLINEهستند.
43
هدف کدهای مخرب – دَر گریز
44
هدف کدهای مخرب – حمالت
حمله salami
در این حمله ،ار بیت های به ظاهر بی اهمیت استفاده شده و با ترکیب آنها ،نتایج ارززشمندی گرفته می شود.
این بیت ها در نظر افراد ،مانند مقادیر خرد پول هستند که در نظر گرفته نمی شوند.
حمله
man in the middle
در این حمله ،عاملی بین دو موجودیت ،که غالبا ورودی افراد و یک برنامه هستند قرار گرفته و باعث اختالل
در این ارتباط می شوند.
حمله
timing
در این حمله با تخمین اندازه ورودی و حدس زدن آن ،با توجه به زمان مورد استفاده برای آن ،و استفاده از آن
در جاهایی مثل رمزنگاری ،حمله صورت می گیرد.
45
هدف کدهای مخرب – حمالت
حمله covert channel
در ابن حمله ،اطالعات از یک منبع
اطالعاتی به روشی که دیگران متوجه نشوند،
خارج شده و به عبارت دیگر نشت می کنند.
شکل این حالت را نشان می دهد:
46
کنترل هایی علیه آسیب پذیری ها
از آنجا که همواره پیشگیری بهتر از درمان است ،بهتر است کنترل هایی برای جلوگیری از تهدیدهای
سیستم وجود داشته باشد.
کنترل ها به سه دسته کلی تقسیم می شوند:
• کنترل های توسعه ای
• کنترل های سیستم عامل
• کنترل های مدیریتی
کنترل های توسعه ای ،کنترل هایی هستند که در زمان ایجاد و توسعه برنامه که شامل عملیات
مشخص کردن ،طراحی ،ساخت و تست است ،اعمال می شوند.
47
کنترل هایی علیه آسیب پذیری ها
پیمانه ای بودن ،محفوظ بودن و پنهان کردن اطالعات
پیمانه یا ،moduleواحدهای مستقل کوچکی در طراحی و کد هستند که وجود آنها در سیستم در توسعه و
حفظ امنیت آن نقش دارد .زیرا امکان توسعه دادن و یا اعمال شرایط امنیتی روی یک ماژول ساده تر
است.
اگر ماژولی به صورت جدا از ماژول های دیگر نگهداری شود ،ردیابی و امکان یافتن خطا و نیز رفع آن
ساده تر است؛ زیرا در این حالت تغییرات اعمال شده به دیگر ماژول ها منتقل نمی شود .به این حالت
محفوظ بودن یا encapsulationمی گویند.
مزیت دیگر پیمانه ای بودن ،اختفای اطالعات است؛ زیرا در این حالت هر ماژول اطالعات پیاده سازی و
طراحی خود را از دیگران مخفی می نماید و هنگام تغییرآن ،قسمت های دیگر طراحی تغییری نمی کنند.
48
کنترل هایی علیه آسیب پذیری ها
پیمانه ای کردن یا
modularization
پیمانه ای کردن عمل تقسیم یک taskبه زیر taskها است .شکل زیر این فرایند را نشان می دهد:
49
کنترل هایی علیه آسیب پذیری ها
پیمانه ای کردن یا - modularizationادامه
یک پیمانه باید دارای پیوستگی باال ( )cohesionو همبستگی ( )couplingپایین باشد .همبستگی میزان
وابسته بودن یک ماژول به دیگری است .شکل زیر این مورد را نشان می دهد:
50
کنترل هایی علیه آسیب پذیری ها
پیمانه ای کردن یا - modularizationادامه
در اختفای اطالعات ماژول مانند یک جعبه سیاه عمل می کند؛ در این حالت توسعه دهندگان دیگر ،نیازی
به دانستن چگونگی عمل کردن این ماژول ندارند ،زیرا مطمئن هستند که کار خود را به درستی انجام می
دهد .شکل زیر اختفای اطالعات را نشان می دهد:
51
کنترل هایی علیه آسیب پذیری ها -تست کردن
تست کردن ،فرایند کنترل کیفیت نرم افزار است که انواع زیر را دارد:
• تست واحد ،که در آن هر ماژول به تنهایی تست شده و هدف این است که با دادن ورودی مناسب،
دریافت خروجی مورد نظر تضمین شود .به عیارتی هر ماژول به تنهایی درست عمل نماید.
• تست مجتمع ،که در آن عملکرد ماژول ها در ارتباط با یکدیگر سنجیده شده و همکاری آنها مدنظر
است.
• تست عملیاتی ،که در آن عملکرد سیستم تست می شود .به عبارتی در این تست بررسی میشود که آیا
سیستم در شرایط مشخص عملکرد مورد نظر را دارد یا خیر.
• تست مقبولیت ،که در آن بررسی می شود سیستم طراحی شده با توجه به خواسته های کاربر ،مورد
قبول وی هست یا نه .خروجی این تست سیستم پذیرفته شده از نظر کاربر است.
52
کنترل هایی علیه آسیب پذیری ها -تست کردن
• تست نصب ،که در آن بررسی می شود که سیستم پس از نصب در محل مورد نظر ،عملکرد مورد
نظر را دارد یا خیر.
• تست رگرسیون ،که بررسی می کند پس از اعمال تغییراتی در سیستم ،عملکرد قسمت های مختلف
تغییر نکرده و همانطور باقی مانده باشد.
همه تست های گفته شده به دو دسته کلی زیر تقسیم می شوند:
•
Black box test
در این حالت محتوا و داخل سیستم برای تست کننده ها مشخص نبوده و تنها بررسی می کنند که
ورودی مشخص ،خروجی درستی داشته باشد
•
Clear box test or white box
در این حالت تست کننده ها ،طراحی و کدهای سیستم را نیز مورد بررسی قرار می دهند.
53
کنترل هایی علیه آسیب پذیری ها
انواع دیگر تست کردن:
تست مستقل:
در این تست ،توسعه دهنده نیاز به مخفی کردن چیزی از ماژول نداشته و تغییرات به زیر سیستم
ها انتقال نمی یابند.
تست نفوذ:
در این حالت ،توسعه دهنده به جای بررسی آنچه سیستم باید انجام دهد ،سیستم را در حالت شکست می
دهد .در این حالت او بررسی می کند که سیستم کاری که نباید را انجام می دهد یا خیر.
54
H.M.Hassanzade, [email protected]
55
پایان