Народный

Безопасность

WebRTC leak: как браузер выдаёт ваш IP даже под VPN

Команда vpn-rating.xyz · · ⏱ 9 мин
§ в этой статье — 34 разделов

WebRTC leak — это утечка реального IP-адреса через браузер по протоколу WebRTC, даже если вы подключены к VPN. WebRTC использует STUN-серверы, чтобы узнать публичный IP клиента для P2P-соединений (видеозвонки, голосовые чаты, файлообмен). STUN-запрос может пойти мимо VPN-туннеля, и сайт через JavaScript получит ваш домашний IP. Это работает в Chrome, Firefox, Safari и других браузерах с поддержкой WebRTC.

В 2026 году WebRTC leak — одна из самых распространённых уязвимостей VPN-сетапа, и она не решается на стороне VPN-клиента: чинить нужно в браузере.

Что такое WebRTC

WebRTC (Web Real-Time Communication) — стандарт W3C для прямого P2P-соединения между браузерами без посредника-сервера. Используется в Google Meet, Discord (web-клиент), Zoom (web), WhatsApp Web, Telegram Web и десятках других сервисов для видео- и аудиосвязи.

Технически WebRTC устанавливает соединение между двумя устройствами через интернет. Для этого ему нужно знать публичные IP-адреса обоих участников — иначе пакеты UDP не найдут друг друга. Чтобы их узнать, WebRTC использует STUN.

STUN

STUN (Session Traversal Utilities for NAT) — серверы, которые сообщают клиенту его публичный IP-адрес. Вы шлёте UDP-запрос на STUN-сервер, он отвечает: «вижу тебя как 89.110.73.101:54321». Теперь вы знаете свой external IP и можете передать его собеседнику для прямого подключения.

WebRTC по умолчанию использует Google STUN (stun:stun.l.google.com:19302) или собственные сервера сервиса.

Как работает WebRTC leak

Проблема: STUN-запрос идёт через UDP, и в некоторых конфигурациях VPN может его пропустить или маршрутизировать неправильно.

Сценарий:

  1. Вы под VPN. Туннель работает, HTTPS-трафик идёт через сервер VPN.
  2. Открываете сайт с JavaScript, который использует WebRTC API.
  3. JS делает запрос: «дай мне ICE candidates» (список возможных адресов клиента).
  4. Браузер шлёт STUN-запросы. Если конфигурация не блокирует — UDP-запрос идёт через физический интерфейс, минуя VPN.
  5. STUN-сервер отвечает: «твой публичный IP — реальный домашний IP».
  6. JS получает этот IP и шлёт на сервер сайта (или просто отображает).

Результат: сайт знает ваш реальный IP, ваш VPN-IP, и сравнивает их. Если разные — вы под VPN, и сайт может вас деанонимизировать.

Кто эксплуатирует

Несколько типичных сценариев эксплуатации:

  • Рекламные сети — собирают реальные IP для трекинга, даже под VPN.
  • Фрод-детекторы — выявляют пользователей, которые маскируются под другую гео.
  • Цели целенаправленных атак — могут специально получить IP через скомпрометированный сайт.
  • Сайты, борющиеся с VPN-доступом — некоторые стримминги (Netflix), банки используют WebRTC leak для детекции VPN.

Это публичная уязвимость, которая существует с 2015 года и до сих пор актуальна.

Как проверить WebRTC leak

Тест 1: browserleaks.com/webrtc

Самый детальный. Зайдите на browserleaks.com/webrtc.

Что показывается:

  • Public IP Address — что видит сервер.
  • Local IP Address — внутренний IP в локальной сети (10.x, 192.168.x).
  • Public IPv4 / IPv6 (WebRTC) — то, что выдаёт WebRTC через STUN.

Что должно быть:

  • Public IP — VPN-IP.
  • WebRTC Public — пусто или VPN-IP.

Что плохо:

  • WebRTC Public показывает ваш реальный домашний IP — leak.
  • Local IP виден — само по себе не критично (внутренний IP роутера никому ничего не говорит), но указывает на активный WebRTC.

Тест 2: ipleak.net

ipleak.net — секция WebRTC внизу страницы. Аналогично browserleaks.

Тест 3: doileak.com

doileak.com — общий leak-тест, включая WebRTC.

Как починить — по браузерам

Firefox

Firefox даёт прямой контроль через about:config:

  1. Откройте about:config в адресной строке.
  2. Согласитесь с предупреждением.
  3. Найдите параметр media.peerconnection.enabled.
  4. Установите в false.

Это полностью отключит WebRTC. Минус — перестанут работать видеозвонки в браузере (Google Meet web, Discord web).

Если нужно сохранить WebRTC, но скрыть IP — есть media.peerconnection.ice.no_host и media.peerconnection.ice.default_address_only:

  • media.peerconnection.ice.default_address_only = true — браузер сообщит только одну адрес-кандидат, что усложняет утечку.

Лучше — установить расширение WebRTC Control или WebRTC Leak Shield, которое управляет настройками без about:config.

Chrome / Edge / Brave

Chrome не даёт встроенной опции отключить WebRTC. Это давняя жалоба сообщества, Google не двигается. Единственный путь — расширение.

Рекомендуемые расширения:

  • WebRTC Leak Prevent — блокирует non-proxied UDP, оставляет работающим WebRTC через VPN.
  • uBlock Origin — в advanced settings есть опция «Prevent WebRTC from leaking local IPs».
  • WebRTC Control — детальный контроль.

Установите одно из них и проверьте через browserleaks.

Brave — встроенная защита от WebRTC leak: brave://settings/shieldsWebRTC IP handling policyDisable Non-Proxied UDP. Это правильная настройка, не отключающая WebRTC полностью, но блокирующая STUN-запросы вне VPN-туннеля.

Safari

Safari даёт меньше контроля. Чтобы полностью отключить WebRTC:

  1. Safari → Preferences → Advanced → Show Develop menu.
  2. Develop → Experimental Features → отключить WebRTC mDNS ICE candidates.

Это не полное отключение, но снижает утечки.

Полностью отключить WebRTC в Safari невозможно без модификации системы. Apple не даёт.

Альтернатива — пользоваться Mullvad Browser или Tor Browser, которые правильно настраивают WebRTC.

Mullvad Browser

Mullvad Browser — форк Firefox от Mullvad VPN и Tor Project. WebRTC отключён или жёстко ограничен по умолчанию. Также защищён от browser fingerprinting.

Если приватность — приоритет, используйте Mullvad Browser, а не настраивайте обычный.

Tor Browser

Tor Browser — то же самое, только трафик через Tor. WebRTC отключён в дефолтной конфигурации.

Решение на уровне VPN-клиента (частично)

Некоторые VPN-клиенты пытаются заблокировать WebRTC-leak на уровне файрвола. Это работает, но не везде:

  • Mullvad — Block non-proxied UDP traffic. Системный kill switch отрезает STUN-запросы, которые идут не через туннель.
  • ProtonVPNDNS Leak Protection частично закрывает WebRTC, но не полностью.
  • NordVPN — не блокирует напрямую WebRTC, рекомендует расширения.

Идеал: VPN-клиент + системный kill switch + расширение в браузере. Чтобы даже если одна линия защиты упала — оставались остальные. Подробнее: Kill switch и защита от утечек.

WebRTC leak на мобильных

iOS Safari

Safari на iOS отключить WebRTC сложно. Но iOS-приложения сторонних браузеров (Brave, Firefox Focus) могут быть лучше.

В Brave iOS: Settings → Shields → Disable Non-Proxied UDP.

Android Chrome

В Android Chrome WebRTC включён и без расширений не отключить. Альтернативы:

  • Firefox for Android + about:config.
  • Brave for Android — встроенная защита.
  • Tor Browser for Android — WebRTC отключён.

См. VPN для Android и VPN для iPhone.

Что если нужны видеозвонки

WebRTC — основа видеозвонков в браузере. Если вы его полностью отключите, перестанут работать:

  • Google Meet (web-клиент).
  • Discord (web).
  • Whereby, Jitsi Meet.
  • WhatsApp Web (звонки).
  • Telegram Web (звонки).

Компромисс: использовать Brave / Mullvad Browser с опцией «Disable Non-Proxied UDP». WebRTC работает, но STUN-запросы идут через VPN-туннель. Видеозвонки работают, IP не утекает.

Альтернатива — использовать отдельный браузер для видеозвонков и отдельный для приватной активности. Видеозвонки в Chrome без VPN, приватная сёрфинг в Firefox с отключённым WebRTC под VPN.

Десктопные приложения (Zoom desktop, Discord desktop, Telegram desktop) не используют WebRTC напрямую — они шлют трафик через свои протоколы, которые обычно нормально маршрутизируются через VPN. Меньше уязвимостей.

Дополнительные риски WebRTC

Помимо leak IP, WebRTC может выдавать:

  • mDNS hostnames — Chrome с 2019 года использует mDNS для скрытия local IP, но имя устройства (типа iphone-vasiya.local) может утекать.
  • List of network interfaces — сколько у вас сетевых адаптеров.
  • STUN response timing — для fingerprinting.

Полная приватность от WebRTC — только при полном его отключении.

Расширения и инструменты — детальный обзор

WebRTC Control (Firefox / Chrome)

Open-source расширение, одно из самых старых и проверенных. Поддерживает все основные браузеры. Позволяет:

  • Полностью отключить WebRTC.
  • Заблокировать только non-proxy UDP, оставив P2P работающим через VPN.
  • Whitelist для сайтов, где WebRTC нужен.

Минусы: интерфейс староват, давно не обновлялся, но работает стабильно.

uBlock Origin (Firefox / Chrome / Edge)

Не специально WebRTC-расширение, но имеет фичу в дополнительных настройках. Откройте панель uBlock → Dashboard → Settings → Privacy → отметьте «Prevent WebRTC from leaking local IP addresses». Бонус: блокирует рекламу, трекеры, malware-домены.

Рекомендую uBlock Origin как универсальное расширение по приватности — оно покрывает не только WebRTC, но и десятки других векторов трекинга.

Disable WebRTC (Firefox)

Узкоспециализированное расширение, делает только одно: меняет media.peerconnection.enabled на false при загрузке. Минимально по весу, не открывает дополнительные настройки.

Privacy Badger (Firefox / Chrome)

От EFF. Не блокирует WebRTC напрямую, но детектит и блокирует сайты, которые используют WebRTC для fingerprinting. Совмещается с WebRTC Control.

NoScript (Firefox)

Жёстко контролирует JavaScript. Отключает WebRTC автоматически на сайтах, где он не разрешён вручную. Сложен для повседневного использования, но самый строгий.

Альтернатива: использование VM или контейнера для приватных задач

Радикальное решение, которое полностью изолирует приватный сёрфинг:

  1. Виртуальная машина (VirtualBox, UTM, VMware) с отдельной ОС.
  2. В этой ОС — браузер с настройками анонимности, VPN внутри VM.
  3. Хост-система — обычная, для повседневной работы.

WebRTC leak в VM не выдаст реальный IP хост-системы, только VM-IP, который и так через VPN.

Для тяжёлых задач opsec — Whonix (Linux-дистрибутив, специально под Tor) или Tails OS (live-USB).

Реальные кейсы WebRTC leak

Случай 1: журналист использовал VPN + Firefox

Журналист подключался к источнику через зашифрованный мессенджер на веб-версии. VPN был активен, IP замаскирован. Но веб-мессенджер использовал WebRTC для P2P-соединения с другим клиентом, и через STUN запрос пошёл наружу. Сторонний клиент увидел реальный IP журналиста.

Чтобы избежать — использовать desktop-приложение мессенджера, а не веб-версию. Desktop-app использует свой проток без браузерного WebRTC.

Случай 2: сайт детектил VPN-пользователей

Streaming-сервис активно борется с VPN. Сайт через JavaScript делал WebRTC-запросы и сравнивал HTTP-IP с WebRTC-IP. Если разные — блокировал доступ или показывал ошибку.

С исправленным WebRTC-leak streaming работает как обычно.

Случай 3: фрод-детектор банка

Банк через WebRTC получал реальный IP и сравнивал с заявленным VPN-IP. Если несовпадение — система определяла «подозрительная активность» и блокировала сессию.

В этом случае WebRTC leak был «фичей»: блокировал транзакции с VPN. Решение — отключать VPN при работе с банком, или использовать домашний VPN-роутер с правильной маршрутизацией.

Чек-лист защиты от WebRTC leak

  1. Десктоп — основной браузер:

    • Firefox: media.peerconnection.enabled = false или расширение WebRTC Control.
    • Chrome: расширение WebRTC Leak Prevent или uBlock Origin advanced.
    • Brave: настройка «Disable Non-Proxied UDP».
    • Safari: experimental features → disable WebRTC mDNS ICE candidates.
  2. Мобильный:

    • Android: Firefox + about:config или Brave с настройкой.
    • iOS: Brave или Mullvad Browser.
  3. Универсальное решение:

    • Mullvad Browser — отключено по умолчанию.
    • Tor Browser — отключено по умолчанию.
  4. VPN-уровень:

    • Включить системный kill switch.
    • DNS через VPN-туннель (см. DNS leak: как починить).
    • Block non-proxied UDP в Mullvad/IVPN.
  5. Проверка:

    • Раз в месяц на browserleaks.com/webrtc.
    • После любого обновления браузера.

Резюме

WebRTC leak — серьёзная уязвимость VPN-сетапа, потому что она работает на уровне браузера, минуя сам VPN. Хорошие новости: исправить просто. 5–10 минут на установку расширения или изменение настройки — и проблема закрыта.

Главное помнить: один тест на browserleaks после обновления браузера — потому что обновления Chrome / Firefox иногда сбрасывают настройки расширений. Профилактика лучше деанонимизации.

Для chronical-приватности — Mullvad Browser или Tor Browser, где это решено архитектурно. Для обычного использования — расширение + Brave или Firefox.

Связанные материалы

читать дальше

Похожие статьи