تعرض شاشة نظام التشغيل مؤشراً يؤكد أن اتصال الشبكة الافتراضية الخاصة (VPN) مشفر ويعمل بانتظام. المحول الافتراضي يتبادل البيانات بصورة طبيعية، وجلسات التشفير تتبادل حزم الإبقاء على الاتصال، كما يشير جدار الحماية إلى جاهزية قاطع الاتصال الطارئ (Kill Switch). ومع ذلك، فعند الارتباط بشبكة واي فاي عامة، تتدفق طلبات HTTP واستعلامات DNS والبيانات الحساسة الخارجة من المتصفح مباشرة نحو بوابة المهاجم في صيغة أطر إيثرنت مكشوفة غير مشفرة.

تُعرف هذه التقنية باسم ثغرة CVE-2024-3661، والتي أُطلق عليها في الأوساط الأمنية اسم TunnelVision. كشف باحثو شركة Leviathan Security Group أن هذا الهجوم لا يعتمد على أخطاء برمجية في الذاكرة أو عيوب في خوارزميات التشفير. بدلاً من ذلك، يستغل الهجوم ميزة إدارية قياسية في بروتوكول التكوين الديناميكي للمضيفين (DHCP) معتمدة منذ عام 2002: الخيار 121 في DHCP (المعرف في وثيقة RFC 3442 باسم The Classless Static Route Option).

عبر تمرير سجلات توجيه ثابتة ومخصصة أثناء مرحلة استلام عنوان IP المحلي، يستطيع المهاجم الموجود على الشبكة المحلية ذاتها (LAN) التلاعب بجدول توجيه نواة نظام التشغيل، مما يؤدي إلى خروج البيانات خارج نفق التشفير دون التسبب في قطع اتصال VPN.

[تطبيق المستخدم / متصفح الويب]
                 │
                 ▼
     [جدول توجيه نواة نظام التشغيل]
     ┌────────────────────────────┐
     │ تقييم أطول بادئة توجيه     │
     └───────────┬────────────────┘
                 │
     ┌───────────┴───────────────────────────────┐
     │                                           │
[المسار الافتراضي لنفق VPN]         [المسارات المحقونة عبر الخيار 121]
  البادئة: 0.0.0.0/0 (مقياس 1)        البادئة: 0.0.0.0/1 + 128.0.0.0/1
  الواجهة: tun0 (مشفرة)               الواجهة: wlan0 (فيزيائية غير مشفرة)
     │                                           │
     │ (أُهملت: بادئة أقصر)                      │ (اختيرت: تطابق أطول بادئة!)
     │                                           ▼
     ▼                              [بوابة المهاجم المزيفة / التنصت]
 [خادم VPN الموثوق]                   (اعتراض كامل لحزم البيانات المكشوفة)

تشريح ثغرة TunnelVision: آلية تطابق أطول بادئة (LPM)

لفهم الكيفية التي تعطل بها ثغرة TunnelVision دفاعات VPN المعتادة، يتعين فحص القاعدة الأساسية التي تعتمدها أنظمة التشغيل في توجيه حزم IP: قاعدة تطابق أطول بادئة (Longest Prefix Match - LPM).

عندما تستعد نواة النظام لتوجيه حزمة شبكية، تفحص جدول التوجيه لمطابقة عنوان IP الوجهة مع المسارات المسجلة. إذا تطابق العنوان مع عدة قواعد، فإن النواة تختار إلزامياً المسار الذي يمتلك قناع شبكة فرعية أكثر تخصيصاً (أي صاحب البادئة الأطول عدداً من البتات)، متجاهلة مقاييس المسافة ونوع الواجهة الشبكية.

تعتمد تطبيقات VPN التقليدية على إنشاء مسار افتراضي (Default Route) لالتقاط البيانات:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.8.0.1        0.0.0.0         UG    50     0        0 tun0

يشمل المسار الافتراضي 0.0.0.0/0 شبكة الإنترنت بأكملها، لكن طول بادئته هو صفر بت (/0)، مما يجعله صاحب الأولوية الأدنى عند المقارنة.

عندما يتصل الجهاز بنقطة واي فاي غير موثوقة، يُرسل استعلام DHCP Discover. يستجيب خادم المهاجم بحزمة تتضمن الخيار 121. وتتيح مواصفة RFC 3442 للخادم فرض مسارات ثابتة مباشرة على جدول العميل.

يقوم المهاجم بحقن مسارين يغطيان معاً نطاق عناوين IPv4 بالكامل:

  1. المسار 0.0.0.0/1 عبر البوابة المحلية 192.168.1.1 (يشمل النطاق 0.0.0.0 إلى 127.255.255.255)
  2. المسار 128.0.0.0/1 عبر البوابة المحلية 192.168.1.1 (يشمل النطاق 128.0.0.0 إلى 255.255.255.255)

ولأن طول البادئة /1 أكبر من /0، فإن نواة نظام التشغيل توجه الحزم الخارجة تلقائياً عبر الواجهة الفيزيائية wlan0 بدلاً من واجهة النفق tun0. تغادر البيانات الجهاز في صورة مكشوفة، مما يتيح للمتنصت الاطلاع المباشر على كامل النشاط الشبكي.

+--------------------------+-----------------+-------------------+-----------------------+
| بند جدول التوجيه         | طول البادئة     | واجهة الإرسال     | أولوية النواة         |
+--------------------------+-----------------+-------------------+-----------------------+
| المسار الافتراضي (0.0/0) | /0 (الأعم)      | tun0 (مشفرة)      | ملغى بأولوية مسار /1  |
| الخيار 121 (0.0.0.0/1)   | /1 (أكثر دقة)   | wlan0 (مكشوفة)    | يُختار للنصف الأول    |
| الخيار 121 (128.0.0.0/1) | /1 (أكثر دقة)   | wlan0 (مكشوفة)    | يُختار للنصف الثاني   |
| مضيف محدد فردي (/32)     | /32 (دقة مطلقة) | wlan0 (مكشوفة)    | الأولوية القصوى       |
+--------------------------+-----------------+-------------------+-----------------------+

أوجه قصور قواطع الاتصال التقليدية (Kill Switch)

يعتمد المستخدمون على ميزة قاطع الاتصال الطارئ لمنع تسرب البيانات. إلا أن هذه الأدوات صُممت لمواجهة انقطاع اتصال النفق وليس لتصدي تسميم جداول التوجيه:

  • مراقبة اتصال المحول الافتراضي: تكتفي قواطع الاتصال بمراقبة سلامة واجهة tun0. وفي هجوم TunnelVision، يظل نفق VPN نشطاً وتستمر استجابات الحزم، وبالتالي لا يستشعر القاطع أي خلل.
  • استثناءات الشبكة المحلية: لتسهيل الطباعة اللاسلكية واستخدام وسائط التخزين المشتركة، تسمح جدران الحماية عادةً بتبادل الحزم داخل النطاق المحلي. يستغل الخيار 121 هذا الاستثناء عبر تقديم مسارات الإنترنت كوجهات محلية، فتمر الحزم دون اعتراض.
  • إعدادات الأنظمة الافتراضية: تقبل أنظمة ويندوز ومعظم توزيعات لينكس مسارات الخيار 121 تلقائياً، مما يجعل الأجهزة معرضة للتسريب دون عزل مسبق.

الحلول المعمارية الشاملة للوقاية من تسريب المسارات

يتطلب تعطيل تهديد TunnelVision فرض عزل بنيوي متقدم على مستوى مكدس الشبكة في نظام التشغيل.

[تطبيقات المستخدم (المتصفح، البريد، الأوامر)]
                        │
                        ▼
       [مساحة أسماء الشبكة (Network Namespace)] <── (حاجز عزل تام)
                        │
                        ▼
              [واجهة tun0 / wg0]
                        │ (تدفق WireGuard المشفر)
                        ▼
   [المساحة الفيزيائية: wlan0] ──> [خروج الحزم المشفرة فقط]

1. عزل مساحات أسماء الشبكة (Network Namespaces)

في بيئات لينكس، توفر مساحات الأسماء عزلاً كاملاً. عند تشغيل البرامج داخل مساحة أسماء مخصصة تحوي حصرياً واجهة VPN (wg0 أو tun0)، تفقد البرامج القدرة على رؤية بطاقة الشبكة الفيزيائية wlan0. حتى وإن حقن الخادم مسارات جديدة في جدول النظام الرئيسي، لا تستطيع التطبيقات المعزولة إرسال البيانات عبرها.

2. التوجيه المعتمد على السياسات (PBR) ووسم الحزم

تستخدم بروتوكولات WireGuard الحديثة وسم الحزم عبر جدار الحماية (fwmark) لتنظيم مسارات بديلة:

# توجيه الحزم غير الموسومة إلى الجدول 51820
ip rule add not fwmark 51820 table 51820
ip rule add table main suppress_prefixlength 0

تمنع قاعدة suppress_prefixlength 0 الجدول الرئيسي من فرض مسارات فرعية محقونة، موجهةً كافة البيانات نحو جدول النفق الآمن.

3. تعطيل استلام الخيار 121 في إعدادات DHCP

في الأجهزة المكتبية، يمكن تعديل ملف إعدادات عميل DHCP (/etc/dhcp/dhclient.conf) لحذف البند rfc3442-classless-static-routes من طلبات الشبكة، مما يمنع اعتماد أي مسارات مفروضة خارجياً.

4. الحماية المباشرة في بروتوكول RiceGuard

يعالج بروتوكول RiceGuard المطور في خدمة VPNRice تسريب المسارات عند طبقة النواة. عبر قواعد ترشيح nftables وeBPF، يفرض RiceGuard حظراً فورياً: أي حزمة غير مشفرة تتجه نحو وجهات خارجية عبر البطاقة الفيزيائية تُسقط في الحال، مما يبطل محاولات التحويل الاحتيالي عبر بروتوكول DHCP.

إرشادات الحماية في الشبكات المفتوحة

  • مراجعة جدول التوجيه دورياً: بعد الاتصال بأي شبكة عامة، تفقد المسارات النشطة عبر الأوامر ip route show أو route print لرصد أي مسارات دخيلة تحمل البادئة /1.
  • استخدام نقطة اتصال الهواتف المحمولة: عند إنجاز المعاملات الحساسة، يُفضل الاعتماد على شبكة الهاتف الشخصية المشفرة بكلمة مرور.
  • التأكد من عنوان IP الخارجي: تحقق بانتظام من أن عنوان الاتصال يطابق خادم VPN باستخدام أدوات الفحص المباشرة (curl https://ipinfo.io).