ما هو اختطاف النقرات وكيف تحمي موقعك منه؟
الكاتب: فريق تحرير Domeny.ForSale تاريخ النشر
باختصار: اختطاف النقرات، المعروف باسم Clickjacking أو UI redress attack، هو خداع المستخدم لينقر على عنصر غير الذي يراه. فقد يضع المهاجم صفحة غير مرئية تحتوي على زر فوق زر يبدو بريئًا في لعبة. ويحدّ صاحب الموقع من هذه الهجمات أساسًا بالتحكم في الجهات التي يمكنها تضمين صفحاته، بينما يحمي المستخدم نفسه بالحذر من التفاعلات المشبوهة.
كيف يعمل اختطاف النقرات
يمكن للمتصفح عرض صفحة داخل أخرى باستخدام العنصر iframe، أي إطار مضمّن. وهذه وظيفة عادية تُستخدم مثلًا لعرض مقاطع الفيديو أو الخرائط. وفي هجوم اختطاف النقرات، يستغل المجرم هذه الوظيفة لإخفاء الهدف الحقيقي للنقرة أسفل واجهة أعدّها أو فوقها.
السيناريو المعتاد هو أن يفتح المستخدم صفحة يتحكم فيها المهاجم، فتُحمّل موقعًا آخر داخل إطار. ويكون الإطار شفافًا أو مقصوصًا ومتموضعًا بحيث يقع الزر الموجود داخله في المكان نفسه الذي يتوقع المستخدم النقر عليه. يرى المستخدم أمرًا معينًا، لكن المتصفح يسجّل تفاعله مع عنصر آخر.
ولا يحتاج المهاجم إلى قراءة محتوى الموقع الآخر. فالقيود التي يفرضها المتصفح على الوصول بين المواقع المختلفة لا تمنع بالضرورة تضمين الصفحات وتوجيه النقرات إليها. لذلك فإن حماية البيانات من القراءة وحماية الواجهة من التضمين مهمتان منفصلتان.
مثال: مكافأة تؤدي إلى تنفيذ إجراء آخر
تخيّل صفحة تحتوي على لعبة بسيطة وزر «استلم المكافأة». وفوق هذا الزر إطار غير مرئي يعرض لوحة تحكم من خدمة أخرى. إذا كانت تلك الخدمة تسمح بتضمين صفحاتها، وكانت جلسة المستخدم تعمل داخل الإطار، فقد تقع النقرة على زر ينفّذ عملية في حسابه.
هذا لا يعني أن مجرد زيارة أي صفحة خبيثة يؤدي فورًا إلى الاستيلاء على الحساب. فنجاح الهجوم يعتمد، من بين أمور أخرى، على وسائل حماية الموقع المستهدف، وإمكانية استخدام جلسة مسجّل الدخول داخل الإطار، وما إذا كانت العملية تتطلب تأكيدًا إضافيًا. وقد تصعّب إعدادات ملفات تعريف الارتباط وقيود المتصفح تنفيذ هذا السيناريو، لكنها لا تحل محل الحماية من التضمين.
تشمل النتائج المحتملة تغيير إعدادات دون قصد، أو تنفيذ إجراء في الخدمة، أو الموافقة على عملية. ويقلل التأكيد الإضافي الذي يتطلب تصرفًا واعيًا من المستخدم من المخاطر، لكن مجرد إضافة زر آخر لا يضمن الحماية؛ فقد يحاول المهاجم توجيه الضحية عبر عدة نقرات.
ما الفرق بين اختطاف النقرات والتصيّد وCSRF؟
في التصيّد، ينتحل المحتال عادةً صفة جهة موثوقة لسرقة البيانات أو لدفع المستخدم إلى اتخاذ إجراء معين. أما في اختطاف النقرات، فقد ينقر المستخدم على عنصر من الخدمة الحقيقية، لكنه مخفي ضمن واجهة مضللة. ويمكن استخدام الأسلوبين معًا، إلا أن آلية الخداع تختلف بينهما.
يستغل CSRF، أي إجبار المتصفح على إرسال طلب غير مرغوب فيه إلى الخدمة، صلاحيات المستخدم المسجّل دخوله من دون موافقته الواعية. أما اختطاف النقرات فيركّز على الاستيلاء على تفاعل المستخدم مع الواجهة. لا يكفي رمز الحماية من CSRF لمنع اختطاف النقرات، لأن النقرة قد تفعّل نموذجًا صحيحًا يتضمن رمز الحماية الصحيح الخاص به.
ولا يحل HTTPS هذه المشكلة أيضًا. فهو يشفّر الاتصال بالموقع، لكنه لا يثبت أن واجهته خالية من الخداع أو أن نوايا مالكه سليمة.
كيف تحمي موقعك
تتمثل الحماية الأساسية في ترويسة استجابة HTTP المسماة Content-Security-Policy مع التوجيه frame-ancestors. وترويسة HTTP هي معلومات يرسلها الخادم إلى المتصفح مع الصفحة. ويحدد هذا التوجيه المصادر التي يُسمح لها بتضمين الصفحة داخل إطارات.
إذا كان ينبغي منع تضمين الموقع تمامًا، فيمكن استخدام:
Content-Security-Policy: frame-ancestors 'none'
أما إذا كان التضمين مسموحًا فقط ضمن المصدر نفسه، أي التركيبة نفسها من البروتوكول والمضيف والمنفذ، فالقيمة المناسبة هي:
Content-Security-Policy: frame-ancestors 'self'
ومن الآليات الأقدم X-Frame-Options بالقيمة DENY أو SAMEORIGIN. ويمكن استخدامها كوسيلة حماية مكملة ومتوافقة مع السياسة المعتمدة لدعم برامج التصفح الأقدم. ويتيح التوجيه frame-ancestors تحكمًا أكثر مرونة، كالسماح بالتضمين من مصدر محدد تابع لشريك. ويجب إرساله ضمن ترويسة الاستجابة؛ فوضعه في وسم meta لا يوفّر هذه الحماية.
يشمل التطبيق العملي ثلاث خطوات:
- حدّد الصفحات التي تحتاج فعلًا إلى العمل داخل إطارات، كأن تكون جزءًا من تكامل مع شريك.
- اضبط السياسة المناسبة على الخادم أو في التطبيق أو الخدمة الوسيطة، وتحقق من الترويسات باستخدام أدوات المطوّرين في المتصفح.
- اختبر حظر التضمين غير المرغوب فيه، وتأكد أيضًا من استمرار عمل التكاملات المصرّح بها.
لا تعتمد وحدها على نصوص JavaScript البرمجية التي تحاول إخراج الصفحة من الإطار. فلهذه الحلول قيود، ويمكن تجاوزها. وفي العمليات الحساسة، استخدم أيضًا إعادة المصادقة أو تأكيدًا يصف بوضوح الإجراء الذي سيُنفّذ.
ما الذي يمكن للمستخدم فعله؟
تجنّب الصفحات التي تطلب سلسلة من النقرات غير المفهومة، خاصةً بحجة استلام مكافأة أو إتاحة مقطع فيديو أو إجراء تحقق مزعوم. واحرص على تحديث المتصفح، لكن تذكّر أن الإصدار المحدّث لا يغني عن وسائل الحماية في الموقع الذي تزوره.
إذا اشتبهت في أن نقرة أدت إلى تنفيذ إجراء غير مرغوب فيه، فافتح الخدمة المعنية بنفسك بدلًا من استخدام رابط في الصفحة المشبوهة. راجع سجل النشاط والإعدادات التي تغيّرت، وأبلغ فريق الدعم عن أي عملية غير مصرّح بها. أما صاحب الموقع، فعليه أن يبدأ بفحص ترويسة frame-ancestors في صفحات الحساب ولوحة الإدارة.
انظر أيضًا: ما هو Mass Assignment؟
