ابدأ الآن سيريا بروكسي syriaproxy أول خدمة بروكسي مختصة بسوريا

ما هو تسريب WebRTC وكيف تمنعه؟

تقنية WebRTC تتيح للمتصفح مكالمات الصوت والفيديو ونقل البيانات مباشرة بين جهازين. ولكي تجد طريقاً بينهما تجمع عناوين جهازك، وتستطيع أي صفحة قراءتها بسطور قليلة من JavaScript. فإن خرجت هذه الطلبات خارج البروكسي أو النفق، رأت الصفحة عنوانك الحقيقي، وهذا هو تسريب WebRTC.

لماذا يجمع المتصفح عناوينك

الاتصال المباشر بين جهازين صعب، لأن أغلب الأجهزة تقف خلف ترجمة العناوين (NAT). لحل ذلك يعتمد WebRTC على بروتوكول ICE المعرّف في RFC 8445. يجمع البروتوكول «مرشّحين» (candidates)، أي عناوين ومنافذ قد يصل عبرها الطرف الآخر، ثم يجرّبها حتى ينجح أحدها.

يعرف المتصفح عنوانه العام بطلب Binding يرسله إلى خادم STUN، على المنفذ 3478 عادةً. يعيد الخادم في رده خاصية XOR-MAPPED-ADDRESS، وفيها العنوان والمنفذ كما وصلا إليه، كما يصف RFC 8489.

ما الذي تفعله الصفحة

جمع العناوين لا يحتاج إلى مكالمة حقيقية. تكفي الصفحة أربع خطوات:

  1. تنشئ كائن RTCPeerConnection وتعطيه عنوان خادم STUN.
  2. تفتح قناة بيانات فارغة. لا يتطلب ذلك إذن الكاميرا أو الميكروفون، ولا يظهر للمستخدم أي تنبيه.
  3. تنشئ عرض اتصال (offer) وتضبطه وصفاً محلياً، فيبدأ المتصفح جمع المرشّحين.
  4. يصل كل مرشّح إلى الصفحة في حدث icecandidate، فترسله إلى خادمها مع بقية بيانات الزيارة.

لا تتصل الصفحة بأحد في النهاية، ولا تحتاج إلى ذلك. ما جمعته من عناوين هو كل ما تريده.

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

لماذا لا يحميك البروكسي من ذلك

إعدادات البروكسي في المتصفح تنقل طلبات HTTP وHTTPS، وهي تعمل فوق TCP. أما طلب STUN فيُرسل عبر UDP ويتبع جدول التوجيه في نظام التشغيل. فيخرج من اتصالك العادي، ويعود المرشّح الانعكاسي بعنوانك العام الحقيقي.

مع VPN للجهاز كله يختلف الأمر. يتبع طلب STUN المسار الافتراضي إلى النفق، فيعود بعنوان الخروج لا بعنوانك. ويبقى الخطر في تقسيم النفق، حين يمر جزء من الحركة خارجه.

يصف RFC 8828 هذه الحالة بأنها أهم مخاوف الخصوصية في WebRTC: قد يكتشف المتصفح العنوان العام للنفق وعنوان مزوّد الإنترنت معاً. ومرشّح المضيف قد يكشف عنوانك داخل الشبكة المحلية. لذلك تستبدل معظم المتصفحات الحديثة العنوان المحلي الخاص باسم عشوائي ينتهي بـ.local، ما لم تحصل الصفحة على إذن الكاميرا أو الميكروفون.

أوضاع التعامل مع العناوين

يعرّف RFC 8828 أربعة أوضاع يختار المتصفح بينها، من الأكثر كشفاً إلى الأكثر تحفظاً:

الوضعالعناوين التي تُجمعالأثر
الأول: تعداد كل العناوينكل واجهات الجهازأفضل مسار للمكالمة وأكثر كشفاً، ويتطلب موافقة المستخدم
الثاني: المسار الافتراضي مع عناوينه المحليةواجهة المسار الافتراضي وعناوينها الخاصةالوضع المقترح حين لا توجد موافقة
الثالث: المسار الافتراضي فقطما يكتشفه STUN وTURN عبر المسار الافتراضييخفي العناوين الخاصة، وقد تمر البيانات عبر خادم ترحيل
الرابع: فرض البروكسيلا شيء خارج البروكسي حين يكون للمتصفح بروكسيتمر الوسائط عبر البروكسي، وإن لم يدعم UDP انتقلت إلى TCP بجودة أقل

في كروم وإيدج تستطيع الإضافات ضبط هذا السلوك عبر الإعداد webRTCIPHandlingPolicy في واجهة الخصوصية للإضافات. ومن قيمه disable_non_proxied_udp، التي تمنع UDP لا يمر بالبروكسي.

كيف تفحص متصفحك بنفسك

افتح أدوات المطوّر بالمفتاح F12 في أي صفحة، ثم الصق هذه الأسطر في لوحة Console:

const pc = new RTCPeerConnection({ iceServers: [{ urls: "stun:stun.l.google.com:19302" }] });
pc.createDataChannel("");
pc.onicecandidate = (e) => { if (e.candidate) console.log(e.candidate.candidate); };
pc.createOffer().then((offer) => pc.setLocalDescription(offer));
  1. يطبع كل سطر مرشّحاً واحداً. ابحث عن السطر الذي فيه typ srflx.
  2. العنوان الذي يسبق رقم المنفذ في ذلك السطر هو عنوانك العام كما رآه خادم STUN.
  3. قارنه بالعنوان الذي تعرضه أداة عنوانك. إن اختلفا وكان الأول عنوان مزوّدك، فالمتصفح يسرّب.

يتبع كل سطر صيغة ثابتة يحدّدها RFC 8839. هذا مثال بعناوين مخصّصة للتوثيق:

candidate:2 1 udp 1694498815 192.0.2.3 45664 typ srflx raddr 0.0.0.0 rport 0

غياب سطر srflx يعني أن المتصفح يمنع الطلب أو أن UDP محجوب في شبكتك. وسطر typ host بعنوان ينتهي بـ.local يعني أن المتصفح يخفي عنوانك المحلي.

كيف تمنع التسريب

لكل حل ثمن. منع UDP المباشر يجعل المكالمات تمر عبر خادم ترحيل أو عبر TCP، فيزيد التأخير قليلاً.

WebRTC في syriaproxy

إضافتنا لكروم وإيدج تضبط WebRTC بحيث لا يكشف العنوان الحقيقي، وطريقة تثبيتها في إعداد الإضافة. أما تطبيقات أندرويد وويندوز ولينكس، وWireGuard على آيفون وآيباد وماك، فتنقل حركة الجهاز كله، ومعها طلبات STUN.

أسئلة شائعة

هل يحدث التسريب على الهاتف أيضاً؟

نعم، فمتصفحات الهاتف تدعم WebRTC كذلك. ومعظمها لا يقبل الإضافات، فالحماية هناك اتصال يغطي الجهاز كله.

هل التسريب خلل في المتصفح؟

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

هل الأفضل تعطيل WebRTC تماماً؟

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

ماذا يعرف الموقع من العنوان المسرَّب؟

مزوّد الإنترنت والبلد، وأحياناً المدينة، كما تعرض أداة البحث عن عنوان IP. ويكفي اختلافه عن عنوان البروكسي ليعرف الموقع أن الاتصال يمر ببروكسي.

افحص متصفحك الآن بأداة فحص تسريب WebRTC المجانية.