Народный

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

WebRTC leak — утечка через WebRTC

Браузерный API WebRTC может раскрыть реальный IP-адрес пользователя в обход VPN-туннеля через механизм STUN.

Определение

WebRTC leak — утечка реального IP-адреса пользователя через JavaScript API WebRTC (Web Real-Time Communication). WebRTC создан для peer-to-peer аудио/видео в браузере (Google Meet, видеозвонки) и использует STUN-серверы, чтобы клиент определил собственный публичный IP. Сайт через WebRTC-запрос узнаёт публичный IP пользователя, даже если включён VPN.

Атака работает в Chrome, Firefox, Edge, Safari — везде, где есть WebRTC. Не требует никаких разрешений: JavaScript просто создаёт RTCPeerConnection и читает поле candidate.

Как это работает

const pc = new RTCPeerConnection({
  iceServers: [{urls: 'stun:stun.l.google.com:19302'}]
});
pc.createDataChannel('');
pc.createOffer().then(o => pc.setLocalDescription(o));
pc.onicecandidate = e => {
  if (e.candidate) console.log(e.candidate.candidate);
  // → строка типа: "candidate:1 1 UDP 1234 87.123.45.67 53221 typ srflx ..."
  //                                          ^^^^^^^^^^^^^^^^ реальный IP пользователя
};

Браузер инициирует UDP-соединение к STUN-серверу — в обход VPN-туннеля (потому что WebRTC использует системный сокет, а не сокет приложения, маршрутизируемый через туннель). STUN-сервер отвечает «я тебя вижу из такого-то IP» — это публичный IP клиента, не IP VPN-сервера.

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

  • browserleaks.com/webrtc — стандарт-тест.
  • ipleak.net — секция «WebRTC IP Address detection».
  • DevTools Network → WebRTC — посмотреть ICE-кандидатов вручную.

В норме при включённом VPN WebRTC должен показывать только IP VPN-сервера. Если виден ваш реальный IP — leak.

Как лечится

  • Отключить WebRTC в Firefox: about:configmedia.peerconnection.enabled = false. Полностью отключает WebRTC; видеозвонки в браузере перестанут работать.
  • Chrome / Edge: extension WebRTC Leak Prevent. Через настройки browser-side это не отключается.
  • VPN-клиент с WebRTC-protection. ExpressVPN, NordVPN, ProtonVPN на Windows/macOS добавляют файрвольное правило, дропающее STUN-запросы не через туннель.
  • Outline + системный VPN на уровне ОС — WebRTC ушёл бы через туннель (потому что нет split tunneling в обход).
  • Использовать VPN-режим «полный туннель» (full-tunnel) — все приложения, включая браузер, ходят только через туннель. Не split.

Когда WebRTC leak реально опасен

  • Анонимность важна — журналист, активист. Узнавание реального IP = деанон.
  • VPN включён для обхода блокировок — сайт-источник видит, что вы из РФ, может отдать заблокированный контент или вообще не показать. Особенно касается стриминг-сервисов: Netflix/Hulu/HBO видят оригинальный IP через WebRTC и блокируют просмотр.
  • Корпоративный сетап — WebRTC leak может выдать внутренний IP офиса.

Когда не критично

  • Обход блокировок Instagram/Telegram — РКН видит ваш реальный IP в любом случае (вы же находитесь в РФ). VPN важен для DPI-обхода, не для анонимности.
  • Обычный сёрфинг без приватных задач — WebRTC leak это утечка приватности, но не security-уязвимость.

Источники

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