مطالعه مورد نشت 2: نشت WebRTC

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

با این حال ، WebRTC ممکن است بعضی مواقع وب سایتها را قادر سازد تا آدرس IP عمومی کاربر را مشاهده کنند ، نمایانگر یک نشت به خطر افتادن حریم خصوصی. این مطالعه موردی از آزمایشگاه تحقیقات حریم خصوصی ما چگونگی وقوع نشت WebRTC و نحوه آزمایش آنها را با استفاده از ابزار تست نشت ExpressVPN توضیح می دهد.

مرور کلی WebRTC

WebRTC مجموعه ای از فن آوری های باز است که به صفحات وب اجازه می دهد تا از طریق یک مرورگر وب ارتباطات همتا (P2P) برقرار کنند. اکنون بیشتر مرورگرهای مدرن از استاندارد WebRTC پشتیبانی می کنند.

از جمله موارد دیگر ، WebRTC به مرورگرهای وب امکان شناسایی آدرسهای IP عمومی کاربر و همچنین آدرسهای IP محلی آنها را می دهد. این توانایی برای تسهیل ارتباطات P2P فقط با استفاده از مرورگرهای وب ، بدون برنامه یا افزونه اضافی ، مهم است.

نشت WebRTC

نشت WebRTC نوعی نشت IP است. صفحات وب می توانند از API های JavaScript WebRTC استفاده کنند تا از مرورگر آدرسهای IP دستگاه بخواهند. پس از جمع آوری این آدرسهای IP می توانند آنها را به سرورهای خود ارسال کرده و از آنها برای شناسایی افرادی که به یک صفحه وب یا سرویس خاص دسترسی دارند استفاده کنند..

بیشتر برنامه های VPN به طور موثری در برابر نشت آدرس های IPv4 از طریق WebRTC محافظت می کنند ، با این حال بسیاری از برنامه های VPN تمایل دارند از آدرس های IPv6 به همان روش نادیده بگیرند..

چگونه WebRTC آدرس های IP را تشخیص می دهد?

WebRTC از دو روش اصلی برای تعیین آدرس های IP دستگاه استفاده می کند: سرورهای STUN / TURN و نامزد میزبان کشف.

STUN / TURN سرورها با بررسی اینکه آدرس IP عمومی برای دسترسی به آنها استفاده می شود ، آدرسهای IP را کشف می کنند. معمولاً اینها دلیل نشت IP VPN نیست.

کشف کاندیدای میزبان وقتی نشت WebRTC می آید مشکل ساز است. این قابلیت به مرورگرها اجازه می دهد تا به طور مستقیم سیستم و رابط های شبکه شما را بررسی کنند و ببینند که آدرس های IP با آنها در ارتباط هستند.

همه رابط های شبکه فعال در یک دستگاه برای عملکرد نیاز به آدرس های IP دارند. به عنوان مثال ، برای اتصال Wi-Fi فعال یک رابط شبکه مربوطه در یک دستگاه وجود خواهد داشت. این رابط به نوبه خود دارای آدرس IP خواهد بود.

WebRTC می تواند این آدرسهای IP را که معمولاً نمی توان در خارج از دستگاه مشاهده کرد ، به صفحات وب نشان دهد.

چرا نشت IPv6 مشکل ساز است?

آدرس های IPv4 از نظر کمبود تأمین می شوند – به راحتی کافی نیست که به اطراف بروید! معمولاً آدرسهای IPv4 بین افراد به اشتراک گذاشته می شود. برای انجام این کار ، سیستمی به نام ترجمه آدرس شبکه (NAT) استفاده شده است. این سیستم به دستگاه ها اجازه می دهد تا هنگام اشتراک آدرس IP عمومی مشترک ، معمولاً از طریق ISP ، آدرسهای “IPV4 محلی” را به رابط های شبکه خود اختصاص دهند. این آدرس های IP محلی در سراسر جهان توسط میلیون ها کامپیوتر در سراسر جهان استفاده می شود و ارتباط مستقیم با یک فرد خاص دشوار است.

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

چه نوع نشتی وجود دارد?

دو نوع نشت WebRTC وجود دارد که از نظر شدت متفاوت هستند. کدام یک از کاربران ممکن است در معرض آسیب پذیری قرار بگیرند بستگی به این دارد که آیا مجوزهای خاص مربوط به WebRTC را به یک صفحه وب اعطا می کنند. در هر دو مورد ، یک VPN خوب باید از نشت محافظت کند.

توجه داشته باشید که تولید کنندگان مرورگر ممکن است از روش های مختلفی برای پیاده سازی WebRTC استفاده کنند ، بنابراین ممکن است یک مرورگر نشت کند و دیگری حتی با وجود همان تنظیمات دستگاه و ارائه دهنده VPN ، نشت کند..

نشت مداوم (بدون نیاز به مجوز)

به طور پیش فرض ، به صفحات وب مجوزهای WebRTC اعطا نمی شود. با این وجود ، دسترسی به برخی از آدرس های IP کاربر با استفاده از API های WebRTC هنوز امکان پذیر است. در این مواقع ، وب سایت ها می توانند به راحتی کاربر را از طریق آدرس IP خود بدون اطلاع آنها پیگیری کنند.

نشت محرک (مجوزهای لازم)

صفحات وب به صراحت می توانند مجوز استفاده از قابلیت های مرتبط با WebRTC را درخواست کنند. این مجوزها در واقع به عنوان طبقه بندی می شوند میکروفون و دوربین مجوزها دلیل این امر این است که WebRTC یک فناوری است که به سمت ارتباطات P2P مانند مکالمات صوتی یا تداخلات ویدئویی در نظر گرفته شده است.

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

توجه داشته باشید که به صفحات وب مجزا باید مجوزها اعطا شود ، بنابراین اعطای مجوز برای یک سایت مجوز دیگری را نمی دهد.

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

  • از هیچگونه سایت و خدمات دارای WebRTC استفاده نکنید
  • خطرات امنیتی و حریم خصوصی مربوط به افشای آدرس IP آنها را بپذیرید

آزمایش نشت

این آزمایشات را می توان در هر رایانه رومیزی انجام داد. هنگام انجام تست های نشت ، توصیه می کنیم که IPv6 را در دستگاه تست خود داشته باشید ، زیرا این احتمال زیاد وضعیت ارائه دهندگان VPN است..

تست دستی

می توانید با استفاده از تست نشت WebRTC آنلاین ، نشت نشت را تست کنید.

مراحل Repro

  • اطمینان حاصل کنید که صفحه تست نشت است بسته
  • اطمینان حاصل کنید که برنامه VPN شماست قطع شده
  • از صفحه آزمایش نشت WebRTC دیدن کنید
  • از همه یادداشت کنید عمومی آدرسهای IP که در خروجی آزمون مشاهده می کنید
    • آنها با نمایش داده می شوند وضعیت به عنوان “نشت بالقوه”
  • صفحه آزمایش نشت را ببندید
  • به VPN وصل شوید
  • صفحه آزمایش نشت WebRTC را باز کنید
  • اگر هر یک از آدرس های IP را مشاهده کردید که فقط یادداشت های فوق را یادداشت کرده اید ، در این صورت نشتی دارید

توجه داشته باشید که ما صریحاً از شما می خواهیم برای جلوگیری از مشکلات ذخیره مرورگر ، صفحه آزمایش نشت را ببندید. بسیاری از مرورگرها IP های شناسایی شده از طریق WebRTC را ذخیره می کنند ، بنابراین بارگذاری مجدد صفحه وب راهی مطمئن برای اجرای آزمون نیست.

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

تست با استفاده از ابزار تست نشت ExpressVPN

ابزار تست نشت ExpressVPN مجموعه گسترده ای از ابزارهای منبع باز پایتون است که برای تست نشت دستی و خودکار برنامه های VPN طراحی شده است. لطفاً برای آشنایی با راهنمایی در بارگیری و تنظیم ابزارها ، به معرفی ما مراجعه کنید.

هنگامی که ابزارها را تنظیم کردید ، اطمینان حاصل کنید که در فهرست ابزارهای اصلی قرار دارید و اجرای آن را انجام می دهید:

./run_tests.sh -c پیکربندی / Case_studies / webrtc_leaks.py

این دستور دو مورد آزمایش را در چندین مرورگر اجرا می کند. هر دو مورد آزمون تا حد زیادی اتوماسیون مراحل دستی است که در بالا توضیح داده شده و موارد زیر را انجام می دهند:

  • اطمینان حاصل کنید که برنامه VPN تحت آزمایش قطع شده است
  • آدرس های عمومی IPv4 و IPv6 دستگاه را تعیین کنید
  • برنامه VPN را وصل کنید
  • برای جمع آوری IP های WebRTC از یک صفحه وب تست نشت ساده استفاده کنید
  • بررسی کنید که آیا هر یک از IP های عمومی جمع آوری شده قبل از اتصال از طریق WebRTC پس از اتصال قابل مشاهده است

در صورت عدم دسترسی به مجوزهای مرورگر ، یک آزمایش برای نشت مداوم آزمایش خواهد کرد ، در صورت مجوز ، تست دیگر برای نشتی آزمایش می کند هستند اعطا شده.

توجه: می توانید مرورگرهایی را که با استفاده از تغییر استفاده می کنند تنظیم کنید مرورگرها لیست در webrtc_leaks.py فایل.