mehdi.mousavi
شنبه 27 شهریور 1389, 11:09 صبح
این ایراد که کلیه نسخه های .NET رو در برمیگیره، به مهاجم اجازه میده تا اطلاعات Encrypt شده در ViewState رو رمز گشایی کنه، اونها رو تغییر بده، و سپس مجددا با همون الگوریتم اطلاعات رو Encrypt کرده و به سمت سرور ارسال کنه.
برای اینکه متوجه بشید این اتفاق چطور رخ میده، ابتدا باید بدونید Cryptographic Oracle چی هستش. در مباحث امنیتی، سیستمی که در قبال سوالاتی که ازش میشه پاسخهایی بده که منجر به افزایش دانش مهاجم در قبال این پاسخها بشه، oracle نام داره. این ضعف امنیتی اخیر در ASP.NET به مهاجم این امکان رو میده که بلاک هایی از کدهای رمزنگاری شده رو به سرور ارسال کنه و بر اساس کد خطاهای دریافتی، متوجه بشه که آیا Data Block رمزگذاری شده بدرستی از حالت رمز خارج شده یا خیر. به این ترتیب، مهاجم پس از شناخت سیستم رمزگذاری استفاده شده سمت سرور میتونه Block های مورد نظر رو Decrypt کرده، اطلاعات درونش رو تغییر بده، و مجددا پس از Encrypt کردن اونو به سرور ارسال کنه.
برای رفع این ایراد (فعلا، بصورت موقتی) شما باید customErrors رو در web.config خودتون حتما روشن کنید و اگر از defaultRedirect استفاده نمی کنید، کلیه Error های 404، 500 و ... رو موقتا به یک Page ارسال کنید تا مهاجم نتونه با سعی و خطا، اطلاعات مورد نیاز رو در مورد سیستم شما کسب کنه.
اطلاعات بیشتر در این زمینه رو میتونید در این آدرس (http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx) مطالعه کنید. دقت کنید. Script ای که در این آدرس بهش اشاره شده، متاسفانه Bug داره و قادر نیست تا Web App های آسیب پذیر رو لیست کنه. اولین ایرادش در خط 123 هستش که باید جای این خط
EnumWebConfig(objDir.Path)
این نوشته می شد:
EnumWebConfig(physicalPath)
البته یکی دو جای دیگه هم ایراد داره که فرصت درست کردنشون رو در حال حاضر نداشتم. فقط مطمئن بشید که در Web.Config کلیه App های مورد نظر، فعلا بطور موقت، برای Error های مجزا، صفحات جداگانه (یا اطلاعات جداگانه) ای که باعث افزایش دانش مهاجم در مورد سیستم بشه، نمی دید تا اگه خدا بخواد، مایکروسافت یه Patch بده و این ایراد رفع بشه.
اطلاعات تکمیلی رو می تونید در این آدرس (http://www.microsoft.com/technet/security/advisory/2416728.mspx) مطالعه کنید. این خبر دیروز به دست رسید و ظاهرا دیروز هم منتشر شده بوده.
موفق باشید.
پاورقی: این خبر رو پس از چند روز، از حالت اعلان خارج خواهم کرد.
برای اینکه متوجه بشید این اتفاق چطور رخ میده، ابتدا باید بدونید Cryptographic Oracle چی هستش. در مباحث امنیتی، سیستمی که در قبال سوالاتی که ازش میشه پاسخهایی بده که منجر به افزایش دانش مهاجم در قبال این پاسخها بشه، oracle نام داره. این ضعف امنیتی اخیر در ASP.NET به مهاجم این امکان رو میده که بلاک هایی از کدهای رمزنگاری شده رو به سرور ارسال کنه و بر اساس کد خطاهای دریافتی، متوجه بشه که آیا Data Block رمزگذاری شده بدرستی از حالت رمز خارج شده یا خیر. به این ترتیب، مهاجم پس از شناخت سیستم رمزگذاری استفاده شده سمت سرور میتونه Block های مورد نظر رو Decrypt کرده، اطلاعات درونش رو تغییر بده، و مجددا پس از Encrypt کردن اونو به سرور ارسال کنه.
برای رفع این ایراد (فعلا، بصورت موقتی) شما باید customErrors رو در web.config خودتون حتما روشن کنید و اگر از defaultRedirect استفاده نمی کنید، کلیه Error های 404، 500 و ... رو موقتا به یک Page ارسال کنید تا مهاجم نتونه با سعی و خطا، اطلاعات مورد نیاز رو در مورد سیستم شما کسب کنه.
اطلاعات بیشتر در این زمینه رو میتونید در این آدرس (http://blogs.technet.com/b/srd/archive/2010/09/17/understanding-the-asp-net-vulnerability.aspx) مطالعه کنید. دقت کنید. Script ای که در این آدرس بهش اشاره شده، متاسفانه Bug داره و قادر نیست تا Web App های آسیب پذیر رو لیست کنه. اولین ایرادش در خط 123 هستش که باید جای این خط
EnumWebConfig(objDir.Path)
این نوشته می شد:
EnumWebConfig(physicalPath)
البته یکی دو جای دیگه هم ایراد داره که فرصت درست کردنشون رو در حال حاضر نداشتم. فقط مطمئن بشید که در Web.Config کلیه App های مورد نظر، فعلا بطور موقت، برای Error های مجزا، صفحات جداگانه (یا اطلاعات جداگانه) ای که باعث افزایش دانش مهاجم در مورد سیستم بشه، نمی دید تا اگه خدا بخواد، مایکروسافت یه Patch بده و این ایراد رفع بشه.
اطلاعات تکمیلی رو می تونید در این آدرس (http://www.microsoft.com/technet/security/advisory/2416728.mspx) مطالعه کنید. این خبر دیروز به دست رسید و ظاهرا دیروز هم منتشر شده بوده.
موفق باشید.
پاورقی: این خبر رو پس از چند روز، از حالت اعلان خارج خواهم کرد.