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