تسمح نقاط الضعف في عوامل تصفية AdBlock و uBlock بتنفيذ تعليمات برمجية عشوائية من جانب المستخدم

في ظل عدد من الشروط ، يسمح خيار تصفية $rewrite ، الذي يتم تنفيذه في AdBlock و AdBlock Plus و uBlock مع التحديث 3.2 بتاريخ 17 يوليو 2018 ، بتنفيذ تعليمات برمجية عشوائية على صفحة ويب معروضة للمستخدم ، وتقارير مدونة armin.dev .

إليك كيفية وصف وظيفة المشكلة في تصحيح AdBlock نفسه:
ينفذ هذا التصحيح خيار مرشح $rewrite الجديد ، والذي يسمح لمؤلفي قوائم التصفية بمنع عرض (فيديو بشكل أساسي) للإعلانات التي لم يكن بالإمكان حظرها في السابق على عدد من مواقع الويب.
تؤثر مشكلة عدم الحصانة الموضحة على جميع حاصرات الإعلانات الثلاثة المذكورة ، والتي يتجاوز إجمالي جمهورها 100 مليون مستخدم. يمكنك استخدامه لمهاجمة أي خدمة ويب ، بما في ذلك على سبيل المثال لا الحصر ، أي من موارد Google. المشكلة واسعة الانتشار ، أي أنه يمكن تنفيذ هجوم بنفس النجاح على أي متصفح شائع ولا يعتمد على إصداره.

استمر الضعف لمدة 9 أشهر تقريبًا وتم العثور عليه الآن فقط.

جوهر الهجوم


يوضح المدون المصدر أن AdBlock يستخدم خيار $rewrite rewrrite وغيره من الموانع المذكورة لتجنب تتبع المستخدم وحظر الإعلانات عن طريق إعادة توجيه الطلبات من صفحة الويب التي تمت زيارتها. لذا ، فإن $rewrite تتيح لك إعادة توجيه وليس معالجة الطلبات مثل SCRIPT و SUBDOCUMENT و OBJECT و OBJECT_SUBREQUEST .

يمكن أن يحدث أي هجوم إذا كان موقع الويب يستخدم XMLHttpRequest أو Fetch لتنزيل مقتطفات الأكواد البرمجية وتنفيذها ، مع السماح بتقديم طلبات تعسفية.

وهذا يعني ، لتنفيذ هجوم ، يجب أن تتحقق ثلاثة شروط:

  1. يجب أن تقوم صفحة الويب بتحميل السلسلة JS باستخدام XMLHttpRequest أو Fetch وتنفيذ التعليمات البرمجية التي تم إرجاعها.
  2. يجب ألا تستخدم صفحة الويب توجيهات التحقق من صحة سياسة أمان المحتوى ويجب ألا تتحقق من عنوان URL النهائي قبل تنفيذ التعليمات البرمجية التي تم تنزيلها.
  3. يجب أن يدعم مصدر الشفرة المستخرجة إعادة توجيه من جانب الخادم أو تحتوي على محتوى تعسفي أنشأه المستخدم.

يبدو أن هناك الكثير من الشروط ، وأن CSP بعيدًا عن الحداثة في عالم تطوير الويب. ومع ذلك ، فإن التهديد الرئيسي لمدى الضعف الذي تم العثور عليه ليس كيفية عمله ، ولكن كيف ينتشر.

نظرًا لأن أنظمة فلترة AdBlock و AdBlock Plus و uBlock معرضة للخطر ، فإن طريقة "إصابة" الضحية النهائية بسيطة للغاية - من خلال نظام التحديث التلقائي للمرشح. ليس سراً أن جزءًا كبيرًا من المستخدمين يستخدمون عوامل تصفية جاهزة ، لكن لا يقومون بتكوينها بأنفسهم. في هذه الحالة ، يمكن لمؤلف حزمة المرشح طرح تحديث ضار وتنفيذ هجوم ثم "ترحيل" الحزمة ، وبالتالي "تتبع المسارات".

طرق للقتال


أسهل طريقة لحماية نفسك من مشكلة عدم الحصانة المذكورة هي التبديل إلى uBlock Origin. لا يدعم مانع الإعلانات وظيفة $rewrite ، أي أنه من المستحيل تنفيذ الهجوم الموضح من خلاله.

خلاف ذلك ، على مسؤوليتك الخاصة ، يجب عليك انتظار تحديث AdBlock التالي. حرفيًا بعد ساعات قليلة من النشر في مدونة armin.dev ، ظهر إدخال المدونة هذا في المدونة الرسمية للحظر استجابةً لضعف $rewrite .

في ذلك ، تؤكد إدارة AdBlock أنه على الرغم من أن مشكلة عدم الحصانة محددة ، إلا أنها حريصة جدًا على أمان جمهورها وفي التحديث القادم سيتم قطع وظيفة $rewrite من AdBlock.

أيضًا ، وفقًا لتأكيدات الإدارة ، يقومون بفحص جميع قوائم التصفية والتحقق منها مرة أخرى الآن. استنادًا إلى نتائج التدقيق ، تفيد الإدارة أن أيا من قوائم التصفية الموجودة وصفت طريقة مهاجمة المستخدم المتضمن. نظرًا لنحو أربع ساعات فقط انقضت بين وقت نشر المشاركة الأصلية والرد على مدونة AdBlock ، سنفرح فقط استجابة فريق الحظر.

في الوقت نفسه ، تعد إزالة وظيفة $rewrite من المشروع خطوة إلى الوراء لـ AbBlock ، حيث تم إنشاؤها أصلاً لمكافحة إعلانات الفيديو المنبثقة. الآن ستعود من أجل الأمن العالمي. بالإضافة إلى ذلك ، تُظهر السرعة التي تم بها إزالة " $rewrite بالكامل" من المشروع أنه ، على الرغم من أن الهجوم محدد ، إلا أن عواقب سلوكه الجماعي مخيفة للغاية.

Source: https://habr.com/ru/post/ar448302/


All Articles