قبل أن أبدأ في شرح ثغرات Unvalidated Redirects، دعونا نعطي مثالا بسيطا حتي نفهم فكرة (التحويل)Redirection المستخدم تلقي رسالة علي بريده الإلكتروني بالمحتوي التالي:
عزيزي المستخدم .. يمكنك زيارة المدونة الخاصة بموقعنا من خلال الرابط التالي:
http://www.goodsite.com/link.php?url=http://blog.goodsite.com
إذن عندما يضغط المستخدم علي الرابط بالأعلي فإنه سيتوجه إلى http://blog.goodsite.com
إذن كيف يمكن استغلال هذا الرابط؟
الأمر بسيط جدا.. سيقوم المهاجم/المخترق باستبدال الرابط الذي سيتم تحويل المستخدم إليه برابط آخر تابع له حتي يتم تحويل المستخدم إلى موقع المهاجم .
مثال:
عزيزي المستخدم.. يمكنك زيارة المدونة الخاصة بموقعنا من خلال الرابط التالي:
http://www.goodsite.com/link.php?url=http://blog.attacker.com
إذن عندما يضغط المستخدم على الرابط بالأعلى فإنه سيتم توجيهه إلى http://blog.attacker.com
ولكن كما ترى فقد تم تحويل المستخدم من خلال موقع goodsite.com والذي يفترض أن يكون موقعا موثوقا لدى المستخدمين.
ما هي الخطورة التي يفترض أن يتبعها المستخدم من خلال هذا النوع من الثغرات؟
1- تحويل المستخدم إلى صفحات تسجيل دخول مزورة شبيهة تماما لنفس صفحه تسجيل الدخول الخاصة بالموقع الأصلي وربما يكون اسم النطاق(Domain name) أيضا شبيه باسم النطاق الخاص بالموقع الأصلي وبالتالي سرقة بيانات تسجيل الدخول الخاصة بالمستخدم .
مثال: بدلا من أن يتم تحويلك لموقع الفيس بوك www.facebook.com يتم تحويلك لموقع www.faecbook.com هل لاحظت الفارق؟
مثال: بدلا من أن يتم تحويلك لموقع الفيس بوك www.facebook.com يتم تحويلك لموقع www.faecbook.com هل لاحظت الفارق؟
2- تنزيل ملفات خبيثة (Trojans) علي أجهزة المستخدمين.. إذ يمكن للمهاجم تحويل المستخدم إلى صفحة تستغل ثغرة في البرمجيات المنصبة علي جهاز المستخدم، برمجيات مثل Java, Flash Player, Adobe Reader وغيرها.
إذن ما السبب في حدوث تلك الثغرة؟ وكيف للمبرمج أن يحمي نفسه منها؟
الخطأ أن المبرمج لا يستخدم أي نوع من أنواع التحقق(validation) حتي يتأكد من الرابط الذي سيتم تحويل المستخدم إليه!
بعض طرق الحماية من تلك الثغرة:
1- Security Tokens
ما هي الـ Security tokens؟
هي أرقام يتم تكوينها بنوع ما من التشفير (على حسب المبرمج) وكمثال فهي تكون تجميعة من رابط الموقع + التوقيت الحالي + Salt
مثال:
“TRIffZRIE_yke-3Z1pxFaHaDC5FOPEXEGx6LpRZdjW”
فيصبح الرابط بالشكل التالي:
http://www.goodsite.com/link.php?url=http://blog.goodsite.com&token=TRIffZRIE_yke-3Z1pxFaHaDC5FOPEXEGx6LpRZdjW
إذن وظيفة الـ Token في هذه الحالة هي التأكد من أن الرابط الذي سيتم تحويل المستخدم إليه هو رابط موثوق منه ومسجل في قاعدة بيانات الموقع ولم يتم التلاعب به لأن كل رابط يكون له Security Token واحد فقط.
2- Black & White List
يقوم المبرمج بإنشاء قائمة من المواقع الموثوق بها والتي يتم تحويل المستخدمين إليها وما عدا تلك المواقع فلا يتم تحويل المستخدم إلى أي شيء آخر بل يظهر صفحة خطأ في حال تم التلاعب بالموقع الذي يتم تحويل المستخدم إليه.
نأتي هنا لمثال عملي على موقع شركة Kaspersky عملاقة شركات إنتاج برمجيات الأمن المعلوماتي. كان الموقع مصابا بثغرة من هذا النوع الذي نتحدث عنه اليوم
وتم استغلال الثغرة بطريقة المحاكاة لمحاكاة استغلال الثغرة من قبل الهاكرز واستخدامها في نشر الملفات الخبيثة (Trojans) مستغلين اسم وثقة Kaspersky لدي المستخدمين.
تخيل معي عزيزي القارئ رابط يأتيك من شركة كاسبرسكي (وهي مصدر موثوق لا محالة) ويطلب منك تحميل ملف! أو صفحة يتم تحويلك إليها من موقع كاسبركي وتطلب منك بيانات معينة أو تعرض عليك تنزيل آخر إصدار من برنامج كاسبرسكي المدفوع وبشكل مجاني!
