|
نقصهای شیوه تدافعی پرمنفذ در برنامه نویسی
(1388/04/03)
|
|
|
لیست 25 خطای برنامه نویسی خطرناک که در سال 2009 توسط موسسه CWE/Sans منتشر شده است، در واقع لیستی شامل برجسته ترین و مهمترین ضعفهای برنامه نویسی میباشد که میتوانند باعث بوجود آمدن آسیب پذیریهای نرمافزاری جدی شوند. این خطاها بسیار خطرناک هستند، چون اغلب به مهاجمان اجازه میدهند کنترل کاملی روی نرمافزار داشته باشند، دادهها را سرقت کنند یا بطورکامل نرمافزار را از کار بیاندازند . این لیست حاصل همکاری موسسات Sans، Mitre و بسیاری از کارشناسان امنیت نرمافزار در آمریکا و اروپا میباشد. Mitre با همکاری اداره آمریکایی امنیت فضای سایبر، وظیفه نگهداری از وب سایت CWE را برعهده دارد. در این وب سایت، توصیف کاملی از این 25 ضعف برنامه نویسی بهمراه روشهای معتبری برای کاهش و یا بطور کلی اجتناب از این ضعفها آورده شده است. این لیست میتواند بعنوان یک ابزار خوب برای آموزش و آگاهی رسانی به برنامه نویسان، مشتریان و مدیران نرمافزار و به هدف جلوگیری از انواع آسیب پذیریهای آزار دهنده صنعت نرمافزار بکار رود.
|
|
|
معرفی
لیست 25 گانه ضعفهای نرمافزاری به سه دسته کلی و سطح بالا تقسیم میشود و هر ضعف در یکی از این سه دسته قرار میگیرد. این سه دسته عبارتند از:
1- تعامل ناامن بین اجزا
2- مدیریت مخاطره آمیز منابع
3- روشهای تدافعی پرمنفذ
در این مقاله ضعفهای نرمافزاری دسته سوم، مورد بررسی قرار میگیرند. برای بیان هر ضعف، مشخصات و فیلدهایی فراهم شده است که در ذیل معرفی میشوند.
1- شماره شناسه و نام ضعف
2- فیلدهای داده ای پشتیبان: اطلاعات خلاصه و مکمل در رابطه با ضعف
• درجه شیوع: کثرت وقوع ضعف در نرمافزاری که هیچ مکانیزم امنیتی در آن گنجانده نشده است.
• نتایج: نتایج واقعی سوءاستفاده از یک ضعف مانند اجرای کد ، حمله رد سرویس و یا فقدان داده
• بسامد حمله: تعداد دفعات وقوع ضعف در آسیب پذیریهای که مورد سوء استفاده مهاجم قرار میگیرد.
• سهولت کشف: تا چه حد کشف ضعف برای مهاجم ساده است.
• هزینه بازیابی: برای رفع ضعف چقدر تلاش و هزینه لازم است.
• آگاهی مهاجم: احتمال اینکه مهاجم از یک ضعف خاص، متدهای کشف و روشهای سوءاستفاده از آن آگاه باشد چقدر است.
3- شرح: توصیفی کوتاه از ضعف و نتایج آن
4- پیشگیری و ممانعت : تکنیکهایی در جهت کاهش و یا حذف ضعفگاهی چند ضعف با هم ترکیب میشوند تا دفاع عمقی تری را فراهم کنند.
5- ضعفهای مرتبط: ضعفهای مرتبط با یک ضعف خاص
6- الگوهای حمله مرتبط: شماره Capec حملاتی که ممکن است بر علیه ضعف با موفقیت انجام شوند. این لیست الزاما کامل نیست.
مدیریت مخاطره آمیز منابع :
همانطور که گفته شد در این مقاله فقط ضعفهایی که در دسته سوم قرار میگیرند، بررسی میشوند.
کنترل دسترسی نامناسب(اعطای مجوز ) :CWE-285
CWE-327 : استفاده از الگوریتمهای رمزنگاری پرمخاطره یا شکسته شده
CWE-259 : کلمه عبور کد شده
CWE-732 : واگذار کردن مجوز نا امن برای منابع مهم
CWE-330 : استفاده از مقدارهای تصادفی نامناسب
CWE-250 : اجرا با حقوق دسترسی بیش از حد لزوم
CWE-602 : Client-Side Enforcement of Server-Side Security
کنترل دسترسی نامناسب(اعطای مجوز ) :CWE-285
بالا درجه شیوع
عبور امنیتی نتایج
پایین تا متوسط هزینه بازیابی
متوسط سهولت کشف
اغلب بسامدحمله
بالا آگاهی مهاجم
شرح
فرض کنید که شما میزبان یک تعدادی از دوستان ومیهمانان هستید همه را به اتاق نشیمن دعوت کرده و زمانی که در حال رسیدگی به دوستان خود هستید یکی از مهمانان ناگهان به قسمتهای خصوصی منزل شما میرود و مثلا به بررسی آنچه را که شما در اتاق خواب پنهان کرده اید میپردازد نرمافزارها با مشکلات اعطای مجوز مشابه مواجه میشوند که میتواند به نتایج وخیم منجر شود اگر شما مطمئن نباشید که کاربران نرمافزار شما فقط به قسمتهای مجاز دسترسی دارند نفوذگران تلاش میکنند از اعطای مجوزهای بیجای شما استفاده کرده و به قابلیتهایی که شما فقط برای کاربران محدودی در نظر داشته اید دسترسی پیدا کنند.
پیشگیری وممانعت
زمان طراحی
اثر حمله با نگاشت دقیق رلها با دادهها و قابلیت کاهش پیدا میکند برنامههای کاربردیتان را به نواحی بی نام ،معمولی ، ممتاز و اجرایی تقسیم کنید.از RBAC برای اجرای رلهادر مرزهای مناسب استفاده کنید.
توجه داشته باشید که این متد ممکن است در برابر اعطای مجوز افقی محافظت نکند و هم چنین یک کاربر را از حملات دیگر با رلهای مشابه محافظت نخواهد کرد
مطمئن باشید که شما بررسیهای کنترل دسترسی که وابسته به منطق تجاریتان است را انجام میدهید این ممکن است از بررسیهای کنترل دسترسی که شما برای منابعی که منطق تجاریتان راحمایت میکنند به کار میبرید متفاوت باشد.
از چهارچوب های اعطای مجوز مثل چهارچوب اعطای مجوز JAAS و کنترل دسترسی OWASP ESAPI
استفاده کنید.
برای برنامههای کاربردی تحت وب مطمئن باشید که که مکانیزمهای کنترل دسترسی به طور صحیح در طرف سرور روی هر صفحه اجرا شده است.کاربران نباید بتوانند به اطلاعاتی که مجاز به دسترسی مستقیم و راحت به آن صفحه نیستند دسترسی داشته باشند. یک روش برای انجام این کار این است که مطمئن باشیم همه ی صفحات شامل اطلاعات حساس ذخیره نشده اند و دسترسی همه آن صفحات محدود است به درخواستهایی که از طرف کاربرانی که مجوز دسترسی دارند و همراه با توکن نشت احراز هویت شده هستند.
زمان پیکربندی سیستم
ازتوانایی کنترل دسترسی سیستم عاملتان و محیط سروراستفاده کنید. لیستهای کنترل دسترسیتان را معیین کنید
و همچنین از سیاست انکار پیش فرض در موقع تعریف این ACLها استفاده کنید.
ضعفهای مرتبط
.....
مشاهده ضميمه
ارسال کننده :محمد آراسته - مركز آپاي دانشگاه يزد
کلمات کليدي :
کنترل دسترسی نامناسب(اعطای مجوز ) , استفاده از الگوریتمهای رمزنگاری پرمخاطره یا شکسته شده , کلمه عبور کد شده , واگذار کردن مجوز نا امن برای منابع مهم, استفاده از مقدارهای تصادفی نامناسب, اجرا با حقوق دسترسی بیش از حد لزوم, Client,Side Enforcement of Server,Side Security
|