در محیط‌های شبکه محلی اشتراکی مانند اترنت یا وای‌فای عمومی، دستگاه‌ها برای ارسال ترافیک به سمت اینترنت به دروازه پیش‌فرض (Default Gateway) متکی هستند. در وضعیت معمول، رایانه بسته‌ها را به روتر محلی تحویل می‌دهد تا به مقصد نهایی هدایت شوند. با این وجود، پشته IPv4 از سال ۱۹۸۱ شامل پروتکل کنترلی تشخیصی ویژه‌ای به نام ICMP است که در سند RFC 792 استانداردسازی شده است.

یکی از قابلیت‌های درون این استاندارد، پیام تغییر مسیر یا ICMP Redirect (نوع ۵) است. این سازوکار در دوره‌ای طراحی شد که تمامی دستگاه‌های یک شبکه محلی ذاتا مورد اعتماد تلقی می‌شدند. هدف آن این بود که اگر مسیر کوتاه‌تری برای رسیدن به مقصد وجود دارد، روتر به دستگاه مبدا اطلاع دهد. اما در یک شبکه محلی ناامن، مهاجم می‌تواند از همین ویژگی برای مسموم‌سازی جدول مسیریابی (ICMP Route Poisoning) سوءاستفاده کند.

ساختار بسته پیام‌های نوع ۵ پروتکل ICMP در RFC 792

هنگامی که روتر داده‌ای را از یک رابط شبکه فیزیکی دریافت می‌کند و متوجه می‌شود که برای ارسال بسته به گام بعدی باید آن را مجددا از همان رابط فیزیکی به بیرون بفرستد، این جریان را یک مسیر غیربهینه در نظر می‌گیرد. بنابراین، روتر یک بسته ICMP Redirect برای رایانه فرستنده ارسال می‌نماید.

ساختار باینری فریم تغییر مسیر ICMP به صورت زیر تعریف شده است:

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|     Type (5)  |     Code      |          Checksum             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Gateway Internet Address                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Internet Header + 64 bits of Original Data Datagram      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

فیلدهای فنی پیام شامل موارد زیر است:

  • فیلد Type: مقدار عددی 5 که نشان‌دهنده پیام تغییر مسیر ICMP است.
  • فیلد Code: دامنه تغییر مسیر را تعیین می‌کند:
    • کد 0: تغییر مسیر برای کل شبکه مقصد.
    • کد 1: تغییر مسیر برای یک میزبان خاص (Host Redirect).
    • کد 2: تغییر مسیر برای نوع سرویس و شبکه.
    • کد 3: تغییر مسیر برای نوع سرویس و میزبان خاص.
  • Gateway Internet Address: آدرس IPv4 دروازه جدید که بسته‌های بعدی باید به آن ارسال شوند.
  • داده‌های ضمیمه: شامل سرآیند IP اولیه به همراه حداقل ۶۴ بیت (۸ بایت) از محتوای بسته‌ای که اعلان را ایجاد کرده است.

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

برپایی حمله مرد میانی (Man-in-the-Middle) در شبکه محلی

ریشه آسیب‌پذیری در فقدان احراز هویت رمزنگاری در RFC 792 نهفته است. هر دستگاه متصل به لایه دوم مشترک (مانند وای‌فای عمومی کافه‌ها یا سوئیچ‌های محلی) می‌تواند بسته‌های جعلی ICMP Type 5 تولید و تزریق کند.

مهاجم این حمله را در سه مرحله پیاده‌سازی می‌کند:

  1. شنود اولیه: مهاجم ترافیک محلی را رصد کرده تا نشست‌های فعال دستگاه قربانی را شناسایی کند.
  2. ساخت فریم جعلی: یک بسته ICMP نوع ۵ با کد ۱ ایجاد می‌شود که در آن آدرس روتر جدید، نشانی IP مهاجم تعیین شده و نشانی فرستنده به نام روتر واقعی جعل می‌گردد.
  3. تزریق به حافظه هسته: سیستم‌عامل قربانی پیام را به عنوان رهنمود رسمی روتر می‌پذیرد و یک مسیر مستقیم /32 برای آن مقصد ثبت می‌کند و کلیه تبادلات بعدی به سمت ماشین مهاجم روانه می‌شود.
مرحله حمله عملکرد مهاجم پاسخ هسته سیستم‌عامل قربانی پیامد فنی
شناسایی شنود نشست‌های TCP/UDP تبادل معمول داده‌ها استخراج مشخصات سوکت ارتباطی
تزریق فریم ارسال بسته جعلی ICMP نوع ۵ بررسی قطعه ۶۴ بیتی سرآیند انطباق بسته با ارتباط فعال
دستکاری جدول اعلام IP مهاجم به عنوان دروازه ایجاد مسیر پویا با ماسک /32 مسموم شدن جدول مسیریابی
شنود داده دریافت ترافیک خروجی قربانی فوروارد داده‌ها به روتر اصلی برقراری کامل نفوذ مرد میانی

تهدیدات متوجه شبکه‌های خصوصی مجازی (VPN)

اتصال به VPN با ساخت یک رابط مجازی (نظیر wg0 یا tun0) ترافیک را در کانالی رمزنگاری‌شده محافظت می‌کند. با این حال، حملات تغییر مسیر ICMP در صورت عدم ایزولاسیون کامل می‌توانند مخاطراتی پدید آورند:

۱. تغییر مسیر نقطه پایانی تونل

کلاینت VPN برای برقراری ارتباط با سرور، بسته‌های کپسوله‌شده را از طریق رابط فیزیکی (eth0 یا wlan0) به سمت دروازه محلی می‌فرستد. اگر مهاجم اقدام به ارسال ICMP Redirect برای نشانی عمومی سرور VPN کند، ترافیک تونل به سمت مهاجم روانه می‌شود. هرچند محتوا به دلیل رمزنگاری ChaCha20-Poly1305 ایمن می‌ماند، اما امکان تحلیل حجم داده‌ها و ایجاد اختلال در پایداری ارتباط فراهم می‌گردد.

۲. نشت ترافیک در صورت مسیریابی ضعیف

در سناریوهایی که از تونل تفکیک‌شده (Split Tunneling) استفاده می‌شود یا مسیریابی پیشرفته فعال نیست، مسیرهای تزریقی با ماسک /32 اولویت بالاتری نسبت به مسیرهای عمومی دارند. این امر می‌تواند سبب شود داده‌های مربوط به مقاصد حساس، بدون ورود به تونل امن، مستقیما و به صورت رمزنشده از کارت شبکه فیزیکی خارج شوند.

غیرفعال‌سازی پذیرش ICMP Redirect در سیستم‌عامل

با توجه به معماری مدرن شبکه‌ها، پذیرش بسته‌های تغییر مسیر ضرورتی نداشته و غیرفعال کردن آن توسط استاندارد RFC 1122 توصیه اکید شده است.

تنظیمات هسته لینوکس با ابزار Sysctl

برای مشاهده وضعیت کنونی پارامترهای تغییر مسیر از دستور زیر استفاده کنید:

sysctl -a | grep -E "accept_redirects|send_redirects"

جهت مسدودسازی کامل پذیرش و ارسال بسته‌ها، خطوط زیر را در فایل /etc/sysctl.d/99-disable-icmp-redirects.conf ذخیره کنید:

# غیرفعال‌سازی پذیرش تغییر مسیر ICMP برای کلیه رابط‌های IPv4
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# غیرفعال‌سازی ارسال پیام‌های تغییر مسیر ICMP
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# غیرفعال‌سازی پذیرش تغییر مسیر در پروتکل IPv6 (RFC 4861)
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0

برای اعمال بدون راه‌اندازی مجدد سیستم:

sudo sysctl --system

پیکربندی در سیستم‌های macOS و BSD

در سیستم‌عامل‌های خانواده BSD و macOS از دستور تغییر پارامترهای شبکه استفاده نمایید:

sudo sysctl -w net.inet.icmp.drop_redirect=1

تنظیمات امنیتی در ویندوز

در سیستم‌های ویندوزی می‌توان با استفاده از پاورشل، پذیرش تغییر مسیرها را در پشته TCP/IP غیرفعال نمود:

Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "EnableICMPRedirect" -Value 0 -Type DWord

دفاع ساختاریافته با معماری مسیریابی RiceGuard

در کنار تنظیمات هسته سیستم‌عامل، فناوری RiceGuard در VPNRice محافظت همه‌جانبه‌ای در برابر مسموم‌سازی مسیرها فراهم می‌سازد:

۱. جدول‌های مسیریابی مجزا و برچسب‌گذاری دیوار آتش (fwmark): ترافیک برنامه‌ها توسط دیوار آتش نشانه‌گذاری شده و از طریق پایگاه قوانین مسیریابی (ip rule) مستقیما به جدول اختصاصی 51820 هدایت می‌شود؛ بنابراین از تغییرات جدول مسیریابی اصلی تاثیر نمی‌پذیرد. ۲. فیلتر سخت‌گیرانه بسته‌ها در کارت شبکه فیزیکی: قوانین nftables کلیه بسته‌های ورودی ICMP Type 5 را پیش از رسیدن به پشته پردازش سیستم رد می‌کنند. ۳. تایید اعتبار ضد تکرار در WireGuard: پروتکل رمزنگاری Noise IK و پنجره لغزان ضد تکرار ۶۴ بیتی مانع از پذیرش هرگونه بسته دستکاری‌شده در شبکه محلی می‌شوند.

بهره‌گیری از ترکیب سخت‌سازی پارامترهای هسته و مسیریابی لایه سه در VPNRice، امنیت و حریم خصوصی ارتباطات شما را حتی در ناامن‌ترین شبکه‌های عمومی تضمین می‌نماید.