نشانگر سیستم‌عامل وضعیت اتصال شبکه اختصاصی مجازی (VPN) را پایدار و رمزنگاری‌شده گزارش می‌دهد. ارتباط تونل فعال است و کلید قطع اضطراری (Kill Switch) در وضعیت آماده‌باش به سر می‌برد. با این حال، هنگام اتصال به یک شبکه وای‌فای عمومی، درخواست‌های وب، پرس‌وجوهای سامانه نام دامنه (DNS) و داده‌های متنی کاربر به شکل فریم‌های اترنت آشکار و بدون رمزنگاری مستقیماً به سوی درگاه تحت کنترل مهاجم روانه می‌شوند.

این تکنیک آشکارسازی ترافیک با شناسه آسیب‌پذیری CVE-2024-3661 و نام تجاری TunnelVision ثبت شده است. این رخنه که توسط پژوهشگران گروه امنیتی Leviathan افشا گردید، بر پایه خطاهای پیچیده سرریز حافظه یا شکستن ریاضی الگوریتم‌های رمزنگاری استوار نیست. در عوض، این حمله از قابلیتی استاندارد در پروتکل پیکربندی پویای میزبان (DHCP) بهره‌برداری می‌کند که از سال ۲۰۰۲ تصویب شده است: گزینه ۱۲۱ در پروتکل DHCP (مبتنی بر سند RFC 3442 با عنوان The Classless Static Route Option).

با تزریق رکوردهای مسیریابی ایستا در جریان اختصاص نشانی IP محلی، مهاجمی که در همان شبکه محلی (LAN) حضور دارد جدول مسیریابی هسته سیستم‌عامل را دستکاری کرده و ترافیک را به خارج از تونل رمزشده هدایت می‌کند، بدون آنکه اتصال VPN قطع گردد.

[برنامه کاربردی / مرورگر وب]
                 │
                 ▼
     [جدول مسیریابی هسته سیستم‌عامل]
     ┌────────────────────────────┐
     │ ارزیابی طولانی‌ترین پیشوند  │
     └───────────┬────────────────┘
                 │
     ┌───────────┴───────────────────────────────┐
     │                                           │
[مسیر پیش‌فرض VPN]                 [مسیرهای تزریق‌شده با گزینه ۱۲۱]
  پیشوند: 0.0.0.0/0 (متریک ۱)        پیشوند: 0.0.0.0/1 + 128.0.0.0/1
  رابط: tun0 (رمزنگاری‌شده)          رابط: wlan0 (فیزیکی آشکار)
     │                                           │
     │ (نادیده گرفته شد: پیشوند کوتاه‌تر)         │ (انتخاب شد: پیشوند طولانی‌تر!)
     │                                           ▼
     ▼                              [درگاه جعلی مهاجم / ابزار استراق سمع]
[سرور امن VPN]                        (شنود کامل بسته‌های خام بدون رمز)

سازوکار TunnelVision: قاعده تطبیق طولانی‌ترین پیشوند

برای درک چگونگی بی‌اثر شدن حفاظت VPN در برابر این آسیب‌پذیری، باید منطق بنیادین هدایت بسته‌های IP را بازبینی کرد: قاعده تطبیق طولانی‌ترین پیشوند (Longest Prefix Match - LPM).

هنگامی که هسته سیستم‌عامل بسته‌ای را ارسال می‌کند، جدول مسیریابی خود را بررسی می‌نماید. اگر چندین قانون با نشانی IP مقصد همخوانی داشته باشند، هسته همواره قاعده‌ای را برمی‌گزیند که دقیق‌ترین ماسک زیرشبکه (طولانی‌ترین پیشوند بر حسب بیت) را داراست؛ در این فرایند اولویت متریک یا نوع رابط مجازی نادیده گرفته می‌شود.

نرم‌افزارهای استاندارد VPN با تعریف یک مسیر پیش‌فرض ترافیک را در بر می‌گیرند:

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 فرستاده می‌شود. سرور متخاصم در پاسخ خود گزینه Option 121 را می‌گنجاند. طبق استاندارد RFC 3442، سرور اجازه دارد مسیرهای ایستای بدون کلاس را مستقیماً به کلاینت دیکته کند.

مهاجم دو مسیر مجزا تزریق می‌کند که تمام پهنه اینترنت IPv4 را پوشش می‌دهند: ۱. مسیر 0.0.0.0/1 از طریق درگاه محلی 192.168.1.1 (محدوده 0.0.0.0 تا 127.255.255.255) ۲. مسیر 128.0.0.0/1 از طریق درگاه محلی 192.168.1.1 (محدوده 128.0.0.0 تا 255.255.255.255)

از آنجا که طول پیشوند /1 از /0 بیشتر است، پشته شبکه داده‌ها را به جای رابط مجازی tun0 مستقیماً به سوی کارت شبکه فیزیکی wlan0 روانه می‌سازد. داده‌ها به شکل خام در شبکه محلی پخش می‌شوند و مهاجم به محتوای تبادلات دست می‌یابد.

+--------------------------+-----------------+-------------------+-----------------------+
| رکورد مسیریابی           | طول پیشوند      | رابط خروجی        | اولویت هدایت هسته     |
+--------------------------+-----------------+-------------------+-----------------------+
| مسیر پیش‌فرض (0.0.0.0/0) | /0 (کلی‌ترین)   | tun0 (رمزشده)     | مغلوب پیشوند /1       |
| گزینه ۱۲۱ (0.0.0.0/1)    | /1 (اختصاصی‌تر) | wlan0 (آشکار)     | انتخاب برای نیمه نخست |
| گزینه ۱۲۱ (128.0.0.0/1)  | /1 (اختصاصی‌تر) | wlan0 (آشکار)     | انتخاب برای نیمه دوم  |
| میزبان منفرد (/32)       | /32 (دقیق‌ترین) | wlan0 (آشکار)     | اولویت قطعی و مطلق    |
+--------------------------+-----------------+-------------------+-----------------------+

علل ناتوانی سازوکارهای سنتی Kill Switch

بسیاری بر این باورند که فعال بودن قابلیت Kill Switch مانع از هرگونه درز اطلاعات است. اما ساختار سنتی این ابزارها برای مهار قطعی پیوند رمز طراحی شده، نه آلودگی جدول مسیرها:

  • پایش رابط مجازی: ابزارهای سنتی تنها پیوستگی رابط مجازی (tun0) را می‌سنجند. در حمله TunnelVision ارتباط VPN هرگز قطع نمی‌شود و بسته‌های همگام‌سازی پاسخ دریافت می‌کنند؛ در نتیجه سوئیچ اضطراری فعال نمی‌گردد.
  • استثناهای ترافیک محلی: دیوار آتش سیستم‌ها معمولاً برای حفظ دسترسی به چاپگرهای شبکه، ترافیک ارسالی به مقصد درگاه‌های محلی را مجاز می‌شمارد. گزینه ۱۲۱ با شبیه‌سازی بسته‌های سراسری به عنوان مقاصد شبکه محلی، از فیلترهای دیواره آتش عبور می‌کند.
  • رفتار پیش‌فرض سیستم‌عامل‌ها: سیستم‌عامل‌های ویندوز و گستره وسیعی از توزیع‌های لینوکس مسیرهای ارائه‌شده توسط DHCP Option 121 را به صورت پیش‌فرض و بدون تایید کاربر می‌پذیرند.

لایه‌های دفاعی و جداسازی ساختاری شبکه

مهار قطعی آسیب‌پذیری TunnelVision به اعمال حریم‌های امنیتی ساختاری در پشته شبکه نیازمند است.

[برنامه‌های کاربردی میزبان (مرورگر، ایمیل، پایانه‌ها)]
                        │
                        ▼
       [فضای نام شبکه لینوکس (Network Namespace)] <── (جداسازی غیرقابل نفوذ)
                        │
                        ▼
               [رابط مجازی tun0 / wg0]
                        │ (جریان رمزنگاری‌شده پروتکل امن)
                        ▼
   [فضای فیزیکی میزبان: wlan0] ──> [صرفاً خروج بسته‌های بیرونی رمزشده]

۱. بهره‌گیری از فضاهای نام شبکه (Network Namespaces)

در سیستم‌های مبتنی بر لینوکس، استفاده از فضاهای نام شبکه حفاظی بنیادین ایجاد می‌کند. با اجرای برنامه‌ها در فضای نام مستقلی که صرفاً به رابط VPN متصل است، برنامه‌ها اصولاً دیدی نسبت به کارت شبکه فیزیکی wlan0 ندارند. بدین ترتیب حتی با آلوده شدن جدول مسیرهای میزبان، برنامه‌ها امکان ارسال داده در مسیرهای بیرونی را نخواهند داشت.

۲. مسیریابی مبتنی بر خط‌مشی (PBR) و نشانه‌گذاری بسته‌ها

رویکردهای مدرن پیکربندی پروتکل‌ها نظیر WireGuard از علامت‌گذاری بسته‌ها در دیواره آتش (fwmark) بهره می‌گیرند:

# هدایت کلیه بسته‌های بدون علامت به جدول اختصاصی ۵۱۸۲۰
ip rule add not fwmark 51820 table 51820
ip rule add table main suppress_prefixlength 0

دستور suppress_prefixlength 0 مانع از آن می‌شود که رکوردهای محلی با پیشوندهای دقیق‌تر، مسیر امن VPN را دور بزنند.

۳. رد پذیرش گزینه ۱۲۱ در تنظیمات DHCP

در سامانه‌های دسکتاپ می‌توان با اصلاح پرونده پیکربندی کلاینت DHCP (/etc/dhcp/dhclient.conf) و حذف عبارت rfc3442-classless-static-routes، سامانه را از پذیرش خودکار مسیرهای اعلامی بازداشت.

۴. مهار در سطح هسته توسط پروتکل RiceGuard

پروتکل اختصاری RiceGuard در سرویس VPNRice با استقرار در لایه هسته شبکه از طریق زیرسیستم nftables/eBPF بسته‌های داده را هدایت می‌کند. چنانچه بسته‌ای به شکل رمزنشده قصد خروج از کارت فیزیکی به مقاصد فراتر از شبکه خصوصی محلی را داشته باشد، فیلتر لایه درایور بی‌درنگ آن را منهدم می‌سازد و سوءاستفاده از تنظیمات DHCP را بی‌اثر می‌نماید.

توصیه‌های ایمنی برای اتصالات شبکه عمومی

  • وارسی مستمر جدول مسیرها: پس از برقراری ارتباط در شبکه‌های عمومی با فرمان ip route show یا route print سرفصل‌های مشکوک با پیشوند /1 را بررسی کنید.
  • استفاده از اشتراک اینترنت همراه: در مبادلات حساس، اتصال به هات‌اسپات امن گوشی همراه را بر شبکه‌های وای‌فای باز فاقد احراز هویت ترجیح دهید.
  • بررسی صحت IP خروجی: همواره با استفاده از ابزارهای مستقل ترمینال (curl https://ipinfo.io) از خروج ترافیک از سرور امن VPN اطمینان حاصل نمایید.