• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
فایلهای آپلودی، MIME type sniffing، و حفرهء امنیتی
#1
قبلا در تاپیک دیگری درمورد اینکه آیا باید نسبت به محتویات فایلهای آپلودی، و نه تنها پسوند اونها، حساس بود بحث کرده بودیم و کسی نمونه و دلیلی براش ارائه نداده بود.

این چند روزه مطالبی رو مطالعه کردم که به این موضوع ربط دارن.

قضیه از این قرار است که بازهم IE، این مرورگر معروف به دردسرسازی و ناامنی در طول تاریخ، یک ویژگی خاصی داره که باعث ایجاد حفرهء امنیتی میشه.

البته این مشکل در نسخه های قدیمی مثل IE6 وجود داشته و کشف شده، اما با توجه به تستهای بنده، ظاهرا هنوز حتی روی IE7 و IE8 هم ولو به شکل محدودتر این مشکل وجود داره.

بنده چون IE8 داشتم فقط تونستم روی نسخهء 8 تست کنم. یکسری حالات ممکنه روی نسخهء 8 امن باشن ولی روی نسخهء 6 یا 7 امن نباشن. هرکس داره میتونه تست کنه و نتیجه رو بگه.

مثال - یک فایل php یا txt در www ایجاد کنید و این کد رو توش بذارید:
کد پی‌اچ‌پی:
<?php header('Content-Type: text/plain'); ?>
<html>
<body>
<script>alert('XSS');</script>
</body>
</html> 

بعد اون رو در IE باز کنید.
مشاهده میکنید که کد جاوااسکریپت ما اجرا میشه.
چون IE محتویات فایل رو بعنوان HTML شناسایی و اجرا میکنه، حتی با وجود اینکه ما با هدر Content-Type: text/plain بهش گفتیم که باید محتویات پاسخ رو بعنوان متن ساده درنظر بگیره.

چرا IE این کار رو میکنه؟
چیزهایی در منابع گفته شده بود که ظاهرا این قضیه به آپاچی هم ارتباط داره و تاریخچه ای هست. ظاهرا آپاچی بصورت پیشفرض کانفیگ درستی نداشته و بنابراین زیاد پیش میامده که نوع فایل با هدرهای ارسال شده تطابق نداشته. بعد IE اومده خواسته هوشمندبازی دربیاره و بجای اینکه خطا بده یا محتویات رو خراب نمایش بده، خودش نوع دیتا رو از روی محتویاتش تشخیص بده و اونها رو بر اساس تشخیص/حدس خودش تفسیر و اجرا کنه؛ احتمالا بخاطر اینکه یوزرفرندلی تر باشه.

البته خوشبختانه این جریان فعلا فقط روی فایلهای txt اینطور خطرناک عمل میکنه. چون بنده هدر کد مثال بالا رو image/jpg گذاشتم یا از پسوند jpg استفاده کردم، که در هر دو حالت کد جاوااسکریپت اجرا نشد. ولی شاید مثلا روی IE6 یا IE7 اجرا بشه (هرکس IE6 یا 7 داره میتونه تست کنه و نتیجه رو بگه).

البته فکر میکنم در بیشتر سیستمهای آپلود پسوند txt جزو پسوندهای مجاز نیست. بنابراین شاید مشکل جدی ای وجود نداشته باشه و اصلا نیازی به چک کردن محتویات فایل نباشه. ولی بازم مطمئن نیستم و برای اطمینان احتمالا باید بیشتر فکر و تحقیق و تست کنیم. IE6 هم که الان دیگه رسما منسوخ شده تلقی میشه، ولی از طرف دیگه هنوز عده ای از کاربران ازش استفاده میکنن (بخصوص با توجه به اینکه با ویندوز XP نصب میشه).
حالا من الان خسته هستم و همین تست و مطالب رو هم به زور تونستم تموم کنم که الان بفرستم. بعدا میتونیم بیشتر روش بررسی کنیم.

ضمنا این یک حمله به کلاینت بود با استفاده از باگ مرورگر. فکر میکنم در بحثهای قبلی بیشتر متوجه خطر این فایلها در سمت سرور بودیم تا کلاینت.
  پاسخ
تشکر شده توسط : Reza admin Goback cyletech M.J
#2
وای وای! وضع IE7 خرابه.
یک فایل بنام test.jpg در www ایجاد کنید و کدهای HTML+Javascript رو درش ذخیره کنید.
وقتی در IE7 آدرس test.jpg رو بصورت مستقیم میدی (http://localhost/test.jpg) کدها رو اجرا میکنه.
واقعا افتضاحه!!
  پاسخ
تشکر شده توسط : admin cyletech voltan
#3
بعد هنوز یه سری گیر اینن که آی ای ۶ و ۷ توی پروژه ها ساپورت بشه ! کلا آی ای رو باید انداخت در سطل زباله
  پاسخ
تشکر شده توسط : vejmad
#4
یکسری سایتها که مینویسن فقط از مرورگر IE استفاده کنید باید خجالت بکشن. بجاش باید بنویسن از مرورگر IE استفاده نکنید!
  پاسخ
تشکر شده توسط : ali786 voltan
#5
خوب راه حلش چبه؟؟
اگه کفشت پاتو می زد و از ترس قضاوت مردم پابرهنه نشدی و درد رو به پات تحمیل کردی دیگه در مورد آزادی شعار نده !
آلبر کامو
  پاسخ
تشکر شده توسط :
#6
فکر کنم راه حلش ولیدیت کردن mime type هم هست. ولی خب ممکنه این هم مشکلاتی داشته باشه. مثلا توی mime type بررسی نوع فایلهای متنی مثل php یا js یا html باز هم از طریق پسوند انجام میشه
  پاسخ
تشکر شده توسط :
#7
(۱۳۹۱ تير ۲۱, ۱۰:۲۰ ب.ظ)M.J نوشته: خوب راه حلش چبه؟؟
کاش این سوال رو زودتر میپرسیدید. چون اون موقع تازه چند منبع و مقاله در این زمینه خونده بودم. در اونها روشهای مختلفی پیشنهاد شده بود. معمولا چند روش با هم.
الان جزییاتش یادم نیست و باید دوباره سرچ و رجوع کنم به اون منابع.

بهرحال راه حل این قضیه آسان و 100% مطمئن هم نیست.
داستانها سر همین باگ پیش میاد و هیچوقت نمیشه کاملا مطمئن بود.
بنظر من باید سایتها چک کنن اگر مرورگر IE6 یا 7 یا 8 بود بگن اصلا سرویس نمیدیم برو فایرفاکسی چیزی نصب کن!!
الان که برعکسه ماشالا.
  پاسخ
تشکر شده توسط : M.J


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان