ثمة نافذتان في أندرويد تُخلطان دائمًا: نافذة موافقة VPN، وطلبات الأذونات التي يقدّمها تطبيق ما على بياناتك. الأولى تسلّم موضعًا في الشبكة، أي النقطة التي يمكن عندها قراءة الحزم وإعادة كتابتها. والثانية تسلّم محتوى مخزّنًا يحرسه أندرويد تطبيقًا تطبيقًا. والتعامل معهما كشيء واحد إما يبالغ في ما يمكن للنفق رؤيته، أو يقلّل بشدة مما سيطلبه تطبيق مصرّ في الخطوة التالية.

ما الذي تسلّمه نافذة الموافقة فعلًا

التطبيق الذي ينفّذ VpnService ويصرّح بـ BIND_VPN_SERVICE يطلب من النظام أن يصبح هو VPN الجهاز. وعند الموافقة ينشئ الإطار واجهة tun ويمنح التطبيق واصف ملف لها. وكل ما يفعله التطبيق بعد ذلك يمر عبر ذلك الواصف: يقرأ حزم IP منه، ويقرّر ما يفعل بها، ثم يكتب الحزم مرة أخرى فيه.

نطاق تلك الواجهة صريح. فالمسارات تحدّد الوجهات التي تُلتقط، وaddAllowedApplication أو addDisallowedApplication يحدّد التطبيقات التي تغذّيها. وVPN لكل تطبيق يدرج تطبيقين لا يرى بقية الجهاز.

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

أين تتوقف رؤية الحزم

لا يزال TLS يؤدي عمله داخل النفق، لأن المصافحة تجري بين التطبيق والخادم لا بين التطبيق وVPN. فـ VPN يمرّر نصًا مشفّرًا لا يستطيع فكّه بدون مفاتيح الجلسة. ولهذا لا يكشف النفق وحده محتوى صفحة HTTPS أو جلسة بريد محمية.

أما البيانات الوصفية المحيطة بالنص المشفّر فحكايتها مختلفة، وهنا ينهار معظم الادعاءات الواثقة. عنوان IP للوجهة والمنفذ وأحجام الحزم وتوقيتها كلها ظاهرة، إضافة إلى اسم الخادم داخل TLS ClientHello، وهو يُرسل عادةً واضحًا حتى في TLS 1.3. ويغيّر Encrypted Client Hello ذلك، لكنه ليس معمّمًا. أما DNS العادي فيسرّب الأسماء بالسهولة نفسها حين تخرج الاستعلامات غير مشفّرة.

البروتوكولات الأقدم أو المساء ضبطها تسلّم أكثر. فـ HTTP العادي وIMAP بلا TLS وعدد من بروتوكولات الألعاب وإنترنت الأشياء تعرّض حمولاتها لأي كيان يملك واصف tun.

الأذونات التي لا تأتي معها أبدًا

الموافقة على VPN لا تعني الموافقة على جهات الاتصال أو رسائل SMS أو الصور أو مكتبة الوسائط. فتلك منح وقت تشغيل منفصلة، لكل منها نافذتها ومسار إلغائها في صفحة إعدادات التطبيق. وموكّل VPN يريد سجل مكالماتك عليه أن يطلبه كأي تطبيق آخر، ويمكنك أن ترفض مع إبقاء النفق.

أما تركيب الشهادة فهو الأمر الذي يجب الحذر منه، لأنه يبدو جزءًا من إعداد VPN وليس كذلك. فتركيب CA للمستخدم في مخزن الاعتمادات يغيّر الشهادات التي سيقبلها أندرويد، ومنذ Android 7.0 يتجاهل التطبيق الذي يستهدف API 24 أو أحدث شهادات CA المضافة من المستخدم إلا إذا فعّل إعداد أمان الشبكة لديه مرتكز ثقة للمستخدم. والموكّل الذي يصرّ على CA قد يقوم باعتراض مؤسسي مشروع، أو قد يطلب شيئًا لم تذكره نافذة VPN قط.

أما وصول إمكانية الوصول (Accessibility) فيقع أبعد من ذلك. فالخدمة التي تكون فيها إمكانية الوصول مفعّلة تستطيع قراءة محتوى شاشة تطبيقات أخرى، وهو ما لا يمنحه أي موضع على مستوى الحزمة.

مرشّح محلي أم بوابة بعيدة

الـ API نفسه يغطي منتجين يستحقان درجتين مختلفتين من الثقة. فجدار حماية أو حاجب إعلانات على الجهاز يأخذ واصف tun ويجيب عن الحركة محليًا، ولا يرسلها قط إلى خادم يشغّله. وأما النفق الحقيقي فيمرّر تلك الحزم إلى بوابة في مكان آخر، ويرى مشغّل تلك البوابة البيانات الوصفية نفسها من الطرف الآخر، وهو أيضًا يقرّر ما يعود.

وثمة طريقة عملية للتفريق بينهما: افحص عنوانك العام وVPN مفعّل ثم موقوف، وانظر هل تذكر الإشعار نقطة نهاية بعيدة. فإن لم يتغيّر العنوان أبدًا، فالحركة على الأرجح تدور داخل الجهاز.

الحالتان تظلان موضعًا على مستوى الحزمة. والفرق هو من يقف أيضًا عند المخرج.

دقّق فيما وافقت عليه

افتح الإعدادات، ثم الشبكة والإنترنت، ثم VPN، واقرأ المدخل لا الأيقونة في شريط الحالة. فخيارا VPN الدائم ومنع الاتصالات بدون VPN هما إعدادان للجهاز يبقيان الواجهة حيّة ويقطعان التسريبات؛ وهما لا يوسّعان شيئًا. ومن الشاشة نفسها يمكنك نسيان الملف الشخصي وإلغاء المنح.

ثم تجوّل في الأذونات الأخرى. فمعلومات التطبيق تُظهر منح وقت التشغيل التي يحملها الموكّل، وإعدادات الأمان تُظهر هل رُكّبت شهادة مستخدم في الوقت نفسه. ويمكن إزالة أي منهما باستقلال عن الآخر.

السؤال الجدير بالجواب ضيّق: أي الحزم تدخل هذه الخدمة، وإلى أين تذهب، وماذا يحتفظ به التنفيذ. وكل ما عدا ذلك في النافذة ضجيج. ومرجع VpnService هو القائمة المرجعية لما تكشفه الواجهة.

مقالات ذات صلة