PDA

View Full Version : خبر: ایراد امنیتی جدیدی در ASP.NET کشف شد!



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) مطالعه کنید. این خبر دیروز به دست رسید و ظاهرا دیروز هم منتشر شده بوده.

موفق باشید.

پاورقی: این خبر رو پس از چند روز، از حالت اعلان خارج خواهم کرد.

ASP.NET2
شنبه 27 شهریور 1389, 14:52 عصر
سلام .
مرسی از بابت خبر مهمی که به اشتراک گذاشتید.
آیا توی ASP.NET MVC هم این باگ امنیتی وجود داره ؟ چون تا اونجایی که من می دونم توی اون ViweState وجود نداره.

mehdi.mousavi
شنبه 27 شهریور 1389, 15:15 عصر
سلام . مرسی از بابت خبر مهمی که به اشتراک گذاشتید. آیا توی ASP.NET MVC هم این باگ امنیتی وجود داره ؟ چون تا اونجایی که من می دونم توی اون ViweState وجود نداره.

سلام.
خواهش میکنم... درسته در ASP.NET MVC چیزی به اسم ViewState وجود نداره، اما بازهم بستگی داره به نوع Application ای که نوشته اید. اگر از کلاسهای رمزنگاری شده ای استفاده کرده اید که در اونها PKCS #7 padding بکار رفته و از سوی دیگه، عمل رمزنگاری شما رابطه مستقیمی با Request-Response های کاربر داره، به نوعی که بشه از روی پاسخها، به اطلاعاتی در مورد کد نوشته شده و الگوریتم مورد استفاده سمت سرور پی برد (padding oracle)، بله.
MVC هم در معرض تهدید قرار میگیره، اگرچه در هیچ یک از Bulletin های موجود، تا به این لحظه، کسی به این موضوع اشاره نکرده.

موفق باشید.

mehdi.mousavi
چهارشنبه 07 مهر 1389, 15:50 عصر
سلام.
مایکروسافت دو روز پیش Patch هایی رو منتشر کرد که برای رفع ایراد امنیتی فوق ارائه شده. Scott Gu نیز در وبلاگ خودش به این Patch ها اشاره کرده. برای دریافت این Patch ها به این صفحه برید (http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx) و بر اساس سیستم عامل و نسخه .NET Framework مورد استفاده، Patch مربوطه رو Download کرده، نصب کنید.

موفق باشید.

پاورقی: ظرف چند روز آینده این تاپیک از حالت اعلان خارج خواهد شد.