ماهي ثغرات XSS ؟

ثغرات الـ Cross Site Scripting او ما يُختصر بـ XSS هي ثغرات أمنية منتشرة على الصعيد الواسع في برامج الويب. من خلال هذه الثغرات يقوم شخص (المهاجم) بحقن كود برنامج خبيث عادة ما يكون بلغة السركتب JavaScript التي يقوم المتصفح بتنفيد اوامر الكود عندما يتم تحميل الصفحة عند الشخص الثاني (الضحية).

يتم حقن الكود من قبل الشخص المهاجم بطرق عدة منها: وهم الضحية للظغط على رابط (XSS منعكس)، او انتظار الضحية ليتصفح صفحة في الموقع الذي يحتوي على ثغرة من هذا النوع (XSS مخزن).

كيف يتم إستغلال ثغرات الـXSS في عمليات الإختراق من قبل القراصنة ؟

من خلال إستغلال ثغرات الـXSS يستعطيع القراصنة سرقة ما يسمى بالـCookies وبذلك يستطيعون تقنص شخصيتك في ذلك البرنامج الذي يحتوي على ثغرة.

يستطع القراصنة أيضا ان يحولوا متصفحك لصفحة ملغومة تحتوي على برامج خبيثة مثل الفيروسات وغيرها.

 ويستطيعوان كذلك تحويل متصفحك الى صفحة مشابهة تماما لصفحة البرنامج الذي تزوره (برنامج اداعات البنك مثلا) ويقومون بسرقة كلمات السر الخاصة بك.

يتم أيضا إستغلال هذه الثغرات ليتم تخطي  الحماية في البرنامج او متصفحك الذي تتصفح به الويب.

هذه فقط بعض من الهجمات وليس كلها. لا يوجد حد معين لكيفية إستغلال ثغرات XSS فذلك يعتمد على خيال المهاجم وحرفيته في هذا المجال.

هل يستطيعون قرصنة جهازك ومشاهدة الكمرة الخاصة؟ - نعم ! هل يستطيعون الإستماع للميكروفون؟ - طبعا!

للتعرف على بقية الهجامات المتقدمة - قم بزيارة صفحة مشروع BeEF

من تم إختارقه بسبب ثغرات الـ XSS ؟

في سنة 2010 تم إختراق كامل لمؤسسة أباتشي الغنية عن التعريف التي تقوم بتطوير خادم الويب الشهير Apache Web Server وذلك كله كان من خلال ثغرة XSS صغيرة في موقع المؤسسة.

ثغرة من نفس النوع في برنامج المنتديات الخاص بموقع توزيعة Ubunto المشهورة أدت ايضا لسرقة أكثر من 1.8 مليون ايميل وكلمة السر الخاصة به!

هذه الغرات عادة ما تستهدف مستخدمي البرنامج والشبكات التي يتصلون بها. ولكن عندما يتوقف الأمر على مستخدم له (لها) صلاحياة المدير العام للبرنامج تكون النتيجة كارثية ويتم الوصول لخادم الويب كله بدلا من البرنامج فقط!

تنتشر هذه الثغرات على عدة منصات منها Twitter, Facebook, Google, Yahoo.. ويتم اكتشافها مبكرا عن طريق حملات لتشجيع اكتشاف هذه الثغرات تسمى Bug Bounties حيث يتم دفع قيمة مالية والتشهير بمن اكتشف الثغرة.

في هذا الرابط العديد من الهجمات التي بدأت من خلال ثغرة XSS بسيطة في البرنامج

كيف أحمي نفسي من ثغرات الـ XSS ؟

تأكد من انك تستخدم آخر تحديث من متصفح الإنترنت مع تفعيل كافة خيارات الحماية المتعلقة به مثل XSS Filter وغيرها. اذا كنت تستخدم متصفح لا يدعم خيار مثل هذا (FireFox) فيُنصح بإستخدام اضافة NoScript التي تعمل كحماية فعالة ضد هجمات من نوع XSS.

كن حذرا جدا عندما تظغط على رابط معين. بعض الروابط لا تبدوا خطيرة مبدئيا لكنها تحتوي على كود خبيث او غستغلال لثغرة XSS.

قم دائما بتسجيل خروجك بعد ان تنتهي من العمل على برنامج ويب معين (Sign Out).

أنا مبرمج ، كيف أحمي برنامجي من ثغرات الـ XSS ؟

يتم إستغلال ثغرات XSS عندما لا يتم فحص مدخلات البرنامج بعناية.

على سبيل المثال عندما يقوم المستخدم بكتابة إسمه (إسمها) في البرنامج ثم يقوم البرنامج بإظهار الإسم بدون فحص فماذا سيحدث عندما يتم إدخال إسم مستخدم بلغة برمجة HTML مثلا؟ لن يٌفرق المتصفح بين إسم المستخدم وبقية كود الصفحة وسيتعامل معه على انه كود في الصفحة مثله مثل باقي السطور، أي انه سيتم تنفيذ الأوامر التي أدخلها المستخدم بدون اي مشكلة!

قم بفحص المدخلات في البرنامج، وذلك بتطهير المدخلات من اي كود خبيث او محاولة لحقن كود في المدخلات. إذا كان نوع المدخلات أرقاما فقط فلا تقم بالسماح للحروف بالمرور عبر البرنامج.  إستخدم القوائم البيضاء في ذلك اي انه يتم مقارنة المدخلات بقائمة المدخلات المسموحة فقط ويتم رفض المدخلات التي لا تكون في تلك القائمة.

تأكد بأن ترميز الحروف في الصفحة هو الذي يتطلبه برنامج (Character Encoding). في حالة الترميز صحيح سيتعرف المتصفح ما اذا كانت الحروف التي يتم عرضها يرمز اليها بشكل معين او لا. أي انك لن تدع للمصفح الإختيار اذ انه في بعض الحالات يتم إسغلال هذه الخاصية في المتصفحات لمهاجمة ثغرات XSS او تخطي الحماية المتعلقة بها.

قم بفحص برنامجك والكشف عن ثغرات الـ XSS بإستخدام برامج متخصصه في ذلك مثل برنامج المشروع المشهور OWASP المسمى بـ OWASP Zap (مفتوح المصدر ومجاني أيضا)

قم دائما بتفعيل خيار الـ HTTPOnly عندما تسجل حالة البرنامج من خلال الـ Cookies. هذا سينبه المتصفح لكي لايسمح لكود السكربت بقراءة الـCookies وبالتالي منع سرقتها او استغلالها لتقنص شخصية ثانية.

يوجد خاصية في بروتوكول HTTP تسمى قانون المحتوى الأمني CSP والذي يقوم بتخصيص اي من الجزاء المسموح فيها لمتصفح ان يقوم بتنفيذ اوامر كود السكربت في الصفحة. (يتسخدم طريقة القوائم البيضاء في ذلك!)

في النهاية لمذا لا تقوم بتنصيب جدار حماية ناري متخصص لبرامج الويب WAF. هذا سيكون بمثابة طبقة حماية اضافية تحمي من إستغلال ثغرات XSS في برنامجك. يوجد العديد من البرامج المتخصصة في ذلك بما فيهم mod Security. هذه البرنامج يجب أن تستخدم كحلقة اضافية فقط ولا يجب الإعتماد عليها إذ انه يتم إستكشاف طرق لتخطيها دائما.

أين أجد معلومات أكثر عن ثغرات الـ XSS ؟

في هذه الصفحة شرحنا نوعين فقط من ثغرات الـ XSS لكنها ليست الوحيدة طبعا! هناك انواع أخرى.

مشروع امن برامج الويب المفتوح  Open Web Application Security Project (OWASP)  هو مرجع ممتاز لجميع مواضيع الأمن التي تتعلق ببرامج الويب. قم بزيارة صفحة الويكي الخاصة بثغرات الـ XSS التي شرحناها هنا. او صفحة كيف تحمي نفسك من ثغرات الـ XSS الموجودة على نفس الموقع. ولمعلومات أكثر حول أخطر 10 هجمات على برامج الويب قم بزيارة صفحة OWASP Top 10.

شكرا على قراءتكم. تم ترجمة الصفحة الأصلية من هنا - كتبها: Ryan Dewhurst و Thomas MacKenzie

وقام بالترجمة عبدالكريم الزيداني.

---

الهدف من هذه الصفحة هو البساطة في تقديم معلومات حول ثغرات الـ XSS بإستخدام لغة بسيطة و دقيقة.

تصميم هذه الصفحة مُلهم من http://justinjackson.ca/words.html

---

Thanks to Abdulkarim Zidani for this translation. English version here.