owasp top 10 2007 persian

51
OWASP TOP 10 دﻩ ﭘﺬﻳﺮﯼ ﺳﻴﺐ ﻣﻬﻢ اﻣﻨﻴﺘﯽ ﻧﺮم وب ﺗﺤﺖ اﻓﺰارهﺎﯼ ﻣﺘﺮﺟﻤﻴﻦ: ﻣﻮﺳﻮي ﻣﻴﺘﺮاcom . gmail @ mousavi . mitra آﻧﺎﻫﻴﺘﺎ ﻃﺎﻫﺮيcom . gmail @ taheri . ana ﺳﭙﺎس ﺑﺎ از: ﻓﻮﻻدي، CISSP ﺑﻬﺮﻧﮓ2007 UPDATE © 2002-2007 OWASP Foundation This document is licensed under the Creative Commons Attribution-ShareAlike 2.5 license

Upload: owasp-iran

Post on 12-Jun-2015

990 views

Category:

Documents


12 download

TRANSCRIPT

Page 1: OWASP Top 10 2007 Persian

OWASP TOP 10

افزارهای تحت وبنرم امنيتی مهمسيب پذيری آده

:مترجمين

[email protected]ميترا موسوي

[email protected] طاهري آناهيتا

: ازبا سپاس

بهرنگ CISSP، فوالدي

2007 UPDATE © 2002-2007 OWASP Foundation

This document is licensed under the Creative Commons Attribution-ShareAlike 2.5 license

Page 2: OWASP Top 10 2007 Persian

فهرست مطالب

2 ..................................................................................................................................................................فهرست مطالب

3 .................................................................................................................................................................................مقدمه

5 ...............................................................................................................................................................................خالصه

6 .....................................................................................................................................................................روش شناسي

A1 - Cross Site Scripting (Xss) .............................................................................. 10-ياسكريپت بين سايتاجراي

A2 - Injection Flows ............................................................................................................... 14 -ضعف هاي تزريقي

A3 - Malicious File Execution ............................................................................................. 18 -اجراي فايل مخرب

A4 - Insecure Direct Object Reference ................................................................. 22 – شي مستقيم بهناامنارجاع

A5 - Cross Site Request Forgery (CSRF) ............................................................ 26 -جعل درخواست بين سايتي

A6 - Information Leakage and Improper Error Handling ...... 30 -نشت اطالعات و مديريت خطاي نادرست

A7 - Broken Authentication and Session Management ................. 32 -احراز هويت و مديريت نشست ناقص

A8 – Insecure Cryptographic Storage ............................................................. 37 -انباره محافظت نشده رمزنگاري

A9 – Insecure Communication .................................................................................................. 40 – ناامنات ارتباط

URL- A10 – Failure to Restrict URL Access ........................................ 43كوتاهي در محدود كردن دسترسي به

46 ......................................................................................................................................................................مقصد نهايي

49 .................................................................................................................................................................................منابع

Page 3: OWASP Top 10 2007 Persian

مقدمه

هاي تحـت نرم افزارآسيب پذيري هاي مهم ترين بازنويسي شده،به طور كلي اين نسخه! خوش آمديدOWASP Top 10به

.را براي اطالعات بيشتر ارائه مي دهد آن ها بحث مي كند و منابعي ازو درباره چگونگي حفاظت كرده فهرستاوب ر

هدف

ترين آسيب پذيري هـاي امنيتـي نـرم افزارهـاي تحـت وب بـه برنامـه رايجهايمداآموزش پي OWASP Top 10هدف اوليه

ارائه اين آسيب پذيري هافظت در مقابل احم براي روشهاي اساسي را Top 10. باشدنويسان، طراحان، معماران و سازمان ها مي

.براي برنامه نويسي امن شروعي -مي دهد

هر سال تغيير پيـدا مـي كنـد و Top 10. يكبار امن كردن كدها ناكافي استصرفا. امنيت رويدادي نيست كه يكباره اتفاق بيفتد

.دنند آسيب پذير باشنتحت وب مي توااي هبدون تغيير كدها، نرم افزار

صـورت ب امـن تنهـا در و تحـت هـاي نرم افزار . برنامه نويسي امن بايد در تمامي مراحل چرخه حيات برنامه مد نظر قرار بگيرد

حداقل سيصد پيامد امنيتـي . حاصل مي گردد ... و در تمامي مراحل اعم از طراحي، توسعه و امن SDLCبكارگيري از مكانيزم

را خواندن ان و به آن اشاره شده است OWASP GUIDEد كه به تفصيل در ن تحت وب را تحت تاثير قرار ميدههاينرم افزار

. مي كنيمتوصيه نرم افزارهاي تحت وب به برنامه نويسان

سياست يا استاندارد بـدون يك لطفا اين مستند را به عنوان . يك استاندارد فقط نه استمونه آموزشي اين مستند اولين و بهترين ن

OWASPي برنامه نويـسي امـن احتيـاج داريـد، برا اگر به سياست يا استانداردي . به طور رسمي قبول نكنيد با ما صحبت اوليه

. دارداقدامها و سياستهاي برنامه نويسي امن را در دست داستاندارورد ي در مپروژه هاي

قدرداني

. تـشكر مـي كنـيم CVE براي ارائه رايگان و قابل دسترس آسيب پـذيري هـا در MITRE از

.شود ايت مي رهبري و حمAspect Securityتوسط 10OWASP TOPپروژه

)OWASPمدير اجرايي بنياد (Andrew van der Stock: مدير پروژه

)OWASPرئيس كنفرانس (Dave Wichers و )OWASPرئيس بنياد (Jeff Wiliams: ساير نويسندگان

: و همچنين تشكر مي كنيم از

٢

Page 4: OWASP Top 10 2007 Persian

OWASP Top 10 2007

Raul Endres : بخاطر مساعدت در تهيهTOP 10با توضيحات ارزشمندش

Steve Christery (MITRE) : براي تجديد نظر دقيق و افزودن اطالعاتMITRE CWE

Jeremiah Grossman (Wite Hat Security) : به خاطر تجديد نظر دقيق و ارائـه اطالعـات در بـاره موفقيـت

ابزار تشخيص خودكار

Sylvan von Stuppe :بخاطر تجديد نظر دقيق و شايان توجه

Colin wrang ، Nigel Evans ، Andre Gironda و Neil Smithline: براي توضـيحات موثرشـان از طريـق

email

٣

Page 5: OWASP Top 10 2007 Persian

خالصه

بين سايتياجراي اسكريپتA1-Cross Site Scripting

د كه نـرم افزارهـاي تحـت وب داده هـاي ورودي كـارير را ن زماني روي مي دهXSSضعفهاي بـه XSSضـعفهاي . مرورگر وب ارسال مـي كنـد كردن به encodeبدون اعتبارسازي اوليه يا

Session و اقـدام بـه دادهمهاجمين اجازه اجـراي اسـكريپت هايـشان را در مرورگـر قربـاني

Hijacking ، Web site Deface يا انتشار Worm كنندهاي تحت وب مي .

ضعف هاي تزريقيA2-Injection Flaws

ــعفهاي تزريقـــي بـــويژه تزريـــق آســـيب پـــذيري هـــاي رايـــج از جملـــهSQLضـتزريق هنگامي كـه داده ورودي كـاربر بـه عنـوان بخـشي از . باشند نرم افزارهاي تحت وب مي

بــــه مفــــسر فرســــتاده مــــي شــــود، اتفــــاق (query)دســــتور يــــا پــــرس و جــــو دسـتورات يـا تغييـر دادن اجراي غيرعمدي را براي ورودي هاي مخرب مهاجم، مفسر . مي افتد

.هدداده ها فريب مي د

اجراي فايل مخربA3-Malicoious File Execution

اجازه الحـاق داده هـا و آسيب پذيراست و به مهاجم RFIبرنامه در برابر الحاق فايل از راه دور حمالت . مي شود سروردهد كه سبب ايجاد حمالت مخرب مانند نفوذ به كدهاي مخرب را مي

كه فايل يا نام فايل را از كاربر و هر ساختاري PHP، XMLمبتني بر كد مخرب با الحاق فايل . تحت تاثير قرار مي دهد،دريافت مي كند

objectارجاع محافظت نشده مستقيم به

A4-Insecure Direct Object Reference

بـه reference ارجـاع يـا هنگامي رخ مي دهد كه برنامه نويس يك objectارجاع مستقيم به يـا URLپوشه، ركورد پايگاه داده يا كليد را به عنـوان پـارامتر مانند فايل، ارشي داخلي نرم افز

را براي دستيابي غير مجاز به referenceمهاجمين مي توانند اين . فرم در دسترس قرار مي دهد .كاري كند هاي نرم افزار دستobjectساير

جعل درخواست بين سايتيA5-Cross Site Request

Forgery(CSRF)

كند كه عمل مرورگر وب قرباني احراز هويت شده را به صفحه وبي هدايت مي ، CSRFحمله ميـزان خطـر حملـه . انجـام مـي دهـد را كاربر emailمانند تغيير آدرس مخرب دلخواه مهاجم

CSRFكه نرم افزار آسيب پذير در اختيار كاربر قرار مي دهد وابسته به قابليت هايي است .

و مديريت خطاي نادرستنشت اطالعاتA6-Information Leakage and

Improper Error Handling

نشت اطالعات درباره پيكربندي، طرز كار داخلي يـا داراي ند به طور غيرعمدي نرم افزار مي توا مهاجمين از اين ضعف بـراي . مشكالت مختلف نرم افزاري باشد علتنقض حريم خصوصي به . اجراي حمالت خطرناكتر استفاده مي كنندسرقت داده هاي حساس يا

احراز هويت و مديريت نشست ناقصA7-Broken Authentication and

Session Management

هاي نشست اغلب اوقـات بـه خـوبي محافظـت نمـي tokenاعتبارنامه هاي حساب كاربري و هـاي tokenذرواژه هـا، كليـدها يـا به اين ترتيب مهاجمين مي توانند با بدست آوردن گ . شوند

. اربران سوءاستفاده كنندز هويت كاحراز هويت ا

انباره محافظت نشده رمزنگاريA8-Insecure Cryptography

Storage

نرم افزار تحت وب به ندرت از توابع رمزنگاري جهت حفاظت از داده ها و اعتبارنامه ها استفاده يي كه بصورت ضعيف محافظت مي شوند بـراي ربـودن هويـت و مهاجمين از داده ها . مي كنند

.ديگر جرائمي مثل جعل كارت هاي اعتباري استفاده مي كنند ارتباطات محافظت نشده

A9-Insecure Communication فاظت از ارتباطـات ح براينرم افزار هاي تحت وب علي رغم ضرورت رمزنگاري ترافيك شبكه

. ي كنند كوتاهي مامرحساس، در اين كوتاهي در محدود كردن دسترسي به

URL A10-Failure To Restrict URL

Access

URLنرم افزار ها جهت محافظت از عملكردهاي حساس تنها پيشگيري از نمايش لينـك هـا و URLا دسترسي مستقيم بـه بها را براي كاربران غير مجاز به كار مي گيرند در حاليكه مهاجمين

. دسترسي و انجام كارهاي غير مجاز استفاده كنندبراي از اين ضعف ها مي توانند 2007 آسيب پذيري برتر نرم افزارهاي تحت وب در سال 10: 1جدول

٤

Page 6: OWASP Top 10 2007 Persian

OWASP Top 10 2007

روش شناسي

خالصه حاصلو كرديم دريافت MITRE را از 2006روند آسيب پذيري هاي سال : ساده بودTOP 10 2007روش ما براي

.پيش رو است تحت وب زارهاينرم افامنيت TOP 10آن

:مي باشدبه بندي شامل نمودار زير رتنتايج

)2(نمودار :2006 تحت وب در سال نرم افزارهاي درباره ده مورد آسيب پذيري MITREداده هاي

2006 آسيب پذيري برتر نرم افزارهاي تحت وب در سال 10 در مورد MITREاطالعات : 2شكل

هايمان تـالش كـرده ايـم ولـي در تبديل به عناوين سرفصل MITREفظ يكايك داده هاي آسيب پذيري اوليه اگر چه ما در ح

در MITREاوليـه اگر عالقه مند بـه داده هـاي . ها را براي ترسيم دقيق تر علت هاي اساسي تغيير داده ايم بعضي از طبقه بندي

.بيابيد OWASP TOP 10سايت در Excelآن را بصورت فايل مي توانيد هستيد 2006 پايان سال

بـر روي Ruby تحـت وب مثـل نـرم افزارهـاي فظت هاي توصيه شده راه حل هايي را براي متداولترين ساختارهاي احمتمامي

Rails يا Perl دادتطابق اين نرم افزارها با نيازهاي خاصمتناسببا توصيه هاي به آساني را مي توان .

را حذف كرده ايم؟چرا برخي موضوعات مهم

نـرم ياري از و از اساسي ترين مشكالت امنيتي بس زي نشده يكي از چالش هاي مهم براي هر گروه برنامه نويسي ورودي معتبرسا

ورودي هاي معتبر را به عنوان بخشي ، مطالب در حقيقت، بسياري از آيتم هاي موجود در فهرست . افزارهاي تحت وب مي باشد

ورودي متمركز به عنوان بخـشي از نـرم افـزار تحـت وب به ايجاد يك مكانيزم معتبرسازي شديدا ما . كنند از راه حل معرفي مي

: مطالعه كنيدOWASPرا در سايت ها معتبرسازي داده مشروحه زير درخصوص براي اطالعات بيشتر مقاالت . مي كنيمتوصيه

Validation_Data/php.index/org.owasp.www://http

٥

Page 7: OWASP Top 10 2007 Persian

Validation_Data_for_Testing/php.index/org.owasp.www://http

اري بـس يهايري پـذ بيسـ آه عنوان ب Format string وBuffer overflows ، Integer overflows يامدهايپ

ـ اي براياصالحات. شوندي ميتلق ++C اي C ماننديي نوشته شده به زبانهاي برنامه هاي برايجد امـدها ي گونـه پ ني

ارائه يسي زبان برنامه نويو فروشندگان ابزارها CERT و SANS مثلي وبري غي برنامه هايتي امني انجمن هالهيبوس

باشد، ري پذبيآس buffer overflows كه احتمال دارد در مقابلاست نوشته شده يا به زباناگر برنامه شم. شوديم

.مي كنيدعوت م OWASP تيدر سا Buffer overflow در مورديما شما را به خواندن مطالب

http://www.owasp.org/index.php/Buffer_overflow

http://www.owasp.org/index.php/Testing_for_Buffer_Overflow

Denial of service رتبه . يكي از حمالت مهمي است كه مي تواند هر سايتي را با هر زباني تحت تاثير قرار دهدDOS كـه

نگران هـستيد، DOSاگر شما درباره حمله . ستنيكافي ده آسيب پذيري برتر آن در پذيرفتن اعالم شده براي MITREبوسيله

: كنيدمطالعهآن را آزمايش مشورت و راهنماي OWASPبا سايت

http://www.owasp.org/index.php/Category:Denial_of_Service_Attack

http://www.owasp.org/index.php/Testing_for_Denial_of_Service

بـه MITREاما رتبه بندي امسال . را تحت ناثير قرار مي دهد PHPمامي سيستم ها بويژه ت ،مديريت حفاظت نشده پيكربندي

OWASP آزمـايش و راهنماي OWASPهنگام توسعه نرم افزار آخرين راهنماي . اجازه گنجاندن اين موضوع را نمي دهد ما

: بررسي و مديريت حفاظت شده پيكربندي مطالعه كنيددر موردرا براي اطالعات جزئي تر

http://www.owasp.org/index.php/Configuration

http://www.owasp.org/index.php/Testing_for_infrastructure_configuration_management

چرا برخي موضوعات مهم را اضافه كرده ايم؟

Cross Site Request Forgery (CSRF) موضوع مهم و جديـد اضـافه شـده بـه ايـن نـسخهOWASP TOP 10

است كه نرم افزارها بايد قدرياگر چه رتبه آن در داده هاي اوليه رتبه سي و ششم است ولي ما معتقديم اهميت آن به . مي باشد

٦

Page 8: OWASP Top 10 2007 Persian

OWASP Top 10 2007

كـار و سـر با داده هـاي حـساس كه بويژه براي نرم افزارهاي با ارزش باال و برنامه هايي . دن كنتالشظت در مقابل آن فاحمراي ب

.و ممكن است بسيار خطرناك باشدنشان داده ظاهر شده كه تاكنوناز رتبه بندي اكنون شايع تر CSRF .دارند

Cryptography: اوليه داده هاي اساس بر MITRE گيري حفاظت نشده رمزنگاري موضوع هشتم و نهم امنيـت نـرم بكار

مخـصوصا . ( مي باشد نتيجه پيامدهاي آن علت اصلي بسياري از نشت هاي اطالعات خصوصي و اما. افزارهاي تحت وب نيست

)PCI DSS 1.1با پذيرش

آسيب پذيري ها، نه حمالت

هـر چنـد گـاهي اوقـات . فـت ردامات متقابـل را در بـر مـي گ تركيبي از حمالت، آسيب پذيري هـا واقـ TOP 10نسخه قبلي

امـا در ايـن نـسخه مـا فقـط بـر روي آسـيب پـذيري هـا متمركـز بكار رفتـه آسيب پذيري ها و حمالت از تركيبي ياصطالحات

م احتمـال براي امن كردن برنامه ها و كاهش مخاطرات تجاري منجر بـه كـاهش مـستقي سازمان ها از اين مستند استفاده .شده ايم

:موارد زير مي شودوقوع

عدم وجـود و ضعف ، XSSهر كدام از اين آسيب پذيري ها بويژه از ين حمالت مي توانند ا : Phishingحمالت

. كنند)exploit( بهره برداري) A1,A4,A7,A10(يا بررسي هاي مجازشماري احراز هويت

ــصوصي ــريم خ ــض ح ــعيف، :نق ــازي ض ــوانيناز معتبرس ــ ق ــاري و ض ــتفاده تج ــماري اس ــي مجازش عف بررس

)A2,A4,A6,A7,A10(.مي كند

،بررسـي هـاي )A3(، الحاق فابل از راه دور )A8,A9( از طريق نبود يا ضعف كنترل هاي مجازشماري :سرقت هويت

.، قواعد تجاري و مجازشماري صورت مي گيرداحراز هويت

)A3(و الحـاق فايـل از راه دور ) A2(طريق تزريـق هـا اين حمالت از :نفوذ به سيستم ها، تغيير يا تخريب داده ها

.صورت مي پذيرد

)A4,A5,A7,A10. ( صورت مي پذيردCSRFاز طريق تراكنش هاي غير مجاز و حمالت :خسارت مالي

)A1 … A10. (از هر كدام از آسيب پذيري هاي باال امكان پذيراست) exploit( از طريق بهره برداري :عدم انكار

٧

Page 9: OWASP Top 10 2007 Persian

كـاهش هـاي واكنـشي، موفقيـت در كـاهش مخـاطرات كـاربردي تجـاري، رلنگرانـي دربـاره كنتـ مان از هـر گونـه رهايي ساز

هزينه هاي عملياتي، افزايش رضايت همراه با پيشرفت قاعده مند و در اختيار داشتن سيستم هاي امـن و قـوي بـه عنـوان نتـايج

. استمحافظت سيستم در مقابل اين آسيب پذيري ها

عتبارا

بويژه گزارش هاي ارايـه شـده آن دربـاره شـيوه هـاي بكارگرفتـه شـده توسـط actual attackاين طرح مشابه روش هاي

آسيب پذيري مهم ، حفاظت اندكي را در 10محافظت از نرم افزار تنها در مقابل اين . مي باشدscript kiddyمهاجمين مبتدي

.ر مي سازد، اما مهم تر از آن بكارگيري روش هاي ارتقاء امنيتي نرم افزار مي باشدمقابل رايج ترين نوع حمالت امكان پذي

تغييرات

ـ . در مواردي نيـز محتـوا بـسيار نزديـك بـه محتـواي قبلـي اسـت بوجود آمده، تغييراتي در سرفصل ها دليـل بـه روز نـشدن ه ب

جدول زيـر چگـونگي تبـديل . ودداري كرده ايمخ WAS XMLاز مطرح كردن نام ،آسيب پذيريها، حمالت و اقدامات متقابل

. نشان مي دهدMITRE و رتبه بندي اوليه 2007 نسخه را بهTOP 10 2004نسخه

MITRE 2006 Raw Ranking

OWASP Top 10 2004 OWASP Top 10 2007

1 A4. Cross Site Scripting (XSS) A1. Cross Site Scripting (XSS) 2 A6. Injection Flaws A2. Injection Flaws

3 A3. Malicious File Execution (NEW)

5 A2. Broken Access Control (split in 2007 T10) A4. Insecure Direct Object Reference

36 A5. Cross Site Request Forgery (CSRF)

(NEW)

6 A7. Improper Error Handling A6. Information Leakage and Improper Error

Handling

14 A3. Broken Authentication and Session Management A7. Broken Authentication and Session

Management 8 A8. Insecure Storage A8. Insecure Cryptographic Storage

8 Discussed under A10. Insecure Configuration

Management A9. Insecure Communications (NEW)

14 A2. Broken Access Control (split in 2007 T10) A10. Failure to Restrict URL Access 7 A1. Unvalidated Input >removed in 2007< 4,8 and 10 A5. Buffer Overflows >removed in 2007< 17 A9. Denial of Service >removed in 2007< 29 A10. Insecure Configuration Management >removed in 2007<

٨

Page 10: OWASP Top 10 2007 Persian

OWASP Top 10 2007

A1 – CROSS SITE SCRIPTING (XSS) بين سايتياجراي اسكريپت

Cross Site Scripting كه به XSS اي از نيز مشهور است، در حقيقـت زيـر مجموعـهHTML injection اسـت . XSS

زمـاني روي XSSضـعفهاي . اسـت وب افزارهـاي تحـت به خطر انـداختن امنيـت نـرم برايترين حمله ترين و مخرب متداول

به مهـاجمين XSS. كردن به مرورگر وب ارسال كندencode داده هاي ورودي كاربر را بدون ارزيابي يا ،د كه نرم افزار نده مي

، تغييـر (Session hijacking)هـا Session تواند منجر به سرقت دهد كه مي را در مرورگر قرباني ميياجازه اجراي اسكريپت

شود (phishing attack) و نيز حمالت سرقت اطالعات (hostil content)، ورود كد مخرب (defacing)هر وب سايتظا

اسكريپت مخرب معموالً جاوا اسكريپت اسـت؛ امـا هـر زبـان . و مرورگر كاربر را با استفاده از اسكريپت مخرب در اختيار بگيرد

. روداي براي اين حمله به شمار ميباني شود هدف بالقوهاسكريپت نويسي كه به وسيله مرورگر قرباني پشتي

محيط هاي متاثر

. پذير هستند آسيبXSSافزارهاي تحت وب در برابر تمامي ساختارهاي نرم

آسيب پذيري

: وجود داردXSSسه نوع شناخته شده از

(Reflected XSS )بازتابي (Stored XSS )ذخيره اي

Dom injection

XSS بازتابي)Reflected( براي Exploit احـل بعـدي در مر هـاي كـاربر را اي باشـد كـه داده تواند صفحه آسانتر است و مي

.گرداندمي برمستقيما به مرورگر او

echo $_REQUEST['userinput']; XSS ذخيره اي )Stored (كند هاي مخرب را گرفته و داخل فايلي ذخيره مي داده) و در مرحلـه ) نهائيپايگاه يا سيستم كاربران

هـا و هـا يـا فريـوم ، بـالگ CMSهـايي مثـل اين عمل در سيـستم . دهد ها را بدون فيلتر و ارزيابي به كاربر نمايش مي بعد داده

.باشدهاي افراد ديگر را خواهند ديد، بسيار خطرناك ميهايي كه بسياري از كاربران ورودي مكان

. شونددستكاري ميHTML ر اسكريپت و متغيرها بيشتر از عناصوا ، كدهاي جاDOM مبتني بر XSSدر حمالت

هـاي دقيـق توانـد روش مرورگر مـي دبيني نشده يا غير استاندار رفتارهاي پيش . تواند تركيبي از اين سه نوع باشد مي XSSحمله

اواـمالت با استفاده از جـح. دباش از طريق اجزاء مورد استفاده مرورگر نيز قابل اجرا ميXSSهمچنين . حمله را مشخص كند

٩

Page 11: OWASP Top 10 2007 Persian

استفاده از جاوا اسكريپت به مهاجمين اجازه دستكاري صـفحه منتقـل شـده را . گيردسكريپت كه زبان قدرتمندي است انجام مي ا

هـا بـه سـايت جهت ارسال اعتبارنامهlogin tileمثل اضافه كردن مكاني براي دريافت ورودي (شامل اضافه كردن عناصر جديد

جـاوا اسـكريپت اجـازه اسـتفاده از . دهد داخلي و حذف يا تغيير نحوه نمايش صفحه را مي DOMيا دستكاري درخت ) ممهاج

XML HTTP Request هاي توسط سايتهاي استفاده كننده از فناوريكهAJAXد را حتـي اگـر سـايت نشـو بكار گرفته مي

تـوان از سياسـت مبـداء يكـسان مـي XML HTTP Requestز بـا اسـتفاده ا . هـد د مـي ،استفاده نكندنيز AJAXقرباني از

(same source origination policy)ال كرده ـهاي مهاجم ارسهاي قرباني را به سايتبه اين معني كه داده. مرورگر گذشت

نيازي AJAXحمالت . كردان باز بودن مرورگر دوام خواهند داشت، ايجاد ـهاي مخربي كه تا زم هاي پيچيده و زامبي Wormو

.نداردرا CSRFبه ديده شدن يا تعامل با كاربر براي اجراي حمالت خطرناك

بررسي امنيت

.شوند ميencode معتبر سازي و يا HTMLگذاري در صفحات ست كه قبل از جاياهدف بررسي تمام پارامترهايي

امـا . هـستند Reflected XSSادر بـه تـشخيص ابزارهاي آزمايش نفوذ خودكار از طريق تزريق پارامتر قـ : هاي خودكارروش

تزريـق XSSشوند، بويژه اگـر خروجـي با شكست مواجه مي(Persistent XSS) پايدار XSSاغلب اوقات براي پيدا كردن

د هاي مخربي را كه فقط مديران سايت بتواننـ مثالً اگر كاربري داده (.هاي مجاز شماري، پيشگيري شده باشد شده از طريق بررسي

تواننـد معمـوال نمـي هاي ضعيف يا خطرناك را پيدا كنند اما APIتوانند ابزارهاي پويش خودكار مي ،)بعداً آن را ببينند وارد كند

) False Positive (سازي يا كد گذاري را تعيين كنند، كه اين امر ممكن اسـت باعـث ايجـاد مثبـت نادرسـت انجام عمل اعتبار

كاربردي مبتني بـر نرم افزارهاي به اين معني كه . نيستند DOMهاي مبتني بر XSSر به پيدا كردن يك از ابزارها قاد هيچ. گردد

AJAXها انجام گرفته باشد در خطر هستند حتي اگر آزمايش خودكار هم روي آن .

ر پياده سـازي بـه اگ. موثرترين روش براي بررسي امنيت كدها استفاده از مكانيزم معتبرسازي و كدگذاري است : هاي دستي روش

آزمايش بدليل وسيع بودن سـطح حملـه . اي زمان بر خواهد بود صورت توزيع شده انجام شود، اعتبارسازي به طور قابل مالحظه

.استزمان بر افزارها بسيار اكثر نرمدر

١٠

Page 12: OWASP Top 10 2007 Persian

OWASP Top 10 2007

حفاظتهـاي مـام داده ت كـردن Encodeو ي از كاراكترهـاي مجـاز در ورودي ليـست و اعمـال تهيه XSSبهترين راه محافظت در برابر

از اجراي موفق تزريق اسكريپت كردنEncode اجازه تشخيص حمالت را مي دهد و ليست ورودي هاي مجاز . استخروجي

.كنددر مرورگر جلوگيري مي

: افزار به معماري منسجمي نياز داردهاي نرم در تمام قسمتXSSپيشگيري از اجراي

تأييد اعتبـار تمـامي داده ، مكانيزم معتبرسازي قبل از پذيرش داده براي نمايش يا ذخيره استفاده از :معتبرسازي ورودي

ــر و ــوع، گرامــ ــول، نــ ــاظ طــ ــاي ورودي از لحــ ــاربريهــ ــار . كــ ــد اعتبــ ــتراتژي تاييــ ــتفاده از اســ اســ

“accept known good” هـاي و همچنين عدم پذيرش ورودي نامعتبر بجـاي تـالش در جهـت سـالم سـازي داده

.هاي غير معتبر باشندتوانند شامل دادههاي خطا نيز ميفراموش نكردن اين موضوع كه پيغاممخرب و

بـر XML يـا HTML(هاي ورودي كـاربر قبـل از تغييـر تمام داده از كدگذاري درست : هاكدگذاري قوي خروجي

ايـن . در نظـر بگيريـد رها همچنين روشي را براي كداگذاري تمام كاراكت . اطمينان حاصل كنيد ) حسب مكانيزم خروجي

متعلـق بـه PHP بـه زبـان Anti-XSSمايكروسافت يا كتابخانـه آمـاده ارائـه Anti XSS libraryتواندروش مي

OWASPكاهش افشاء بسياري از متغيرها استفاده كنيدبرايهاي خروجي از كدگذاري كاراكتري صفحه. باشد .

در مقابـل مـوارد گونـه به مهاجمين اجازه انتخاب ايـن :)UTF-8 يا ISO 8959-1مانند (تعيين كدگذاري خروجي

.كاربران را ندهيد

ها يا كدگذاري خروجـي در ورودي XSS از اين روش براي تشخيص : معتبرسازي از ليست سياه استفاده نكنيد براي

يـا عبـارات مـشابهي پارامترهـا و "<",">" (گذاري تعداد كمي از كاراكترهـا تنها جستجو و جاي . استفاده نكنيد ها

خطرنـاك "<b>" حتي يك تگ بررسي نـشده . قرار مي گيرند ضعيف است و با موفقيت مورد حمله ) "script"مانند

تواند معتبرسازي ليست سياه را پشت سـر ست كه به آساني مي يي ا از متغيرها زيادي داراي تعداد حمالت XSS. است

.بگذارند

از عـدم . هاي ورودي بايد قبل از معتبرسازي، رمزگشايي و متعارف سازي شوند داده :مراقبت از متعارف سازي خطاها

از عبـوركردن بـراي تواننـد اين خطاها مـي . ي هاي يكسان توسط نرم افزار اطمينان حاصل كنيد درمزگشايي مجدد ورو

.قرار بگيرنداستفاده مورد ها، هاي ورودي بعد از بررسي آنليست سفيد با معرفي داده

١١

Page 13: OWASP Top 10 2007 Persian

توصيه :هاي خاص زبان

JAVA :هاي خروجي ماننداز مكانيزم<been:write …>فرض يا از پيشXML="true" در تگ <c:out …>

) يعني خارج از يك مكانيزم خروجـي رمزگـذاري شـده مناسـب (> %= % ...<از استفاده غير تو در توي . استفاده كنيد

.بپرهيزيد

NET : ازAnti-XSS Library 1.5وسافت در رايگان مايكرMSDNهاي درون فيلـدهاي فـرم داده . استفاده كنيد

بـه طـور مـستقيم و ;Request object: username.text = Request.QueryString ("username")را از

هاي خروجي را كدگذاري به طور اتوماتيك داده . NETاز اينكه كنترل هاي .بدون استفاده از اين كتابخانه ارجاع ندهيد

. آگاه باشيدكندمي

PHP : ها از داخل توابع خروجياز عبورhtmlentities() يا htmlspecialchars() و يا ازAnti-XSS library

.اطمينان حاصل كنيد كه بزودي منتشر خواهد شد OWASP در PHPزبان

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4206 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-3966 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5204

مراجع

CWE: CWE-79, Cross-Site scripting (XSS) WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/cross-

site_scripting.shtml OWASP – Cross site scripting, http://www.owasp.org/index.php/Cross_Site_Scripting OWASP – Testing for XSS,

http://www.owasp.org/index.php/Testing_for_Cross_site_scripting OWASP Stinger Project (A Java EE validation filter) –

http://www.owasp.org/index.php/Category:OWASP_Stinger_Project OWASP PHP Filter Project - http://www.owasp.org/index.php/OWASP_PHP_Filters OWASP Encoding Project -

http://www.owasp.org/index.php/Category:OWASP_Encoding_Project RSnake, XSS Cheat Sheet, http://ha.ckers.org/xss.html Klein, A., DOM Based Cross Site Scripting,

http://www.webappsec.org/projects/articles/071105.shtml .NET Anti-XSS Library -

http://www.microsoft.com/downloads/details.aspx?FamilyID=efb9c819-53ff-4f82-bfaf-e11625130c25&DisplayLang=en

١٢

Page 14: OWASP Top 10 2007 Persian

OWASP Top 10 2007

A2 – INJECTION FLOWS ضعف هاي تزريقي

:ها وجود دارنـد انواع مختلف از تزريق. افزاهاي تحت وب بسيار رايج است در نرمSQL injectionبويژه : هاي تزريقيضعف

SQL ،LDAP ،Xpath ،XSLT ،XML فرمان، OS injectionرد ديگر و موا.

مهاجمين . افتدشود، اتفاق مي هاي ورودي كاربر به عنوان بخشي از دستور يا پرس و جو به مفسر ارسال مي زماني كه داده ،تزريق

بـه مهـاجمين اجـازه ايجـاد، تزريقـي هـاي ضعف. دهند مفسر را فريب مي، اجراي غيرعمديبرايهاي جعلي از طريق توليد داده

ها به مهاجم اجـازه بـه خطـر در سناريويي بدتر، اين ضعف . دهندافزار مي حذف هر داده دلخواه را در نرم خواندن، بروزرساني يا

تودرتوي بـسيار هاي هاي داراي فايروال تواند از محيط دهد و نيز مي آن را مي تحت پوشش هاي سيستم افزار و انداختن كامل نرم

.سخت عبور كند

محيط هاي متاثر

كننـد در برابـر كنند و يا فرآينـدهاي ديگـري را فراخـواني مـي افزارهاي تحت وب كه از مفسر استفاده مي نرم تمامي ساختارهاي

دهند نيـز تحـت تـأثير را مورد استفاده قرار مي back-endاجزاي ساختارهايي كه مفسرهاي . پذير هستند حمالت تزريقي آسيب

.هستند

آسيب پذيري

بررسـي كنيـد كـه آيـا . افزار آسيب پذير خواهـد بـود تبرسازي يا كدگذاري به مفسر را ه يابد، نرم ورودي كاربر بدون مع اگر داده

: شود يا خير مانندهاي پويا عرضه ميورودي كاربر بنابر درخواست

PHP:

$sql = "SELECT * FROM table WHERE id = '" . $_REQUEST['id’] . "’";

Java:

String query = "SELECT user_id FROM user_data WHERE user_name = ' " + req.getParameter

("userID") + " ' and user_password = ' " + req.getParameter("pwd") +" ' ";

بررسي امنيت

هاي كاربر قادر به تغيير مفهوم دستورات و پرس و جوهاي ارسال شده به مفسر درخواستي هدف بررسي اين مطلب است كه داده

.هستند يا خيرنرم افزار

١٣

Page 15: OWASP Top 10 2007 Persian

وجـود SQL injection بويژه يهاي تزريق ابزارهاي پويشگر آسيب پذيري فراواني براي پيدا كردن ضعف:هاي خودكارروش

تواننـد كنند، مفيد هستند اما نمي هاي مفسرهاي محافظت نشده را جستجو مي APIابزارهاي تحليل ايستايي كه استفاده از . دارند

هرگـاه . يا خيـر است پذيري در نظر گرفته شده د كه آيا معتبرسازي يا كدگذاري مناسبي براي حفاظت در مقابل آسيب بررسي كنن

داخلي سرويس دهنده يا خطاهاي پر از جزئيات پايگـاه داده را دريافـت كنـد بـه طـور قابـل 500 يا 501نرم افزاري خاطاهاي

هاي توانند تزريق ابزارهاي خودكار مي . اما ممكن است كدها هنوز در خطر باشند .تواند ابزارهاي خودكار را مختل كند توجهي مي

LDAP يا XML يا Xpath دهند را تشخيص .

APIباشند كه بايد جهـت اسـتفاده از هاي موثر و صحيحي مي بررسي كدهاي درخواست كننده مفسرها روش : هاي دستي روش

.افزارها، اين روش بسيار زمان بر استبدليل وسيع بودن سطح حمله اكثر نرم. يا معتبرسازي و كدگذاري بررسي شود، امنهاي

محافظت

،اگر بايد مفسري را درخواست كنيد، راه حل كليـدي بـراي جلـوگيري از تزريـق . از استفاده مفسرها تا حد امكان جلوگيري كنيد

)strongly typed parameterized queries( نوع پارامتر پرس و جوهاي تشخيص دهنده مانندامن هاي API استفاده از

Data يها تمـام مراحـل الزم بـرا اين واسط. باشد ميobject relational mapping (ORM) اشياءمبدل هايو كتابخانه

scaping بـراي داده هـاي ورودي معتبرسـازي امـا كنند، مشكل را حل مي ها واسط اگرچه اين . دهندي را به طور خودكار انجام م

هـاي بيـشتري ماننـد بكارگيري مفسرها خطرناك است، بنابراين اين ارزش را دارد كه مراقبت . شودتشخيص حمالت توصيه مي

:در نظر بگيريدموارد ذيل را

از مكانيزم معتبرسازي ورودي استانداردي قبل از پذيرفتن داده براي نمايش يا ذخيره سازي جهت تاييد : معتبرسازي ورودي

"accept known good"از استراتژي معتبرسازي. استفاده كنيدكاربريهاي ورودي از نظر طول، نوع، گرامر و دادهاعتبار تمام

فراموش . ورودي نامعتبر جلوگيري كنيدداده هاي هاي قابل تخريب، از پذيرش بجاي تالش براي سالم سازي داده. استفاده كنيد

.هاي نامعتبر باشندل دادهتوانند شامهاي خطا نيز مينكنيد كه پيغام

حتي در زمان )Strongly typed parameterized query( نوع پارامترتشخيص دهنده پرس و جوي هاي APIاز

.نيز استفاده كنيد )Stored procedure( ذخيره شده توابعفراخواني

. استفاده كنيد back endهاي ر سيستم را در زمان اتصال به پايگاه داده يا ساي(permission) دسترسيحداقل امتيازاز

. بپرهيزيدهستندهاي خطاي پر از جزئيات كه براي مهاجم مفيد از ارائه پيام

١٤

Page 16: OWASP Top 10 2007 Persian

OWASP Top 10 2007

مراقب باشيد البته. استفاده كنيد ايمن هستندSQL در برابر تزريق كه معموال)Stored procedure( ذخيره شده توابعاز

) ذخيره شدهتوابع داخل exec) ( مانند استفاده از آرگومانهاي الحاقي. (اشند ب تزريقتوانند قابل مياين توابع چرا كه

.يا مشابه آن استفاده نكنيد mysql-query( ) مانند (Dynamic)هاي پرس و جوي پويااز واسط

اين توابع . نيد استفاده نكstr-replace كاراكتر مانند يا توابع جايگذاري addslashes( ) ساده مانند escapingاز توابع

كنيد استفاده ميmysql اگر از PHPبراي زبان . شوند مي)exploit( بكارگرفتهضعيف هستند و با موفقيت از طرف مهاجمين

. كه نيازي به جايگزيني ندارد استفاده كنيدPDO يا ترجيحاً از ( ) mysql – real – escape – stringاز توابع

كاراكترهاي توانندهاي جايگزيني ساده توجه داشته باشيد كه توابع جايگزيني ساده نميم در هنگام استفاده از مكانيز

هاي ورودي باشد و بدين جهت براي دادهSQLنام جداول بايد مطابق با قواعد . نام جداول را جايگزين كنندخطرناك را در

.كاربر چندان مناسب نيستند

كدگشايي و ،در داخل نرم افزاراعتبارسنجي شوندي ورودي بايد قبل از هاداده. متعارف سازي باشيدخطاهاي مراقب

تواند براي هايي ميچنين خطا. نكندdecode دوبارورودي را يك مقدار مطمئن باشيد كه نرم افزار . دنمتعارف سازي شو

. مورد استفاده قرار بگيردز مجاي كاراكترهاwhitelistگذشتن از

توصيه :هاي خاص زبان

Java EE -ِاز دستورات PreparedStatement Strongly typed يا ORM هايي مانندHibernate يا Spring

.استفاده كنيد

.NET – نوع پارامترهااز پرس و جوهاي تشخيص دهنده) strongly typed parameterized queries( مانند

SqlCommand با SqlParameter يا يك ORM شبيه Hibernateكنيد استفاده .

PHP - از PDOپرس و جوهاي تشخيص دهنده همراه با )strongly typed parameterized query( مانند

bindParam( )استفاده كنيد .

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5121 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4953 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4592

١٥

Page 17: OWASP Top 10 2007 Persian

مراجع

CWE: CWE-89 (SQL Injection), CWE-77 (Command Injection), CWE-90 (LDAP Injection), CWE-91 (XML Injection), CWE-93 (CRLF Injection), others.

WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/ldap_injection.shtml http://www.webappsec.org/projects/threat/classes/sql_injection.shtml http://www.webappsec.org/projects/threat/classes/os_commanding.shtml

OWASP, http://www.owasp.org/index.php/SQL_Injection OWASP Guide, http://www.owasp.org/index.php/Guide_to_SQL_Injection OWASP Code Review Guide,

http://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection OWASP Testing Guide, http://www.owasp.org/index.php/Testing_for_SQL_Injection SQL Injection, http://www.spidynamics.com/papers/SQLInjectionWhitePaper.pdf Advanced SQL Injection,

http://www.ngssoftware.com/papers/advanced_sql_injection.pdf More Advanced SQL Injection,

http://www.nextgenss.com/papers/more_advanced_sql_injection.pdf Hibernate, an advanced object relational manager (ORM) for J2EE and .NET,

http://www.hibernate.org/ J2EE Prepared Statements,

http://java.sun.com/docs/books/tutorial/jdbc/basics/prepared.html How to: Protect from SQL injection in ASP.Net, http://msdn2.microsoft.com/en-

us/library/ms998271.aspx PHP PDO functions, http://php.net/pdo

١٦

Page 18: OWASP Top 10 2007 Persian

OWASP Top 10 2007

A3 – MALICIOUS FILE EXECUTION اجراي فايل مخرب

مستقيم و طوربرنامه نويسان اغلب به . دنشوهاي حاصل از اجراي فايل مخرب در بسياري از نرم افزارها يافت ميپذيريآسيب

قابل اعتمادهاي ورودي نامناسب از فايلشكلاي و يا به دي مخرب از طريق فايل يا توابع رشتهيا بوسيله الحاق داده ورو

مانند Reference (Object ( به شي خارجيارجاعها، ساختارها اجازه استفاده از Platform در بسياري از . كننداستفاده مي

.دهندها يا سيستم فايل را ميURL ارجاع به

راه دور كدهاي مخرب شود كه توسط سرور وب در حال پردازش يا درخواست از تواند منجر به كنترل داده ميبررسي نامناسب

.است

:دهداين امربه مهاجمين اجازه انجام اقدامات زير را مي

اجراي كدها از راه دور

از راه دور و نفوذ كامل به سيستمroot kitنصب

صورت PHPزبان در SMB فايل (wrappers)اند با استفاده از پوشه هاي تودر ويندوز، نفوذ به سيستم داخلي مي

.پذيرد

نام پذيري تاثيرعدم براي اطمينان از مي بايست هر رشته يا عملكرد فايل و بسيار رايج استPHP در زباناين حمله

.هاي ورودي كاربر، محافظت شود دادهاز طريقها فايل

محيط هاي متاثر

ها از كاربر در برابر اجراي فايـل مخـرب آسـيب پـذير فايل يا نام فايل هنگام دريافت اي نرم افزارهاي تحت وب ساختاره انواع

نام پذيرش و نيز كدهاي URLهاي نام فايل در به كاربر اجازه انتخاب آرگومان NET. زبان برنامه نويسي مثال به طور . هستند

.براي فايل هاي محلي را مي دهدرا فايل

.پذير است آسيب، در برابر حمله الحاق فايل از راه دورAPIهاي مبتني بر از طريق فايل يا رشتهPHP ن زبا

آسيب پذيري

: باشدپذير به شرح ذيل ميساختار آسيب

include $_REQUEST['filename'];

١٧

Page 19: OWASP Top 10 2007 Persian

دسترسـي بـه سـرورهاي بـراي توانـد مـي ، بلكه مي سازدپذير راه دور را امكاناز هاي مخرب اين مورد نه فقط بررسي اسكريپت

. استفاده شودPHPهاي سيستم فايل در پوشهSMBبدليل پشتيباني ) پشتيباني گردد PHP از زباناگر(محلي

:گرددساير روشهاي حمله شامل موارد ذيل مي

بارگـذاري هـاي نشـست همـراه بـا بارگـذاري تـصوير، ، دادهSession Files نشستهاي فايلررويهاي مخرب بداده

.شوند مي

را PHP در URL داخلـي )flag( نـشانه كـه //:Dggيـا //:Zlibهاي صـوتي ماننـد استفاده از فشرده سازي يا جريان

allow-url-include يـا allow-url-fopenبنابراين اجازه دسترسي به منابع از راه دور حتي اگـر نند و ك نمي بازرسي

.دهندميرا غيرفعال باشند،

فايل به جاي يكPOST و غيره براي پذيرفتن ورودي از درخواست داده //:php مانند ورودي PHPهاي فاده از پوشهاست

مانند انندهپوش: PHPهاي استفاده از داده

Data : ; base64 , PD9waHAgcGhwaW5mbygpOz8+

استفاده از معماري امنيتي مناسب و طراحي قـوي ،)كنداي تغيير پيدا مي و به صورت دوره (كه اين فهرست وسيع است يي از آنجا

. ـ حياتي استمي سازداثر مت را آنهاي ورودي كاربر ـ كه انتخاب نام فايلهاي سمت سرور و دسترسيدر هنگام ارتباط با داده

. گـردد اجـرا يـز ن J2EE، و نيـز NET. تواند به روشهاي مختلـف در اين حمله مياما ، ارايه شد PHPي از زبان ي مثالهاهرچند

كـدها، بـه دسترسـي جهت هاي امنيتي مكانيزمبه ويژه ي نياز به توجه J2EEو . NETافزارهاي نوشته شده در ساختارهاي نرم

به طور مثال ممكن است اسناد . كاربر دارندتحت نفوذهاي توليدي يا نام فايلاز طريقهاي امنيتي اطمينان از عدم دفع كنترلبراي

XML ده توسط مهاجم شامل يك ارائه شDTD مخرب باشد كه تجزيه كننده XML به بارگذاري مجبور را DTD از راه دور

هاي آتش ارائه كـرده يك شركت امنيتي استراليايي اين روش را براي پويش پورت در پشت ديواره . و تجزيه و پردازش نتايج كند

.ينيد را در منابع اين بخش ببSIF01براي اطالعات بيشتر . است

موجود در سـاختار مـرتبط sandbox يا platformهاي جداسازي پذيري ويژه مسقيماً به قدرت كنترل اين آسيب ل عل اتخطر

زبـان در آن يا معماري امنيتي ندارد، خطر حمله sandboxهيچگونه مفهوم و شود به ندرت تجزيه مي PHPاز آنجائيكه . است

كـه يـك زمـاني به طور مثـال (گيرند مناسب قرار ميsandboxاخل يك يا ساختارهايي كه د ، كمتر اطميناناز ساير ساختارها با

.، بسيار بيشتر است)گرددمدير امنيتي فعال و پيكربندي شده اجرا توسط بدرستي كه JVMنرم افزار وب تحت

١٨

Page 20: OWASP Top 10 2007 Persian

OWASP Top 10 2007

بررسي امنيت

گرامـر ياو شوند براي الحاق يك فايل استفاده مي پذيري به سختي پارامترهايي را كه ابزارهاي پويش آسيب : هاي خودكار روش

syntax توانند استفاده از ابزارهاي تحليل ايستا مي. كنند را شناسايي مي هاتي فعالاجرايي API ،هاي خطرناك را جستجو كننـد

.پذيري را بررسي كنندفظت در مقابل آسيباحم براي مناسب كردنEncode يا اعتبارسنجيتوانند اما نمي

اما ممكـن . الحاق فايل به نرم افزار را جستجو كرد اجراييمي توان كد ) code review( بازبيني كد از طريق: هاي دستي روش

پذيري را تـشخيص دهـد، امـا شـناخت پارامترهـاي تواند اين آسيب آزمايش مي . رخ دهد آن است اشتباهات زيادي در تشخيص

.تواند دشوار باشدخاص و گرامر صحيح مي

محافظت

بـه . ريزي دقيق در مراحل طراحي و معماري در طـول آزمـايش نيـاز دارد هاي الحاق فايل از راه دور به برنامه پيشگيري از ضعف

ماننـد تـصاوير، اسـناد ( تعيين نام فايـل برايهاي ورودي كاربر ، از داده باشد افزاري كه به طور صحيح نگارش يافته طور كلي نرم

جلـوگيري از اتـصاالت بـراي و داراي قوانين ديواره آتش مناسـب استفاده نكرده) محتويات اسكريپتي يا XSL و XMLتبديل

د بـسياري از هرچنـ . خواهـد بـود ديگـر هاي به اينترنت يا اتـصاالت داخلـي بـه سـرور )outbound(جديد خارج از محدوده

.هاي ورودي نياز دارند دادهافزارهاي قديمي به پذيرش نرم

:به موار ذيل اشاره كردمي توان پيشگيري هاهمترين از جمله م

به طور مثال در جايي ). را ببينيدA4براي اطالعات بيشتر بخش ( غير مستقيم به شي )Reference( ارجاعاستفاده از طرح

. ارجاع را در نظر بگيريدHashشود، كه نام فايل استفاده مي

: ذيلبه جاي استفاده از كد

<select name="language">

<option value="English">English</option>

.از كد روبرو استفاده كنيد

<select name="language">

<option value="78463a384a5aa4fad5fa73e2f506ecfc">English</option>

١٩

Page 21: OWASP Top 10 2007 Persian

متناوبـا فقـط از . اسـتفاده كنيـد غير مستقيم به اشـياء ارجاع Reference به Bruteforce جلوگيري از حمله برايها Salt از

ــدارهاي ــد indexمق ــارامتري 3و 2و 1 مانن ــه پ ــشخيص مداخل ــراي ت ــه ب ــود آراي ــه خ ــيد ك ــئن باش ــد و مطم ــتفاده كني اس

(Parameter Tampering)شوند بررسي مي.

. د، اسـتفاده كنيـد كن آن را پشتيباني ميبرنامه در صورتي كه زبان (Explicit taint)هاي صحيح بررسي عيوب از مكانيزم

:در غير اين صورت از الگوي نامگذاري متغير براي كمك به بررسي عيوب استفاده كنيد

$hostile = &$_POST; // refer to POST variables, not $_REQUEST

$safe[ ' filename ' ] = validate_file_name ($hostile[ ' unsafe_filename ' ] ) ; // make it safe

:شودنابراين هر عملكردي بر مبناي ورودي مخرب فورا آشكار ميب

require_once ($_POST[‘unsafe_filename’] . 'inc.php');

require_once ($safe ['filename'] . 'inc.php');

. به عنوان يك استراتژي، ورودي كاربر را معتبرسازي كنيد"accept known good"موكدا با استفاده از

هـاي وب خـارجي و جلـوگيري از برقـراري ارتبـاط جديـد از طريـق سـرورها بـه سـايت برايانين ديواره آتش را قو

.هاي داخلي اضافه كنيد سيستم

هـاي موجـود در هـا ماننـد آلـوده كـردن داده هاي ورودي كاربر نتوانـد سـاير كنتـرل ها يا نام فايل بررسي كنيد كه فايل

session object ، avatar تصاوير، گزارشهاي ها وPDF فايلهاي موقت و غيره را حذف كند ،.

جداسازي نرم افزارها از همديگر را براي از قبيل مجازي سازي sandbox يا ساير مكانيزمهاي chroot jailسازي پياده

.مدنظر بگيريد

PHP :rejister – globalsليه از متغيرهاي فاقد مقدار اون را غير فعال كنيد و براي پيدا كرد E-STRICT اسـتفاده

.كنيد

PHP :allow-url-fopen و allow-url-include را در php.ini غير فعال كنيد و ساختمان محليPHP را كـه

بهتـر اسـت ايـن تنظيمـات تعداد كمي از نرم افزارها به اين عملكرد نياز دارند پس . شامل اين عملكرد نباشد لحاظ كنيد

.شودافزار فعال برروي نرم

٢٠

Page 22: OWASP Top 10 2007 Persian

OWASP Top 10 2007

PHP :فايل و توابع رشته اي از بررسي دقيق )streams functions ( مانند)stream_*( پـشتيباني توابـع از و عـدم

:مانند. پذيرفته مي شوند، مطمئن شويدآرگومان نام فايل داده هاي ورودي كاربر كه به عنوان

include( ) include_once( ) require( ) require_once( ) fopen( ) imagecreatefromXXX( ) file( )

file_get_contents( ) copy( ) delete( ) unlink( ) upload_tmp_dir( ) $_FILES move_uploaded_file( )

PHP :ها بـه توابـع در صورت ارسال داده system( ) ، eval( ) ،pass thru( ) يـا (the back tick operator) .

.هوشيارانه عمل كنيد

و اعطاء درست مجوزهـا توسـط security managerفعال بودن و پيكربندي صحيح از J2EEر صورت استفاده از د

.برنامه كاربردي اطمينان حاصل كنيد

كـه بـه طراحـي كنيـد به شـكلي مطمـئن را نرم افزار مراجعه كنيد و Partial trust دربه مستندات ASP.NETدر

.شده اند تنظيم اكثر نرم افزارهاي موجود در پايين ترين سطح اعتمادر حاليكهدشود تقسيم امن هاي مختلف قسمت

نمونه ها

. http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0360 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5220 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4722

مراجع

CWE: CWE-98 (PHP File Inclusion), CWE-78 (OS Command Injection), CWE-95 (Eval injection), CWE-434 (Unrestricted file upload)

WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/os_commanding.shtml

OWASP Guide, http://www.owasp.org/index.php/File_System#Includes_and_Remote_files

OWASP Testing Guide, http://www.owasp.org/index.php/Testing_for_Directory_Traversal

OWASP PHP Top 5, http://www.owasp.org/index.php/PHP_Top_5#P1:_Remote_Code_Execution

Stefan Esser, http://blog.php-security.org/archives/45-PHP-5.2.0-and-allow_url_include.html

[SIF01] SIFT, Web Services: Teaching an old dog new tricks, http://www.ruxcon.org.au/files/2006/web_services_security.ppt

http://www.owasp.org/index.php/OWASP_Java_Table_of_Contents#Defining_a_Java_Security_Policy

Microsoft - Programming for Partial Trust, http://msdn2.microsoft.com/en-us/library/ms364059(VS.80).aspx

٢١

Page 23: OWASP Top 10 2007 Persian

A4 – INSECURE DIRECT OBJECT REFERENCE شي مستقيم بهناامنارجاع

نويس ارجاعي به شي داخلي مثل فايل، دايركتوري، ركورد پايگاه داده يا فيلد را بـه عنـوان زماني كه برنامه ،ارجاع مستقيم به شي

URL تواند ارجاع مستقيم به شي را براي دسترسـي بـه ديگـر مهاجم مي . دهد يا پارامتر فرم در دسترس گذاشته باشد، روي مي

در : بـراي مثـال . مگر اينكه مكانيزم كنترل دسترسي در محل وجود داشته باشد ،ها به صورت غيرمجاز تغيير دهد object اشياء يا

بنـابراين اسـتفاده از شـماره . يج اسـت افزارهاي بانكداري، استفاده از شماره حساب كاربري به عنوان كليد اوليه را اينترنت در نرم

پــرس و جــو هــاي تــشخيص دهنــده از برنامــه نــويس وب حتــي اگــر (interface)حــساب بــه صــورت مــستقيم در واســط

prametarized query درSOL براي جلوگيري از تزريقsqlاگر روشـهاي بررسـي . انگيز است وسوسه، استفاده كرده باشد

ر براي ديدن حساب و اينكه كاربر، دارنده حساب است يا خير وجود نداشـته باشـد، مهـاجم بـا بيشتري جهت مجازشماري كارب

اين نوع حمله در سايت شـركت . هاي كاربري را تغيير دهد تواند همه حساب پارامتر شماره حساب مي Tamperingاستفاده از

GST startup Assistance در Taxetion متخاصم به سـادگي موجـودي يكاربراد و در آن اتفاق افت 2000 استراليا در سال

17000 تمـامي شركت را از سيستم ربود و سـپس بـه 17000حساب ريز كاربر . تغيير داد را URL در ABN) شركت مالياتي (

در بسياري از نـرم افزارهـا آزمـايش در حاليكه اين نوع آسيب پذيري بسيار رايج است . كرد emailاش را شركت جزئيات محله

.شده استن

محيط هاي متاثر

.پذير هستند آسيب شي مستقيم بهناامنافزارهاي تحت وب در برابر حمالت ارجاعات تمامي ساختارهاي نرم

آسيب پذيري

پارامترهـا ايجـاد دهنـد مهـاجمين بـا اسـتفاده را در دسترس كاربران قرار مـي داخلي object به بسياري از نرم افزارها ارجاعات

)parameter tampering(اين ارجاعات بارها به . كنندد و عمداً سياست كنترل دسترسي را نقض مينده ارجاعات را تغيير مي

براياگر برنامه : براي مثال . پذير باشد تواند آسيب مي محافظتافزار بدون هر نرم . كنندهاي داده اشاره مي ها و پايگاه فايل-سيستم

عبـور از بـراي بـدين ترتيـب مهـاجمين مـي تواننـد از ايـن ضـعف ،ورودي كاربر استفاده نمايـد ها يا مسيرها از تعيين نام فايل

.نماينددايركتوري نرم افزار و دسترسي به منابع ديگر استفاده

<select name="language"><option value="fr">Français</option></select>

٢٢

Page 24: OWASP Top 10 2007 Persian

OWASP Top 10 2007

require_once ($_REQUEST['language']."lang.php");

null byte injection ازو بـا اسـتفاده /../../../.." 00passwd/etc% "اي شبيه ايـن تواند با استفاده از رشتهچنين كدي مي

.هاي سيستم فايل سرور وب مورد حمله واقع شود دسترسي فايلهنگام) را ببيندOWASPراهنماي براي اطالعات بيشتر (

گي تواند از اين پـارامتر بـه سـاد بنابراين مهاجم مي . مي گيرند همينطور ارجاعات فليدهاي پايگاه داده بارها در دسترس قرار داده

در مثال زير اگر نرم افزاري هيچ لينكـي بـراي كارتهـاي . حمله به ديگر فيلدهاي معتبر بوسيله حدس يا جستجو استفاده كند براي

.خواهد تغيير دهدتواند شناسه كارت را به هر كارتي كه ميي ممكن نباشد، مهاجم ميي SQLغير مجاز ارائه ندهد و هيچ تزريق

int cartID = Integer.parseInt( request.getParameter( "cartID" ) );

String query = "SELECT * FROM table WHERE cartID=" + cartID;

بررسي امنيت . است در نرم افزار به شي تغيير ارجاعات مستقيمجهتهدف تعيين عدم توانايي مهاجم

. دنـ دهي مـستعد تغييـر يـا دسـتكاري را تـشخيص مـي پارامترهـا دشواريپذيري به ابزارهاي پويش آسيب :هاي خودكار روش

.توانند پارامترهايي را كه به بررسي كنترل دسترسي قبل از استفاده احتياج دارند، شناسايي كنندابزارهاي تحليل ايستا واقعاً نمي

كه آيا آنهـا مـستعد تغييـر يـا تواند پارامترهاي بحراني را شناسايي و تعيين كند بازبيني كد در بسياري موارد مي :هاي دستي روش

. هستندزمان برها دوي اين تكنيكتواند امكان دستكاري را تعيين كند اما هر مينيزتست نفوذ پذيري . دستكاري هستند يا خير

محافظت

يا و همچنين استفاده از طرح ارجاع غير مستقيمIndexبهترين روش، حفاظت از ارجاعات مستقيم به شي بوسيله استفاده از

اگر بايد از ارجاع مستقيم به شي استفاده شود از . شوندر روش هاي غير مستقيمي است كه به راحتي معتبر سازي ميگدي

. ارجاعات مطمئن شويدزمجاز شماري كاربر قبل از استفاده ا

:مهم استبسيار نرم افزار در شيايجاد يك روش استاندارد جهت ارجاع به

.كاربران جلوگيري كنيد بدون حفاظ مثل كليد اوليه با نام فايل توسط(private object) خصوصياز ارجاعات به شي

. كنيداعتبارسنجي accept known good""ارجاع به شي خصوصي را در هر مكاني بوسيله روش

.مجوزهاي واگذار شده جهت ارجاع به اشياء را بررسي كنيد

. باشد يا طرح ارجاع ميIndexاري پارامتر استفاده از مقدار جلوگيري از حمالت دستكبرايبهترين راه حل

http://www.example.com/application?file=1

٢٣

Page 25: OWASP Top 10 2007 Persian

هاي و ديگر روشSQL مطمئن شويد كه عبارات ،اگر بايد ارجاعات مستقيم به ساختارهاي پايگاه داده را در دسترس قرار دهيد

. دهنداجازه نمايش ميدستيابي به پايگاه داده فقط به ركوردهاي مجاز

int cartID = Integer.parseInt ( request.getParameter( "cartID" ) );

User user = (User) request.getSession( ).getAttribute( "user" );

String query = "SELECT * FROM table WHERE cartID=" + cartID + " AND userID=" +

user.getID();

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0329 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4369 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-0229

مراجع

CWE: CWE-22 (Path Traversal), CWE-472 (Web Parameter Tampering) WASC Threat Classification:

http://www.webappsec.org/projects/threat/classes/abuse_of_functionality.shtml http://www.webappsec.org/projects/threat/classes/insufficient_authorization.shtml

OWASP Testing Guide, http://www.owasp.org/index.php/Testing_for_business_logic OWASP Testing Guide,

http://www.owasp.org/index.php/Testing_for_Directory_Traversal OWASP, http://www.owasp.org/index.php/Category:Access_Control_Vulnerability GST Assist attack details, http://www.abc.net.au/7.30/stories/s146760.htm

٢٤

Page 26: OWASP Top 10 2007 Persian

OWASP Top 10 2007

A5 – CROSS SITE REQUEST FORGERY (CSRF) جعل درخواست بين سايتي

مرورگر وب قرباني CSRFحمله . اما ساده و مخرب است،حمله جديدي نيست) CSRF( جعل درخواست بين سايتي

اين .بر را انجام دهد كارemailكند كه عمل دلخواه مهاجم مانند تغيير آدرس احراز هويت شده را به صفحه وبي هدايت مي

:قرار مي گيرندهاي زير در خطر با ويژگيهاافزار نرممهاي منتشر شده و هپذيري بطور گستردهآسيب

. پذيري باشدآسيبمجازشماري جهت جلوگيري از اِعمال هاي هاي مجازشماري فاقد مكانيزمبررسي

: مانند. ( ميسر باشد كردعملان پردازش آن باشد، امكدرخواست ارائه در يك اگر ورودي پيش فرض قادر به

http://www.example.com/admin/dosomthing.ctl?username=admin&passwd=admin)

در session كوكيمانند. مبتني باشنداند هايي كه به صورت اتوماتيك ثبت شده اعتبارنامهفقط برهاي مجاز درخواست

برنامه يا نشانه در صورت عدم ورود به "Remember me" عملكرد گزينه يا جاري زمان نامه درصورت ورود به بر

Kerberos ا از طريق ورود مجتمع با اينترنت شركت كردن در در صورتActive Directory.

احراز هاي اي نشست، اعتبارنامهههاي ارائه شده به صورت خودكار مثل كوكياعتبارنامه فقط برنرم افزارهامتاسفانه امروزه اغلب

.كنندهاي دامنه ويندوز استناد مي يا اعتبارنامهSSL مبدأ، گواهينامه هاي IP، آدرس اوليههويت

، One–Click ،Cross Site Reference Forgeryحمالت ، Riding Session مانند ديگر هاينامبه اين آسيب پذيري

Hostile Linking و حمله Automationمخفف .شود نيز شناخته مي XSRF نيز معموال در مورد آن مورد استفاده قرار

. را برگزيدندCSRF و Cross Site Request Forgery استاندارد هر دو اصطالح MITREو OWASP. مي گيرد

محيط هاي متاثر

.پذير هستند آسيبCSRFافزارهاي تحت وب در برابر تمامي نرم

يآسيب پذير

روش هدايت كاربر را براي درخواست بسياري از توابع بكار مي گيرد، ماننـد معموال Forum كي مواجهه با در CSRFحمله

درخواسـت ديـ بـه تول كـه شود ي مدهي دي در همه صفحات وب توسط قربانري زTag. افزار نرم در logoutصفحه درخواست

. گردد يم منجر logout براي

<img src="http:/ /www.example.com/logout.php">

٢٥

Page 27: OWASP Top 10 2007 Persian

ـ زمـشابه حمله ،بدهدرا مثل انتقال وجوه يي ها اجازه پردازش درخواست ي خود به نرم افزارها onlineبانك يك اگر اتفـاق ري

.مي افتد

<img src="http: / /www.example.com/transfer.do?frmAcct=document.form.frmAcct

&toAcct=4345754&toSWIFTid=434343&amt=3434.43">

از نترانـت ي ايها تيهك كردن سا« :با عنوان 2006 در سال BlackHat كتاب در)Jeremiah Grossman(جِرِمي گِراسمن

ابيري در مـس راتييـ انجـام تغ ي اجبار كاربر برامي دهد كه نشان ) e outsideites from thSntranet IHacking(» خارج

DSL ابيري اگر كاربر نداند كه مس ي حت ي و تي بدون رضا DSL واسط كي )interface( باشـد ي مـ ري پـذ ان امكـ ، وب دارد .

. انجام حمله استفاده كردي براابي ري فرض مسشياز نام پجِرِمي

به طور خودكـار از طريـق مرورگـر شـامل ) نشست يمعموالً كوك ( كاربر احرازهويتاعتبارنامه يل كه به اين دل حمالت نياتمام

. خواهد بودقابل اجرا ، در صورت عدم استفاده مهاجم از اعتبارنامه اينگونه درخواست ها مي شوند

ـ فرستاده شود پس احتمال ري پذبي حمله بتواند به نرم افزار آسهبردارند در tag اگر بـه )logged in ( وارد شـده ي قربـان افتني

يهـا ضـعف . reflected XSS و stored XSS يها ضعفني خطر بشيمانند افزا. كند ي مداي پشي افزاي قابل توجهشكل

XSS شدن به حمله اجرا ي برا CSRF يها ضعف با ياگرچه هر نرم افزار . اج ندارند ي احت XSS مستعد حملـه CSRF اسـت

CSRF حملـه برابرر محافظت د برايكه خودكار ري غ يها سرقت اعتبارنامه براي XSSضعف از واندت ي م CSRF حمله يول

يبـ ي ترك صـورت بـه كي از هر دو تكن يافزار نرم يها worm از ياري بس .كند )Exploit( بهره برداري مي شوند، در نظر گرفته

.كنندي استفاده م

ايـن بكـارگيري تـا زمـان در نـرم افـزار XSS هـاي يري پذ بيحذف آس مي بايست بر CSRFهنگام دفاع در مقابل حمالت

. بكار رفته در نظر گرفته شوندXSSبراي عبور از حفاظ هاي ضعف ها

بررسي امنيت

) tokens (يهـا نـشانه انـواع از ي و سـپس مطالبـه برخـ ديـ تول لهي بوس CSRFافزار در مقابل حمالت از نرم محافظت ،هدف

.شودي خودكار ارائه نمشكل مرورگر به از طريق كه احرازهويت است

اگـر چـه . را كشف كننـد CSRF يهاي ريپذ بي آس توانندي خودكار م يشگرهاي از پو يامروزه، تعداد كم : خودكار يها روش

اما اگر باشدي ضعف توانا هستند، ممكن مني اصي در تشخي كه به قدر كافگرشي پوي موتورهاي براCSRF يها كشف ضعف

٢٦

Page 28: OWASP Top 10 2007 Persian

OWASP Top 10 2007

د، استفاده نكرده باشـ )CSRF) Anti-CSRF ضد حفاظ و در مقابل از پيدا كرده را XSS يريپذ بي آس كي نرم افزار شگريپو

.افزايش پيدا مي كند CSRF آماده شيحمالت از پبه خطر افتادن آن توسط احتمال

مكـانيزمي نيي تع يبرا. باشدي م CSRF مناسب در مقابل دفاع نيي تع ي برا عي سر ي روش يري نفوذپذ شي آزما :ي دست يها روش

. است روشنيمؤثرتر) برنامه( كدي بررس، پياده سازي شده باشد و قدرتمندحيصحكه به شكل

محافظت

تنهـا . استناد كنند شوندي مرورگر ارائه م از طريق كه به صورت خودكار ) Token(ييها نشانه ايها به اعتبارنامه دينرم افزارها نبا

حملـه دچـار خودكـار شكل به و اورديكه مرورگر آن را به خاطر ناست )custom Token( نشانه سفارشي ازراه حل، استفاده

CSRF نگردد.

: شودنهي نرم افزارها نهادي در تمامدي باري زيهاي استراتژ

.ديمطمئن شو ها در نرم افزارXSSاز عدم وجود آسيب پذيري

طـور مرورگر بـه لهي كه بوسيي هاURLها و در فرم)custom random tokens( نشانه هاي سفارشي تصادفي از

: مانند. ديي استفاده نماد،نشوي خودكار ارائه نم

<form action=" /transfer.do" method="post">

<input type="hidden " name="8438927730" value="43847384383">

</form> براي تـابع تواننديها م token اين صحيح مي باشد؟ ي متعلق به كاربر جار ارائه شده Token آيا كه دي كن بررسي سپس

ي منحصر به فـرد بـرا Token حفاظت استفاده از نيتري قو. باشندكتاي ها sessionيا براي همه خاص يا صفحه كاربر

.داشت ج خواهداحتيا ي و نگهدارتوليدكامل تر كردن آن به اما استها دادهز ابخصوصي مجموعه ايهر تابع خاص

يقـ ي از حقنانياطمبراي تراكنش ثبت استفاده از اي مجدد تي با ارزش، احراز هو يها تراكنش اي حساس يها داده يبرا

ـ هـا درخواسـت بررسي به منظور ي ارتباط تلفن اي email مثل ي خارج يها زميمكان. است يبودن درخواست ضرور اي

.دي كنمي تنظ را كاربر از درخواست ساختنآگاه

٢٧

Page 29: OWASP Top 10 2007 Persian

تنهـا از . ديـ اسـتفاده نكن ارزش با يها ش انجام تراكن اي حساس يها داده ي برا ها URL در GET يها از درخواست

تصادفي كه باعـث ايجـاد token با URLهرچند . دي حساس استفاده كن يها پردازش داده براي POST يها روش

URL يكتا مي شود، مي تواند حمله CSRFارگيري اين حمله تقريبا غيرممكن است را بوجود بياورد اما بك.

ـ احراز هو ،ي تصادف يهاToken آن را با ديشما با . ستا يحفاظت ناكاف براي يي به تنها POST كياستفاده از تكن تي

در مقابـل مناسببمنظور حفاظت ) re–authentication( مجدد تي احراز هواي) out of band(خارج از محدوده

CSRFدي كنبي ترك .

ـ ا.)نديمنابع را بب( دي كنمي را تنظview state user key يژگيو NET.ASP در ي بررسـ مـشابه ي روش، روشـ ني

Tokenدهدي داده شد را ارائه محي كه در باال توضي تصادف .

از ياري از بـس تواننـد ي مـ CSRF شرفتهيـ حمالت پ ي ول شود ي م نرم افزار يريها سبب كاهش دسترس پذ راه حل نيه ا چ اگر

. موجود در نرم افزار استيها يريپذ بي آسي و حذف تمامكتاي يهاToken استفاده از كي تكننيتري قو. بگذرندها تيمحدود

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0192 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-5116 MySpace Samy Interview: http://blog.outer-court.com/archive/2005-10-14-n81.html An attack which uses Quicktime to perform CSRF attacks

http://www.computerworld.com/action/article.do?command=viewArticleBasic&articleId=9005607&intsrc=hm_list

مراجع

CWE: CWE-352 (Cross-Site Request Forgery) WASC Threat Classification: No direct mapping, but the following is a close match:

http://www.webappsec.org/projects/threat/classes/abuse_of_functionality.shtml OWASP CSRF, http://www.owasp.org/index.php/Cross-Site_Request_Forgery OWASP Testing Guide, https://www.owasp.org/index.php/Testing_for_CSRF OWASP CSRF Guard, http://www.owasp.org/index.php/CSRF_Guard OWASP PHP CSRF Guard, http://www.owasp.org/index.php/PHP_CSRF_Guard RSnake, "What is CSRF?", http://ha.ckers.org/blog/20061030/what-is-csrf/ Jeremiah Grossman, slides and demos of “Hacking Intranet sites from the outside”

http://www.whitehatsec.com/presentations/whitehat_bh_pres_08032006.tar.gz Microsoft, ViewStateUserKey details, http://msdn2.microsoft.com/en-

us/library/ms972969.aspx#securitybarriers_topic2

٢٨

Page 30: OWASP Top 10 2007 Persian

OWASP Top 10 2007

خطانادرست نشت اطالعات و مديريت A6 – INFORMATION LEAKAGE AND IMPROPER ERROR HANDLING

دليـل يـا نقـص حـريم خـصوصي بـه درباره پيكربندي، طرز كـار داخلـي اطالعات شتتوانند به طور غيرعمدي نَ افزارها مي نرم

را از طريـق مـدت زمـان پـردازش خـود توانند وضـعيت درونـي ها مي همچنين برنامه . داشته باشد افزار را مشكالت مختلف نرم

هـاي خطـا ايش متن خطـاي يكـسان بـا شـماره هاي مختلف از قبيل نمهاي معين يا دادن پاسخ هاي متفاوت به ورودي عمليات

ي هـا خطا پرجزئيـات يـا هاياز طريق پيغام اطالعات وضعيت دروني خود را نرم افزارهاي تحت وب مكررا .دنمختلف، فاش كن

خودكـار بكـار انـداختن حمـالت ين اطالعات شيوه اي براي آغاز يا حتي اغلب اوقات ا . ندنكمي فاش )debug (اشكال زدايي

.دهدمي قدرتمندتر را ارائه

محيط هاي متاثر

.هستندپذير آسيب خطانادرست افزارهاي تحت وب در برابر نشت اطالعات و مديريت ختلف نرمتمام ساختارهاي م

آسيب پذيري

بـراي مهـاجمين مفيـد بخـوبي هـاي خطـا اين پيغـام . دهندهاي خطا را توليد كرده و به كاربران نمايش مي افزارها مكرراً پيغام نرم

در اينجا . ندنك آشكار مي استپذيري مفيد عاتي را كه براي استفاده از يك آسيب سازي يا اطال بطوريكه آنها جزئيات پياده . هستند

:اشاره مي كنيمچند مثال به ذكر

، دسـتورات (stack traces)هـا مديريت خطاي تفصيلي و پر از جزئيات، كه اطالعاتي بيش از اندازه ماننـد تـوالي پـشته

.دهدمي را نشان (debugging) يا ساير اطالعات اشكال زدايي SQL ناموفق

پـشتيباني از نـام كـاربري يكـسان بـا ماننـد . ندنك نتايج متفاوتي را توليد مي ،هاي مختلف عملكردهايي كه بر مبناي ورودي

و همچنين در مورد كلمات بايست براي كاربران متفاوت مي )login( به سيستم عمليات ورود رمزهاي عبور مختلف براي

.كنندها كدهاي خطاي متفاوتي را توليد مي بسياري از سيستمهرچند .ني را توليد كندمتن يكساعبور متفاوت

بررسي امنيت . ديگر استروش هايهاي خطا يا عدم افشاي اطالعات از طريق پيغامنرم افزار از لحاظ بررسي ،هدف

د نـ توانابزارهاي تحليل ايستا مـي . مي شوند هاي خطا پذيري معموالً باعث توليد پيغام ابزارهاي پويش آسيب :هاي خودكار روش.

.ها نيستندپيغامو كنند اما قادر به بررسي معاني شوند را جستجهايي را كه موجب افشاء اطالعات مي APIاستفاده از

٢٩

Page 31: OWASP Top 10 2007 Persian

خطـا و الگوهـايي را كـه باعـث نـشت اطالعـات نامناسـب توانـد مـديريت مي) code review(بررسي كد : هاي دستيروش

كند امـا فهميـدن اينكـه آزمايش نيز پيغام هاي خطايي را توليد مي . خواهد بود بر را جستجو كند اما اين كار بسيار زمان مي شوند

.اي است رقابت تازهآغاز ،اندكدام مسيرهاي خطا پوشش داده شده

محافظتنـرم افزارهـاي در هاي خطـا د پيغامبراي امتحان تولي OWASP سايت web scarab نويسان وب بايد از ابزارهايي مانندبرنامه

. اند مطمئناً خطاي غيرمنتظره اي را توليد خواهنـد كـرد نشده آزمايشنرم افزارهايي كه به اين روش . استفاده كنند خود تحت وب

ه بـراي جلـوگيري از افـشاي ناخواسـت (exception handling) اسـتثناگرداني اسـتاندارد معمـاري دربردارندهبايد نرم افزارها

.اطالعات به مهاجمين باشند

:اندمراحل زير به طور موثر آزمايش شده. است) discipline( رعايت نظم خاصي پيگشيري از افشاي اطالعات مستلزم

.شويد مطمئن سهيم هستند، استثناء گرداني عموميهاي روشدر اجراي افزار، نويسي نرماز اينكه همه افراد گروه برنامه

اشـكال زدايـي، اطالعـات بـويژه . را غيرفعال يا محدود كنيد(detailed error handling)يلي ت خطاي تفصيمدير

. يا اطالعات مسير را به كاربران نهايي نمايش ندهيد(stack traces)ها توالي پشته

در زمـان اطمينان پيدا كنيد كه مسيرهاي امن كه خروجي چندگانه دارند پيغام هاي خطاي يكـسان يـا مـشابه و تقريبـاً

بـه هـا شنتـراك تمامي زمان انتظار تصادفي براي از برقراري روشدر صورت غيرممكن بودن اين . يكسان را بازگردانند

.استفاده كنيد جزئيات از مهاجمين پنهان كردن منظور

مخـرب ممكن است نتـايج ) و غيرهApache, IIS(مانند اليه پايگاه داده، سرويس دهنده وب اصلي هاي مختلف اليه

)Exploit( بهـره بـرداري ها به منظـور پيـشگيري از ها در تمامي اليه بررسي و پيكربندي خطا .يا استثنايي را بازگرداند

.هاي خطا توسط نفوذگران بسيار مهم استپيغام

باشد يا داخل كد سيستم، كدهاي ) custom( سفارشي هاي رايج بر حسب اينكه خطا در كد frameworkبدانيد كه

ايجاد اداره كننده پيش فرض خطا به منظور بازگردانـدن پيغـام خطـاي مطـابق . دنگردان مختلفي را برمي HTTPطاي خ

. براي اكثر كاربران و با توجه به مسيرهاي خطا ارزشمند استقوانين

٣٠

Page 32: OWASP Top 10 2007 Persian

OWASP Top 10 2007

هـاي پـويش گرداند، توانايي ابزار را برمي(ok) "200" خطاي فرض خطا بدليل اينكه هميشه صفحاتاداره كننده پيش

كه امنيت از طريـق مادامي. دهد تعيين اينكه آيا يك خطاي جدي اتفاق افتاده است يا خير را كاهش مي برايخودكار را

.نياز استتري را اليه دفاعي افزونبه شود، ارائه مي"security through obscurity“ابهام

به روش اين . دهند قرار مينرم افزارهاي خود را در همه هاي بزرگتر كدهاي خطاي تصادفي يا يكتايي برخي از سازمان

از طرفـي . خطاي خـاص كمـك كنـد يك جهت رفع مناسب ي پيدا كردن راه حل براي (help desk)بخش پشتيباني

.ارائه دهدهم را نرم افزار ممكن است به مهاجمين روش دقيق شكستن

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-4899 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-3389 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2002-0580

مراجع

CWE: CWE-200 (Information Leak), CWE-203 (Discrepancy Information Leak), CWE-215 (Information Leak Through Debug Information), CWE-209 (Error Message Information Leak), others.

WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/information_leakage.shtml

OWASP, http://www.owasp.org/index.php/Error_Handling OWASP,

http://www.owasp.org/index.php/Category:Sensitive_Data_Protection_Vulnerability

٣١

Page 33: OWASP Top 10 2007 Persian

ناقصاحراز هويت و مديريت نشستA7 – BROKEN AUTHENTICATION AND SESSION MANAGEMENT

.اي بحرانـي اسـت در جهت تامين امنيت نرم افـزار مـسئله )session management( نشست احراز هويت مناسب و مديريت

هـا ن آ هاي نشست به واسـطه چرخـه حيـات Tokenها و ثرا شامل عدم موفقيت در حفاظت از اعتبارنامه هاي اين ناحيه اك ضعف

تخريـب ، (hijacking of accounts)هـاي كـاربران يـا مـديران ها مي تواننـد منجـر بـه سـرقت حـساب اين ضعف. است

و تجـاوز بـه حـريم )accountability controls( هاي پاسخگويي و كنترل)undermine authorization(مجاز شماري

.شوند) privacy violation(خصوصي

محيط هاي متاثر

و مجازشـماري، آسـيب پـذير )session management( نشـست هاي مديريتوب در برابر ضعفتحت افزارهاي تمامي نرم

.هستند

آسيب پذيري

احراز هويت فرعي فعاليت هاي ها اغلب اوقات در ضعفهاي موجود در مكانيزم اصلي احراز هويت غيرعادي نيستند، اما ضعف

،) remember me( بـه يـادآوري ،) time out( به پايان رسيدن زمـان ، مديريت رمز عبور،(logout)مانند خروج از سيستم

. و بروزرساني حساب مرسوم هستند(secret question)سوال محرمانه

بررسي امنيت

هـاي كـاربران ها و اعتبارنامه و بدرستي از هويت كردهصديق تبه درستي كاربران را نرم افزار است كه موضوع بررسي اين ،هدف

.محافظت كند

الگوهـاي درهـا پـذيري هاي بسيار مختلفـي را بـراي تـشخيص آسـيب پذيري زمان ابزارهاي پويش آسيب :هاي خودكار روش

ابزارهـاي تحليـل ايـستا نيـز بـراي تـشخيص . دارنـد )custom authentication( سفارشـي احراز هويت ومديريت نشست

. استفاده نمي شوند)custom code( در برنامه سفارشيمشكالت مديريت نشست و احراز هويت

سـازي تـصديق، مـديريت نشـست و آزمايش و مرور كد، خـصوصاً بطـور تركيبـي در بررسـي درسـتي پيـاده :هاي دستي روش

.عملكردهاي فرعي كامالً موثر است

٣٢

Page 34: OWASP Top 10 2007 Persian

OWASP Top 10 2007

محافظت

هـاي تنهـا گزينـه بـراي تمـام قـسمت SSL از اينكـه ابتـدا . سازي اعتبارنامه استناد مي كند احراز هويت به ارتباط امن و ذخيره

شده يـا hashها به شكل و اينكه همه اعتبارنامه ) شده را ببينيد نارتباطات محافظت -A9بخش ( است نرم افزار احرازهويت شده

.اطمينان حاصل كنيد) را ببينيدسازي محافظت نشده رمزنگاريخيرهـ ذA8 بخش (شود رمز شده ذخيره مي

:از جمله مهمترين مالحظات موارد زير است. نياز داردريزي دقيقي برنامهبههاي تصديق پيشگيري از ضعف

اسـتفاده كنيـد، تحـت )inbuilt session management mechanism (فقط از مكانيزم مديريت نشست درونـي

. و استفاده نكنيدشتههيچ شرايطي اداره كننده هاي نشست ثانويه را ننو

ايـن عمـل . يـا درخواسـت نپذيريـد URLاز پيش تنظيم شده يا غير معتبر را از ، جديد كنندگان هويت نشست تعيين

. شود ناميده مي)session fixation attack(حمله تثبيت نشست

نوع مانند . را براي مديريت نشست يا احراز هويت، محدود يا پاك كنيد)custom cookies( سفارشيهايكد كوكي

ايـن . (home grown single–sign on (sso)) خـانگي انفـرادي ثبـت يا(remember me)سودمند يادآوري

آزمـايش شـده قـوي بكـار SSO يـا (federated authentication)هاي احراز هويـت وابـسته حلعمل براي راه

.رودنمي

ن مكانيزم به راحتي در از اينكه اي . از مكانيزم احراز هويت واحد با قدرت كافي و تعداد فاكتورهاي مناسب استفاده كنيد

اين مكـانيزم را پيچيـده نـسازيد زيـرا ممكـن . ، اطمينان حاصل كنيد قرار گيرد replay يا spoofing حمالت معرض

. گيرداست در جهت حمله به خودش مورد استفاده قرار

را از صفحه loginيند آهميشه فر . نشده شروع شود رمزگذاري از صفحه )login( ورود به سيستم يندآاجازه ندهيد فر

جلـوگيري از بـراي )fresh( شـده تازهيا نشست جديد Token صفحه را بوسيله كرده و آغاز و رمزگذاري شده دوم

رمزنگاري )session fixation( تثبيت نشستو حمالت phishingها يا حمالت sessionسرقت اعتبارنامه ها و

.كنيد

.احياء نشست جديد را بر اساس احراز هويت موفق يا تغيير سطح مجوزها در نظر بگيريد

بايـد تمـامي جزئيـات )logout( خروج از سيستم .داردرا ) logout(مطمئن شويد هر صفحه، لينك خروج از سيستم

عوامل انساني را در نظر .را پاك كند) client side( سمت كاربر و كوكي هاي)server side( سمت سرورنشست

٣٣

Page 35: OWASP Top 10 2007 Persian

اكتفـا يـا پنجـره )tab(به بـستن برگـه تنها از سيستم )logout( خروج موفقيت آميز چنانچه كاربران به جاي : بگيريد

. تصديق سوال نكنيدبراينها آاز مي كنند

استفاده كنيـد تـا )timeout period( اختصاص دوره زمانبندي پايان پذير زهاي در حال حفاظت ابر طبق ارزش داده

)هرچه كوتاهتر بهتر. (قطع شود )inactive session( نشست غيرفعال بطور خودكار ارتباط

كـه از مادامي). ها، تنظيم مجدد رمز عبور ها و پاسخ پرسش(فقط از عملكردهاي احراز هويت كمكي قوي استفاده كنيد

يــك طرفــه ســازي هــا اســتفاده مــي كنيــد، درهــم tokenارهــايي ماننــد رمزهــاي عبــور و نامهــاي كــاربري يــا اعتب

)one-way hash( جلوگيري از حمالت افشاء براي ها را پاسخ)disclosure attacks (بكار بگيريد .

. ا را در دسـترس قـرار ندهيـد هـ log يا URLهاي معتبر در يا هر بخشي از اعتبارنامه sessionكنندگان هويت تعيين

.)درييگبكار نرا هاي ثبت رمزهاي عبور كاربر در فايليا ذخيره سازي ها Sessionبازنويسي (

. رمز عبور جديد، رمز عبور قديمي را بررسي كنيداز كاربر هنگام استفاده

ــه ــه اعتبارنام ــايب ــرداري ه ــل كالهب ــد ) Spoofable( قاب ــاي آدرسمانن ــا IPه ــدوده ي ــاي درس آمح maskه

)address range masks ( ،DNS يا جستجوي معكوس DNS كننده ، سرآيندهاي بازگشت(referrer headers) يـا

. مشابه آنها به عنوان تنها مكانيزم احراز هويت اعتماد نكنيد

از . عبـور باشـيد كلمـه )reset(براي تنظيم مجدد بعنوان مكانيزمي emailهاي مراقب ارسال موارد محرمانه به آدرس

تنظيم مجـدد پيگيري را به محض email دستيابي استفاده كنيد و براي تنظيم مجدد اعداد تصادفي با محدوديت زماني

، قبـل از email مجـاز بـه تغييـر آدرس )self–registered(ثبت - خود مراقب باشيد كاربرانِ . كلمه عبور ارسال كنيد

. ارسال كنند خود قبليemailس پيغامي را به آدر،عمال تغيير آدرساِ

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6229 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6528

مراجع

CWE: CWE-287 (Authentication Issues), CWE-522 (Insufficiently Protected Credentials), CWE-311 (Reflection attack in an authentication protocol), others.

٣٤

Page 36: OWASP Top 10 2007 Persian

OWASP Top 10 2007

WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/insufficient_authentication.shtml http://www.webappsec.org/projects/threat/classes/credential_session_prediction.shtml http://www.webappsec.org/projects/threat/classes/session_fixation.shtml

OWASP Guide, http://www.owasp.org/index.php/Guide_to_Authentication OWASP Code Review Guide,

http://www.owasp.org/index.php/Reviewing_Code_for_Authentication OWASP Testing Guide, http://www.owasp.org/index.php/Testing_for_authentication RSNAKE01 - http://ha.ckers.org/blog/20070122/ip-trust-relationships-xss-and-you

٣٥

Page 37: OWASP Top 10 2007 Persian

A8 – INSECURE CRYPTOGRAPHIC STORAGE انباره محافظت نشده رمزنگاري

بـا ايـن وجـود كوتـاهي در .افزارهاي تحت وب مي باشد هاي حساس بوسيله رمزنگاري، بخش كليدي اكثر نرم محافظت از داده

ي حساس به دليل استفاده نرم افزارها از روش هـاي رمزنگـاري ضـعيف در اسـتفاده از رمزهـاي نامناسـب يـا هارمزنگاري داده

هاي حساس و نقض توانند منجر به افشاي داده ها مي اين ضعف . شايع مي باشد بسيار اشتباهات جدي در استفاده از رمزهاي قوي

. شوندقوانين

محيط هاي متاثر

. پذير هستندشده رمزنگاري آسيبن ت وب در برابر انباره محافظافزارهاي تحتتمامي نرم

آسيب پذيري :شودترين مشكالت شامل موارد زير ميرايج. طلبدريزي دقيقي را ميهاي رمزنگاري برنامهپيشگيري از ضعف

هاي حساسعدم رمزگذاري داده

هاي خانگياستفاده از الگوريتم

هاي قوياستفاده حفاظت نشده از الگوريتم

) و غيرهMP5 ،SHA-1 ،RC3 ،RC4(هاي آزمايش شده ضعيف استفاده مداوم از الگوريتم

. محافظت نشدهمحل هاي و نگهداري كليدها در (hard coding keys) سختكليدهاي كدگذاري

بررسي امنيت . استافزار تعيين رمزگذاري صحيح اطالعات حساس انباره توسط نرم،هدف

دابزارهـاي پـويش كـ .پذيري به هيچ وجه قادر به بررسـي انبـاره رمزنگـاري نيـستند ابزارهاي پويش آسيب : هاي خودكار روش

اجـراي يـا درستي استفاده از آنهـا قادر به تشخيص اما ،هاي رمزنگاري شناخته شده را تشخيص دهند APIتوانند استفاده از مي

.نيستنداجزاي خارجي رمزگذاري در

مـرور كـد بهتـرين روش بـراي بررسـي . توانـد انبـاره رمزنگـاري را بررسـي كنـد روش مانند پويش نمي اين: هاي دستي روش

مـوارد برخـي ايـن روش در . باشـد سازي صحيح مكانيزم و مدريت كليد مـي افزار و پياده هاي حساس بوسيله نرم داده رمزگذاري

.هاي خارجي استشامل آزمايش پيكربندي سيستم

٣٦

Page 38: OWASP Top 10 2007 Persian

OWASP Top 10 2007

محافظت

سازي صـحيح رمزنگـاري پس از آن بايد از پياده . ته اطمينان از رمزگذاري صحيح آنچه كه بايد رمزگذاري شود است مهمترين نك

هاي بسيار زيادي براي اسـتفاده نادرسـت از رمزنگـاري وجـود دارد، پيـشنهادات زيـر از آنجائيكه كه روش . كرداطمينان حاصل

:دناي اطمينان از مديريت امن اصول رمزنگاري در نظر گرفته شوبايست به عنوان بخشي از برنامه آزمايشي بر يم

، رمزنگـاري كليـد عمـومي AESهاي عمومي تاييد شده مانند هاي رمزنگاري را توليد نكنيد، تنها از الگوريتم الگوريتم

RSA و SHA – 256سازي يا از الگوريتم هاي بهتر براي درهم(hashing)استفاده كنيد .

يـا بهتـر SHA–256تر مانند هاي ايمن از جايگزين . SHA–1 يا MD5 مانند ،اي ضعيف استفاده نكنيد هاز الگوريتم

. استفاده كنيد

هرگز كليدهاي خصوصي . توليد و كليدهاي خصوصي را در نهايت مراقبت نگهداري كنيد Offlineكليدها را بصورت

. هاي محافظت نشده انتقال ندهيدرا بر روي كانال

ــهاز ــه اينك ــه اعتبارنام ــد اعتبارنام ــاخت مانن ــاي زيرس ــف ه ــي ص ــات دسترس ــا جزئي ــاه داده ي ــاي پايگ MQه

)MQ queue access details (بـه شـكل يا محافظت مي شوند ها و مجوزهاي سخت سيستم فايلاز طريق كنترل

. ينان حاصل كنيدآساني توسط كاربران محلي يا راه دور قابل رمزگشايي نباشد، اطمشده و به رمزگذاري امن

به طور مثال در صورتيكه مخزن . هاي رمزگذاري شده بر روي ديسك اطمينان حاصل كنيد از عدم رمزگشايي آسان داده

.فايده استارتباط پايگاه داده دسترسي رمزگذاري نشده را ميسر سازد، رمزگذاري پايگاه داده بي

ـ PCI استاندارد امنيـت داده 3 بر طبق نيازمندي اسـتاندارد پـذيرش . هـاي دارنـده كـارت محافظـت كنيـد د از داده ، باي

PCI DSS2008هاي اعتبـاري سـروكار دارد پـيش از سـال براي بازرگانان و هر فرد ديگري كه به نحوي با كارت

هاي غيرضروري مانند اطالعات عالمت مغناطيسي يا شماره صاحب اصلي بهترين روش، عدم ذخيره داده . جباري است ا

PAN) اگـر شـماره . است) و يا آنچه كه به عنوان شماره كارت اعتباري شناخته مي شودPAN ،را ذخيـره مـي كنيـد

سـه (CVV به طور مثال هرگز و تحت هيچ شرايطي اجازه ذخيره شـماره . نيز ضروري است DSSملزومات پذيرش

.سازي الزم را ببينيداي پيادهه و كنترلPCI DSSبراي اطالعات بيشتر راهنماي . را ندهيد) رقم پشت كارت

٣٧

Page 39: OWASP Top 10 2007 Persian

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6145 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-1664 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-1101 (True of most Java

EE servlet containers, too)

مراجع

CWE: CWE-311 (Failure to encrypt data), CWE-326 (Weak Encryption), CWE-321 (Use of hard-coded cryptographic key), CWE-325 (Missing Required Cryptographic Step), others.

WASC Threat Classification: No explicit mapping OWASP, http://www.owasp.org/index.php/Cryptography OWASP Guide, http://www.owasp.org/index.php/Guide_to_Cryptography OWASP, http://www.owasp.org/index.php/Insecure_Storage OWASP, http://www.owasp.org/index.php/How_to_protect_sensitive_data_in_URL’s PCI Data Security Standard v1.1,

https://www.pcisecuritystandards.org/pdfs/pci_dss_v1-1.pdf Bruce Schneier, http://www.schneier.com/ CryptoAPI Next Generation, http://msdn2.microsoft.com/en-us/library/aa376210.aspx

٣٨

Page 40: OWASP Top 10 2007 Persian

OWASP Top 10 2007

A9 – INSECURE COMMUNICTION ناامن ارتباطات

افزارهاي تحت وب مكررا در رمزگذاري ترافيك شبكه، علي رغم ضروري بودن اين امر براي محافظت از ارتباطـات حـساس نرم

ت احراز هويت شده بويژه صـفحات وب قابـل دسـتيابي از ابايد براي همه ارتباط ) SSLمعموالً (رمزگذاري . خورندشكست مي

نـشانه در نظر گرفته شود، در غير اينصورت نرم افـزار )backend connections( خط پشتطريق اينترنت، همانند ارتباطات

)token( هاي حساس ماننـد عالوه بر اين رمزگذاري بايد در زمان انتقال داده . دهد احراز هويت يا نشست را در دسترس قرار مي

كنند يا وادار به عقب مي (fall back)يي كه عقب نشيني افزارهانرم. مورد استفاده قرار گيرندياطالعات كارت اعتباري يا سالمت

دانـد كـه الزم مـي PCIاستاندارد . توانند توسط مهاجمين مورد سوء استفاده قرار بگيرند مي ،شوندنشيني از حالت رمزگذاري مي

.همه اطالعات كارت اعتباري برروي اينترنت بصورت رمزگذاري انتقال داده شود

محيط هاي متاثر .پذير هستند آسيبناامنافزارهاي تحت وب در برابر ارتباطات مي ساختارهاي نرمتما

آسيب پذيريتوانـد بـه كنـد مـي كوتاهي در رمزگذاري ارتباطات حساس به اين معني است كه مهاجمي كه ترافيك شبكه را استراق سـمع مـي

هاي مختلف در برابـر در نظر داشته باشيد كه شبكه . يدا كند دسترسي پ ،ها يا اطالعات حساس مبادله شده تبادالتي شامل اعتبارنامه

اي مورد نفـوذ به هر حال درك اين موضوع كه سرانجام يك ميزبان در هر شبكه . خطر استراق سمع در سطوح متفاوتي قرار دارند

را نـصب خواهنـد (sniffer) افزارهاي استراق سمع نرم ،هاي مختلف هاي سيستم گيرد و مهاجمين براي ربودن اعتبارنامه قرار مي

SSL اسـتفاده از ،افزارها بسيار محتمل است دسترسي به نرم براي ناامنهاي از آنجائيكه استفاده از شبكه . كرد، حائز اهميت است

sessionهاي احراز هويـت يـا با هر درخواست شامل اعتبارنامهHTTPاز آنجائيكه . براي ارتباط با كاربران نهايي حياتي است

token ورود به سيستم شود نه تنها درخواست واقعي مي )login( بلكه تمامي ترافيك احراز هويت شده به عبور از طريق SSL

.باشندنيازمند مي

امـا باشـند هـا امـن تـر مـي اگرچه اين شبكه. نيز مهم است)backend servers( سرورهاي پشت خطت با ارمزگذاري ارتباط

سرور هاي پـشت خـط برروي SSLبنابراين استفاده از . تر و بيشتر است دهند حساس يي را كه انتقال مي هااطالعات و اعتبارنامه

هاي امنيتي اجتماعي، به عنوان حريم هاي اعتباري و شماره هاي حساس مانند كارترمزگذاري داده. العاده مهم استفوق

٣٩

Page 41: OWASP Top 10 2007 Persian

براي مـديريت اتـصاالت ماننـد SSLاهمال در استفاده از . شوندها محسوب مي مالي براي بسياري از سازمان قوانينصوصي و خ

.ها، پذيرش ريسك را به دنبال خواهد داشتداده

بررسي امنيت

.افزار مي باشد بررسي رمزگذاري مناسب براي تمامي ارتباطات حساس و معتبر توسط نرم،هدف

ارتبـاطي بـا كـاربران وط خطـ بـرروي SSLده از بررسـي اسـتفا قـادر بـه پـذيري ابزارهاي پـويش آسـيب : هاي خودكار روش

)front end( هاي مرتبط با و همچنين يافتن ضعفSSL ايـن ابزارهـا بـه اتـصاالت . هـستندbackend دسترسـي ندارنـد و

ـ ابزارهاي تحليل ابتدا ممكن است قـادر بـه كمـك در تحليـل بـسياري از فراخـواني . توانند امنيت آنها را بررسي كنند نمي ه هـا ب

. ها را درك نخواهند كرد باشند اما روش منطقي مورد نياز براي انواع سيستمbackendهاي سيستم

بررسـي كنـد امـا front end ارتباط را بررويSSLهاي مرتبط با و ضعفSSLتواند استفاده اين روش مي: روشهاي دستي

بسيار موثر back end در تمامي اتصاالت SSLفاده درست از مرور كد براي بررسي است. روشهاي خودكار احتماالً موثرتر است

.است

محافظت. شوند، اسـت هاي حساس انتقال داده مي كه داده محلي اتصاالت احراز هويت شده يا هر در SSLمهمترين محافظت، استفاده از

بـه . تيجه درك و تحليل محيط مهم اسـت افزارها وجود دارد، در ن براي نرم SSLجزئيات بسياري در ارتباط با پيكربندي مناسب

اما اين روش به تنهايي كنترل مناسـبي ،كند با اطمينان باال فراهم ميSSLهاي نوار سبزرنگي را براي گواهينامهIE 7.0طور مثال

.براي تاييد استفاده امن از رمزنگاري نيست

هـا، دهنـد ماننـد اعتبارنامـه برسازي يـا انتقـال مـي هاي حساس يا با ارزش را معت براي تمامي اتصاالتي كه داده SSLاز

.هاي اعتباري، سالمت و ساير اطالعات شخصي، استفاده كنيد جزئيات كارت

پايگاه داده از طريق اسـتفاده سرورهاي وب و سروراز حفاظت مناسب ارتباطات بين عناصر زيرساخت مانند ارتباط بين

.هاي با ارزش اطمينان حاصل كنيدها و دادهوتكل براي اعتبارنامهاز امنيت اليه انتقال يا رمزگذاري سطح پر

ها در زمـان انتقـال داده محافظـت هاي دارندگان كارت ، بايد از داده PCI استاندارد امنيت داده 4هاي نيازمندي براساس

يا SSLيد با استفاده از ها با، شركاء يا كاركنان و راهبران سيستم، به سيستم برخط كاربر به طور كلي دسترسي. كنيد

٤٠

Page 42: OWASP Top 10 2007 Persian

OWASP Top 10 2007

هـا را در صـورت لـزوم سـازي كنتـرل و پيـاده PCI DSSبراي اطالعات بيشتر راهنماهاي . مشابه آن، رمزگذاري شود

.مشاهده كنيد

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-6430 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2005-4704 http://www.schneier.com/blog/archives/2005/10/scandinavian_at_1.html

مراجع

CWE: CWE-311 (Failure to encrypt data), CWE-326 (Weak Encryption), CWE-321 (Use of hard-coded cryptographic key), CWE-325 (Missing Required Cryptographic Step), others.

WASC Threat Classification: No explicit mapping OWASP Testing Guide, Testing for SSL / TLS,

https://www.owasp.org/index.php/Testing_for_SSL-TLS OWASP Guide, http://www.owasp.org/index.php/Guide_to_Cryptography Foundstone - SSL Digger,

http://www.foundstone.com/index.htm?subnav=services/navigation.htm&subcontent=/services/overview_s3i_des.htm

NIST, SP 800-52 Guidelines for the selection and use of transport layer security (TLS) Implementations, http://csrc.nist.gov/publications/nistpubs/800-52/SP800-52.pdf

NIST SP 800-95 Guide to secure web services, http://csrc.nist.gov/publications/drafts.html#sp800-95

٤١

Page 43: OWASP Top 10 2007 Persian

URL A10 – FAILURE TO URL ACCESSكوتاهي در محدود كردن دسترسي به

. براي كاربران غيرمجاز ارايه نشود ، به صفحه مورد نظر )links(پيوندها اين است كه URLاغلب اوقات تنها راه محافظت براي

باشـد، و مـي توانـد توابـع را خوش شانس قادر به يافتن و دسترسي به اين صفحات مـي حتيا انگيزه، ماهر، يا اما يك مهاجم ب

ها براي محافظت از توابع حساس و داده(security by obscurity) گمنامي از طريقامنيت .ها را ببيند و دادهكردهدرخواست

، انجـام شودبايد قبل از اينكه يك درخواست براي يك تابع حساس پذيرفته هاي كنترل دسترسي روش. افزار موثر نيست در نرم

. اطمينان حاصل شودباشد،به دسترسي به آن تابع قادر و از اينكه كاربر مجاز شده

محيط هاي متاثر .پذير هستند آسيبURLافزارهاي تحت وب در برابر كوتاهي در محدود كردن دسترسي به تمامي ساختارهاي نرم

يب پذيريآس هـاي هـا و روش كـه شـامل حـدس لينـك اسـت (forced browsing)پـذيري بنـام روش اصـلي حملـه بـراي ايـن آسـيب

brute force د كـه در تمـام ندهافزارها اغلب اوقات به كدهاي كنترل دسترسي اجازه مينرم. باشد ميناامن براي يافتن صفحات

code baseنويسان و متخصصين امنيتي مـشكل كه تشخيص آن براي برنامهگشته پيچيده ايجاد و پخش شوند كه منجر به مدلي

ها ها از اين ضعف برخي مثال . شوداين پيچيدگي باعث بروز خطاها، از دست دادن صفحات و در دسترس قرار گرفتن آنها . است

:گرددشامل موارد زير مي

URL شود، اما اگـر كـاربران مجاز، در اليه نمايش ارائه ميهاي خاص يا مخفي كه فقط براي راهبران سايت يا كاربران

، approveTransfer.do/ يا admin/adduser.php/مثل . از وجود آن مطلع باشند براي همه قابل دسترسي است

.شودكه خصوصا با منوي كد منتشر مي

توليـد شـده از طريـق سيـستم را هاي ايستا يا گزارش XMLهاي مخفي مانند افزارها اغلب اجازه دسترسي به فايل نرم

.آيدهاي پنهان بدست مي امنيت مطمئن به واسطه مخفي كردن فايل. دهندمي

بــراي مثــال تــصور كنيــد . مــد هــستندآكننــد، قــديمي يــا ناكاررســي را اجــرا مــيتكــدهايي كــه سياســت كنتــرل دس

/approveTransfer.do هاي كنترلكه سابقاً براي همه كاربران در دسترس بود اما زمانيSOX تنهـا ند آورده شـد ،

، امـا شوداي باشد كه براي كاربران غيرمجاز ارايه ن تنظيمات بايد بگونه . دن مي باش يبراي كاربران تاييد شده قابل دسترس

.زمان درخواست صفحه واقعاً هيچ كنترل دسترسي اجرا نشوددر

٤٢

Page 44: OWASP Top 10 2007 Persian

OWASP Top 10 2007

MacWord 2007ماننـد حملـه بـرروي . سرورروي كند نه بر ارزيابي ميكدي كه مجوزها را تنها بر روي كالينت

.) روي مرروگر صورت گرفتJavaScript دالر از طريق 1700كه انتقال پالتين به ارزش (

بررسي امنيتافـزار در اليـه نمـايش و منطـق تجـارت هـاي موجـود در نـرم URL بررسي اجراي سازگار كنترل دسترسي براي همـه ،هدف

(business logic)مي باشد .

هاي اليه نمـايش بـا هاي دسترسي در كدها و لينك كه موتورهاي تحليل ايستا در تعيين روش كنترل مادامي :هاي خودكار روش

URLپذيري و ابزارهاي تحليل ايستا بداليل مختلف در بررسي كنترل دسترسـي منطق تجاري درگير هستند، پويشگرهاي آسيب

ذيري در تشخيص صفحات مخفي و تعيين مجاز بـودن صـفحات بـراي كـاربران بـا پپويشگرهاي آسيب . با مشكل مواجه هستند

.گردندمشكل مواجه مي

تر براي بررسي مكانيزم كنترل دسترسي استفاده از تركيبي از بازبيني كـد و آزمـايش امنيـت روش موثر و دقيق :هاي دستي روش

codebaseاگر مكـانيزم در ميـان تمـامي . تواند كامالً موثر باشد اگر مكانيزم به صورت تمركز يافته انجام گيرد بازبيني مي . است

.بر خواهد بود و اگر مكانيزم از خارج اجرا شود پيكربندي نيز بايد بازرسي و آزمايش گرددتوزيع شده باشد بازبيني زمان

محافظت

هـا و تريس بـراي ترسـيم نقـش ريزي مجازشماري از طريق ايجـاد يـك مـا ، طرح URLگام كليدي در مقابل دسترسي نامحدود

گذاشـتن . دن اجرا كنURLافزارهاي تحت وب كنترل دسترسي را بايد برروي هر عملكرد تجاري و نرم. باشدافزار مي وظايف نرم

بررسي يكباره مجاز بودن كاربر در طـول . باشدكنترل دسترسي در اليه نمايش و بدون محافظت رها كردن منطق تجاري موثر نمي

اي كـه با ايـن حـال يـك مهـاجم مـي توانـد بـسادگي از مرحلـه .هاي بعدي كافي نيست و عدم بررسي مجدد آن در گام يند آفر

. بگذرد و مقادير پارامتر ضروري اوليه را در گام بعدي جعل كند،شوندمجازشماري بررسي مي

:گرددات شامل موارد ذيل ميكه مهمترين مالحظ. طلبدريزي دقيقي را مي برنامهURLفعال كردن كنترل دسترسي

.افزار استاطمينان از اينكه ماتريس كنترل دسترسي بخشي از تجارت، معماري و طراحي نرم

٤٣

Page 45: OWASP Top 10 2007 Persian

ها و عملكردهاي تجاري بـه وسـيله مكـانيزم كنتـرل دسترسـي مـوثر كـه نقـش كـاربر و URLتمامي محافظت از از

اين روش نـه فقـط يـك بـار از اينكه .طمينان حاصل كنيد كند ا هاي قبلي او را براي هر پردازش بررسي مي درخواست

.گيرد اطمينان حاصل كنيده در طول هر مرحله انجام مياي، بلكبراي آغاز فرآيند چند مرحله

افزار بوسيله مهاجم ماهر و با انگيزه، آزمايش نفوذپذيري را قبل از ايجـاد و تحويـل برداري نرم براي اطمينان از عدم بهره

. كنيدكد اجرا

اي داشته باشـيد، و در باشند توجه ويژه . php، مخصوصا اگر شامل پسوند اجرايي مانند include/libraryبه فايلهاي

آنها بايد براي عدم دسترسي مستقيم مانند بررسي مقادير ثابت . نگهداري كنيدweb rootصورت امكان آنها را خارج از

گمان نكنيد كـه كـاربران از . ايجاد شود بررسي شود(library's caller)اي بخانهكه تنها مي تواند بوسيله فراخواني كتا

URL ها يا APIهاي راهبري و مجوزهاي سطح باال هميشه از محافظت از فعاليت. خبر هستندهاي مخفي و خاص بي

.اطمينان حاصل كنيد

را بررسي كنيد، به طور كامل ايـن فيلتـر بايـد ديـدگاه دنافزار بكار گرفته شو هايي كه نبايد در نرم دسترسي به انواع فايل

"accept known good"هايي كه قصد بكارگيري آنهـا را داريـد ماننـد را دنبال كند و فقط انواع فايلphp, pdf,

html مجاز شمارد و هرگونه تالش براي دسترسي به فايلهاي ثبت، فايلهاي راXML را كه هرگز قصد بكارگيري ... و

. مسدود كند، را نداريدهاتقيم آنمس

هاي كاربر سروكار دارنـد از طريـق كه با ورودي... ، پردازشگر واژه، پردازشگر تصوير و XMLاجزايي مانند پردازشگر

.روز نگه داريد ها بهpatchحفاظت در مقابل ويروس و

نمونه ها

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0147 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2007-0131 http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-1227

مراجع

CWE: CWE-325 (Direct Request), CWE-288 (Authentication Bypass by Alternate Path), CWE-285 (Missing or Inconsistent Access Control)

WASC Threat Classification: http://www.webappsec.org/projects/threat/classes/predictable_resource_location.shtml

٤٤

Page 46: OWASP Top 10 2007 Persian

OWASP Top 10 2007

OWASP, http://www.owasp.org/index.php/Forced_browsing OWASP Guide, http://www.owasp.org/index.php/Guide_to_Authorization

٤٥

Page 47: OWASP Top 10 2007 Persian

مقصد نهايي

OWASP Top 10 ، ازي براي امنيت نرم افزارهاي تحت وب است تنها سرآغ.

گروه اول، كساني كه از علت ارسـال محـصوالت همـراه بـا حفـره هـا : ميلياردي جهان به دو گروه تقسيم مي شوند 6جمعيت «

(Bug) كنند گروه اول تمايل دارند تا فراموش. توسط شركت هاي نرم افزاري اطالع دارند؛ و گروه دوم، كساني كه اطالع ندارند

غالبـا مـا بـا افـرادي در گـروه دوم . كه زندگي مي توانست شبيه روياهاي جواني باشد، قبل از اينكه با واقيت زندگي از بين برود

كه هميشه از اينكه شركت هاي نرم افزاري محـصوالت را قبـل از رفـع حفـره هـا وارد بـازار مـي كننـد، شـوكه ... مواجه هستيم

».مي شوند

2006 مي 25نامه گاردين، اِريك سينك، روز

با استفاده از اين فرصت مي توانيد براي اصالح برنامه و به طور كلي كيفيت . اكثر كاربران و مشتريان در گروه دوم جاي مي گيرند

در اين هايي كه هر ساله ميلياردها دالر مفقود مي شود و ميليونها نفر از طريق آسيب پذيري. امنيت نرم افزار تحت وب اقدام كنيد

. شد، از سرقت هويتشان زيان ديده و فريب مي خورندهراهنما به آن پرداخت

پيشنهاداتي براي طراحان نرم افزار

، )طبقـه بنـدي دارييهـا ( براي اينكه بتوانيد از نرم افزار بدرستي محافظت كنيد، بايد بدانيد كه از چه چيـزي محافظـت مـي كنيـد

طراحـي نـرم افـزار هـاي بـزرگ بـه . شناسيد و اين موارد را در يك ساختار نشان دهيد تهديدات و مخاطراتِ عدم محافظت را ب

.درنظرگرفتن سهم عمده اي از امنيت نياز دارند

اگـر چـه . ها اطمينان حاصل كنيد براساس مدل سازي مخاطره تهديد و طبقه بندي دارايي» كافي«از بكاربردن محافظت

بـه ويـژه اگـر بهتـرين روش (بار مسئوليت را افزايش مي دهـد، ) غيره و SOX ، HIPAA ، Basel(رعايت قوانين

اما صرف زمان و منابع بيشتر، نـسبت بـه بـسنده .) شناخته شده و بطور قابل مالحظه اي سخت تر از ساير قوانين باشد

. مناسب تر به نظر مي رسد،كردن به حداقل امكانات امروزي

.ي و ناپيدا را درخواست كنيدنيازهاي تجاري بويژه نيازهاي غيرعمليات

. همكاري كنيد OWASPضميمه قرارداد محافظت نرم افزار با مشتري از طريق

٤٦

Page 48: OWASP Top 10 2007 Persian

OWASP Top 10 2007

ا استفاده از مـدل سـازي و ساده سازي ساختارها ب(defense in depth)طراحي محافظت كننده شامل دفاع در عمق

.)چگونگي آن را در منابع بيابيد. (تهديد را تقويت كنيد

.از توجه كافي به محرمانگي، يگپارچگي، دسترس پذيري و عدم انكار اطمينان حاصل كنيد

. را در طراحي ها در نظر بگيريدCOBIT يا PCI DSS 1.1سياست ها و استانداردهاي امنيتي مانند

اي طراحان نرم افزارپيشنهاداتي بر

برنامـه نويـسان شخـصي ميليونها پروژه متن باز از پروژه هـاي . متن باز چالش بزرگي براي امنيت نرم افزارهاي تحت وب است

. PostNuke و نرم افزارهاي تحت وب بزرگ مقياس مانند Apache, Tomcatگرفته تا پروژه هاي بزرگ مانند

. شركت كنيد local chapter را بازديد و در همايش هاي joining OWASPبخش

يس مسلط به امنيت كـاهش نفر برنامه نويس سهيم هستند، تعداد آنها را به حداقل يك برنامه نو 4اگر در پروژه بيش از .دهيد

. طراحي و دفاع در عمق و سادگي در طراحي را لحاظ كنيدامنخصوصيات نرم افزار را به صورت كامال

. استفاده كنيد،از استانداردهاي برنامه نويسي كه تقويت كننده ساختارهاي محافظتي برنامه هستند

.ياست آشكارسازي استفاده كنيدبراي اطمينان از مديريت صحيح نقص هاي امنيتي، از س

.منابع را بررسي و در صورت اجرايي و متناسب بودن با محيط آنها را بكار گيريد

پيشنهاداتي براي صاحبان نرم افزار

صاحبان نرم افـزار بايـد مـوارد . صاحبان نرم افزار براي در نظر گرفتن تنظيمات تجاري در زمان و منابع داراي محدوديت هستند

:ا در نظر بگيرندذيل ر

. همكاري كنيد OWASPضميمه قرارداد محافظتي نرم افزار با توليدكنندگان نرم افزار از طريق

.ها مانند نيازهاي امنيتي باشند) NFR(اطمينان حاصل كنيد كه نيازهاي تجاري برنامه شامل نيازهاي غيرعملياتي

.برنامه نويساني كه داراي سابقه خوبي در حوزه امنيت هستند را آموزش داده يا استخدام كنيد

.آزمايش نقص هاي امنيتي را در تمام مراحل پروژه اعم از طراحي، ساخت، آزمايش و اجرا بكارگيريد

.بع ، بودجه و زمان الزم را در نظر بگيريدبراي حصول نتيجه بهتر در برنامه پروژه، صرف منا

٤٧

Page 49: OWASP Top 10 2007 Persian

پيشنهاداتي براي مجريان سطوح پايين تر

ها آنقدر ناچيز هستند كـه آسيب پذيري . به جا و مناسب با سازمان باشد (SDLC) امنسازمان بايد داراي چرخه حيات توسعه

قابل قبول نه تنهـا شـامل مراحـل SDLC. ان توليد آن ترجيح مي دهيم آنها را بعد از ارايه محصول در بازار رفع كنيم تا در زم

: بلكه شامل مراحل زير مي باشدTOP 10آزمايشي

.ها و قراردادهايي كه داراي ملزومات امنيتي هستند اطمينان حاصل كنيد براي نرم افزار استاندارد، از اينكه سياست

.ها و استانداردها رعايت كنيد سياستدر برنامه نويسي سفارشي، اصول برنامه نويسي محافظتي را در

.حاصل كنيد آموزش داده و از به روز بودن مهارت هايشان اطمينانامنبرنامه نويسان را با مهارت هاي برنامه نويسي

.ابزارهاي امنيتي تحليل كد را در بودجه برنامه در نظر بگيريد

.نندگان نرم افزار روشن كنيداهميت بكارگيري امنيت در حصول نتيجه نهايي را براي توليدك

.اصول امنيتي نرم افزار تحت وب را به معماران، طراحان و بازرگانان آموزش دهيد

.گران برنامه كه داراي تشخيص مستقل هستند استفاده كنيد از تحليل

ـ ذيري شيوه هاي پاسخگويي و آشكارسازي را بكارگرفته و روندي را براي پاسخگويي مناسب بـه گزارشـات آسـيب پ

.راي محصوالت ايجاد كنيدب

٤٨

Page 50: OWASP Top 10 2007 Persian

OWASP Top 10 2007

منابع

OWASPپروژه هاي

SPOWA سـايت . نخستين سايت در زمينه امنيت نرم افزارهاي تحت وب اسـتOWASP پـروژه هـا ميزبـان بـسياري از ،

كنفـرانس بـزرگ امنيتـي نـرم در سال ميزبان دو OWASP. است مقاالت و ابزارها، ارايه مطالب ، بالگ ها ، انجمن هاي گفتگو

. محلي استشعبه 80 و داراي بيش از افزار تحت وب

: هستندOWASPپروژه هاي معرفي ذيل از پروژه هاي سودمند

تحت وبامن براي ساخت نرم افزار OWASPراهنماي

OWASPراهنماي آزمايش

)در دست اقدام (OWASPپروژه مرور كد

)در دست اقدام (OWASP ي PHPپروژه

OWASP ي Javaپروژه

OWASP ي .NETپروژه

كتابها

از منابع زير مي توانيد براي يافتن زمينـه مناسـب در انتخـاب عنـاوين مـورد نيـاز . فهرست زير لزوما فهرستي جامع نخواهد بود

:استفاده كنيد

[ALS1] Alshanetsky, I. “php|architect's Guide to PHP Security”, ISBN 0973862106

*BAI1+ Baier, D., “Developing more secure ASP.NET 2.0 Applications”, ISBN 978-0-7356-2331-6

[GAL1] Gallagher T., Landauer L., Jeffries B., "Hunting Security Bugs", Microsoft

Press, ISBN 073562187X [GRO1] Fogie, Grossman, Hansen, Rager, “Cross Site Scripting Attacks: XSS Exploits

and Defense”, ISBN 1597491543 [HOW1] Howard M., Lipner S., "The Security Development Lifecycle", Microsoft Press,

ISBN 0735622140

٤٩

Page 51: OWASP Top 10 2007 Persian

[SCH1] Schneier B., "Practical Cryptography", Wiley, ISBN 047122894X

*SHI1+ Shiflett, C., “Essential PHP Security”, ISBN 059600656X

[WYS1] Wysopal et al, The Art of Software Security Testing: Identifying Software

Security Flaws, ISBN 0321304861

وب سايت ها

OWASP ، org.owasp.www://http

MITREآلودگيهاي ناشي از آسيب پذيري،– ، شمارنده ضعف هاي رايج html.trends-vuln/documents/org.mitre.cwe://http org.webappsec.www://http/كنسرسيوم امنيتي نرم افزارهاي تحت وب ،

20SANS TOP ، /20top/org.sans.www://http

، وابسته به كليه سازمان هايي كه اطالعات كارتهاي اعتبـاري PCI ، ناشر استانداردهاي PCIانجمن امنيتي استانداردها org.pcisecuritystandards.www://https/ش و نگهداري مي كنند، را پرداز

1.1PCI DSS v ، pdf.1-1v_dss_pci/pdfs/org.pcisecuritystandards.www://https

US CERT ،html.home/bsi/daisy/gov.cert-us.buildsecurityin://httpsبنياد امنيت

٥٠