WebRTC Leak؛ نشتی پنهانی که آی‌پی واقعی شما را پشت تونل امن فاش می‌کند

عیب‌یابی   7 دقیقه مطالعه

تصور کنید تمام مسیر اینترنت خود را از یک تونل رمزنگاری‌شده عبور می‌دهید، آی‌پی شما روی یک سرور خارجی نشان داده می‌شود و خیالتان از بابت حریم خصوصی راحت است؛ اما یک سایت ساده، تنها با چند خط کد جاوااسکریپت، آدرس واقعی شبکه‌ی محلی شما را بیرون می‌کشد. این دقیقاً همان اتفاقی است که WebRTC Leak یا نشت WebRTC رقم می‌زند. این پدیده یکی از پنهان‌ترین و درعین‌حال خطرناک‌ترین راه‌های لو رفتن آی پی در مرورگرهای مدرن است و نکته‌ی نگران‌کننده اینجاست که حتی پشت یک اتصال امن هم ممکن است رخ دهد. در این مقاله به زبان دقیق و فنی توضیح می‌دهیم نشت WebRTC چیست، چرا اتفاق می‌افتد، چطور تشخیصش بدهید و چگونه به‌طور کامل آن را غیرفعال کنید.

WebRTC اصلاً چیست و چرا در مرورگر شما فعال است؟

WebRTC مخفف Web Real-Time Communication است؛ مجموعه‌ای از APIها که به مرورگرها اجازه می‌دهد بدون نیاز به نصب هیچ افزونه یا نرم‌افزار جانبی، ارتباط صوتی، تصویری و انتقال داده‌ی بلادرنگ برقرار کنند. هر بار که در گوگل میت تماس تصویری می‌گیرید، در دیسکورد صحبت می‌کنید یا یک فایل را مستقیم بین دو مرورگر جابه‌جا می‌کنید، احتمالاً WebRTC پشت صحنه در حال کار است.

این فناوری به‌صورت پیش‌فرض در تقریباً تمام مرورگرهای امروزی شامل کروم، فایرفاکس، اج، اپرا و سافاری فعال است و نیازی به اجازه‌ی صریح کاربر برای راه‌اندازی اولیه ندارد. همین «همیشه روشن بودن» است که آن را به یک سطح حمله‌ی بالقوه تبدیل می‌کند. WebRTC برای آن‌که بتواند کوتاه‌ترین و مستقیم‌ترین مسیر ارتباطی بین دو دستگاه را پیدا کند، نیاز دارد بداند دستگاه شما در شبکه چه آدرس‌هایی دارد و دقیقاً همین جست‌وجوی آدرس است که دروازه‌ی نشت را باز می‌کند.

نشت چگونه رخ می‌دهد؟ نقش STUN و ICE

برای برقراری ارتباط مستقیم بین دو دستگاهی که هرکدام پشت روتر و NAT (ترجمه‌ی آدرس شبکه) قرار دارند، WebRTC از مکانیزمی به نام ICE (Interactive Connectivity Establishment) استفاده می‌کند. این مکانیزم برای کشف آدرس عمومی دستگاه، پرس‌وجویی به سروری به نام STUN می‌فرستد.

سرور STUN در پاسخ می‌گوید: «من تو را با این آدرس آی‌پی می‌بینم.» مشکل دقیقاً همین‌جاست. WebRTC این پرس‌وجو را می‌تواند خارج از مسیر معمول مرورگر و گاهی مستقل از تنظیمات پروکسی ارسال کند. در نتیجه مجموعه‌ای از آدرس‌ها که به آن‌ها ICE Candidate گفته می‌شود تولید و در دسترس کد جاوااسکریپت صفحه قرار می‌گیرد. این آدرس‌ها معمولاً شامل موارد زیر هستند:

  • آدرس IP محلی: مثل ۱۹۲.۱۶۸.۱.۱۰ که آدرس دستگاه شما داخل شبکه‌ی خانگی یا سازمانی است.
  • آدرس IP عمومی واقعی: همان آی‌پی‌ای که شرکت اینترنت (ISP) به شما داده و قرار بود مخفی بماند.
  • آدرس IPv6: که در بسیاری از تونل‌ها اصلاً مدیریت نمی‌شود و به‌راحتی لو می‌رود.

یک وب‌سایت می‌تواند بدون هیچ هشداری این مقادیر را بخواند و آی‌پی واقعی شما را ثبت کند، حتی اگر در ظاهر آدرس نمایشی شما کاملاً متفاوت باشد.

چرا حتی پشت تونل امن هم آی‌پی لو می‌رود؟

بسیاری از کاربران تصور می‌کنند وقتی از یک تونل رمزنگاری‌شده استفاده می‌کنند، تمام ترافیک بدون استثنا از آن مسیر عبور می‌کند. واقعیت فنی پیچیده‌تر است. نشت WebRTC معمولاً در یکی از این سناریوها رخ می‌دهد:

  • پیکربندی در سطح مرورگر به‌جای سیستم: اگر تونل شما فقط از طریق یک افزونه‌ی مرورگری یا تنظیم پروکسی محدود به مرورگر کار کند، درخواست STUN ممکن است این لایه را دور بزند و مستقیم از کارت شبکه‌ی واقعی خارج شود.
  • عدم پوشش IPv6: برخی اتصالات فقط ترافیک IPv4 را تونل می‌کنند. اگر شبکه‌ی شما IPv6 فعال داشته باشد، WebRTC می‌تواند آدرس IPv6 واقعی را افشا کند.
  • نشت DNS و مسیر جانبی: در ترکیب با پیکربندی ناقص، WebRTC مسیری موازی برای خروج پیدا می‌کند که تحت کنترل تونل نیست.

به همین دلیل توصیه می‌کنیم به‌جای راهکارهای مرورگرمحور و شکننده، از یک آی پی ثابت در سطح سیستم‌عامل استفاده کنید که کل ترافیک دستگاه را مدیریت می‌کند. شما می‌توانید با مراجعه به پلن‌های آی پی ثابت نت‌باز اتصالی پایدار و یکپارچه روی پروتکل‌هایی مانند L2TP، WireGuard، OpenVPN و V2Ray داشته باشید که ترافیک را در لایه‌ی شبکه و نه فقط مرورگر هدایت می‌کنند و سطح این‌گونه نشت‌ها را به‌شدت کاهش می‌دهند.

چگونه نشت WebRTC را تست کنیم؟

پیش از هر اقدامی باید مطمئن شوید که آیا اصلاً دستگاه شما در معرض نشت است یا نه. خوشبختانه تست آن ساده و سریع است:

  • گام اول: ابتدا تونل امن خود را وصل کنید و مطمئن شوید آدرس نمایشی شما تغییر کرده است.
  • گام دوم: به یکی از ابزارهای آنلاین تست نشت مانند سرویس‌های شناخته‌شده‌ی WebRTC Leak Test مراجعه کنید.
  • گام سوم: در نتایج به بخش‌های مربوط به Local IP Address و Public IP Address دقت کنید.

نتیجه را چگونه تفسیر کنیم؟ اگر در بخش آدرس عمومی، همان آی‌پی سرور تونل را ببینید، وضعیت امن است. اما اگر آی‌پی واقعی ISP شما یا یک آدرس IPv6 ناشناخته نمایش داده شود، یعنی دچار نشت هستید. توجه کنید که نمایش آدرس محلی مانند ۱۹۲.۱۶۸.x.x به‌تنهایی فاجعه نیست، چون این آدرس در همه‌ی شبکه‌ها مشترک است؛ خطر اصلی زمانی است که آی‌پی عمومی واقعی فاش شود. این تست را با مرورگرهای مختلف تکرار کنید، چون رفتار هر مرورگر می‌تواند متفاوت باشد.

روش غیرفعال‌سازی WebRTC در مرورگرهای مختلف

اگر تست نشان داد که دچار نشت هستید یا صرفاً می‌خواهید پیشگیرانه عمل کنید، می‌توانید رفتار WebRTC را کنترل کنید. روش کار در هر مرورگر کمی فرق دارد:

  • فایرفاکس: در نوار آدرس عبارت about:config را تایپ کنید، سپس کلید media.peerconnection.enabled را پیدا کرده و مقدار آن را روی false بگذارید. فایرفاکس تنها مرورگری است که امکان غیرفعال‌سازی کامل و بومی WebRTC را می‌دهد.
  • کروم و اج: این مرورگرها گزینه‌ی بومی برای خاموش‌کردن کامل WebRTC ندارند. راهکار رایج، نصب افزونه‌های معتبری مانند WebRTC Network Limiter یا افزونه‌های کنترل نشت است که سیاست مدیریت آدرس‌ها را محدود می‌کنند.
  • اپرا: مشابه کروم است و معمولاً با همان افزونه‌ها یا تنظیمات حریم خصوصی داخلی قابل مدیریت است.
  • سافاری: در نسخه‌های جدید می‌توانید از بخش Develop گزینه‌های مرتبط با WebRTC را محدود کنید.

نکته‌ی مهم: غیرفعال‌سازی کامل WebRTC ممکن است باعث از کار افتادن تماس‌های تصویری و برخی سرویس‌های ارتباطی شود. اگر به این سرویس‌ها نیاز دارید، به‌جای خاموش‌کردن کامل، روی محدودسازی افشای آدرس تمرکز کنید و در کنار آن از یک اتصال در سطح سیستم بهره ببرید. برای راه‌اندازی درست این اتصال‌ها می‌توانید از آموزش اتصال نت‌باز کمک بگیرید تا پیکربندی شما از همان ابتدا بدون نشت باشد.

بهترین راهکارها برای جلوگیری دائمی از نشت

غیرفعال‌سازی WebRTC تنها یک لایه از دفاع است. برای حفاظت پایدار از حریم خصوصی، توصیه می‌کنیم رویکردی چندلایه داشته باشید:

  • تونل را در سطح سیستم‌عامل اجرا کنید نه فقط مرورگر: این کار تضمین می‌کند درخواست‌های STUN هم از همان مسیر امن خارج شوند.
  • وضعیت IPv6 را بررسی کنید: اگر اتصال شما IPv6 را پوشش نمی‌دهد، بهتر است IPv6 را روی دستگاه غیرفعال کنید تا مسیر نشت بسته شود.
  • به‌صورت دوره‌ای تست بگیرید: پس از هر به‌روزرسانی مرورگر یا تغییر شبکه، دوباره تست نشت را اجرا کنید چون رفتار پیش‌فرض ممکن است تغییر کند.
  • از آی‌پی ثابت و اختصاصی استفاده کنید: آی‌پی ثابت پایداری اتصال را بالا می‌برد و مدیریت ترافیک را یکپارچه می‌کند. این موضوع به‌خصوص برای کاربرانی که به اتصال مطمئن و قابل اتکا نیاز دارند اهمیت زیادی دارد.

با ترکیب این موارد، حتی اگر یک سایت مخرب تلاش کند از طریق WebRTC آدرس شما را بخواند، چیزی جز همان آی‌پی امن و ثابت دریافت نخواهد کرد.

پرسش‌های متداول

آیا نشت WebRTC فقط مخصوص کاربران تونل و VPN است؟

نه لزوماً. هر کاربری که با مرورگر در اینترنت گشت می‌زند، WebClientش آدرس محلی شبکه را در معرض افشا قرار می‌دهد. اما خطر جدی برای کسانی است که فکر می‌کنند آی‌پی واقعی‌شان پنهان است؛ چون نشت WebRTC می‌تواند آن لایه‌ی پنهان‌کاری را دور بزند و آی‌پی واقعی را لو بدهد.

اگر WebRTC را غیرفعال کنم، باز هم می‌توانم تماس تصویری بگیرم؟

غیرفعال‌سازی کامل WebRTC ممکن است باعث اختلال در سرویس‌هایی مانند گوگل میت یا تماس تصویری دیسکورد در مرورگر شود. اگر به این قابلیت‌ها نیاز دارید، بهتر است به‌جای خاموش‌کردن کامل، از افزونه‌های محدودکننده‌ی افشای آدرس استفاده کنید که عملکرد تماس را حفظ می‌کنند ولی آدرس واقعی را پنهان نگه می‌دارند.

نمایش آدرس ۱۹۲.۱۶۸.x.x در تست نشت خطرناک است؟

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

استفاده از آی پی ثابت نت‌باز چطور به جلوگیری از نشت کمک می‌کند؟

اتصال‌های نت‌باز در سطح سیستم‌عامل و روی پروتکل‌هایی مانند L2TP و WireGuard اجرا می‌شوند و کل ترافیک دستگاه، از جمله پرس‌وجوهای STUN را از همان مسیر امن هدایت می‌کنند. این یکپارچگی باعث می‌شود سطح نشت WebRTC به‌شدت کاهش یابد. می‌توانید از طریق پلن‌های آی پی ثابت اقدام کنید و با کمک صفحه‌ی آموزش اتصال آن را بدون نشت پیکربندی کنید.

هرچند وقت یک‌بار باید تست نشت WebRTC را تکرار کنم؟

توصیه می‌شود پس از هر به‌روزرسانی مرورگر، تغییر شبکه یا نصب افزونه‌ی جدید، دوباره تست بگیرید. به‌روزرسانی‌ها گاهی تنظیمات پیش‌فرض را بازنشانی می‌کنند و ممکن است نشتی که قبلاً بسته بودید دوباره فعال شود.

💬