Безопасность
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:config→media.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-уязвимость.
Источники
- Mozilla — WebRTC API.
- Daniel Roesler — «Demo: WebRTC IP leak» (POC 2015, до сих пор работает).
- RFC 5389 — STUN протокол.
Связанные термины
- DNS leak — параллельная утечка.
- Kill switch — общая защита от leak’ов.
- Split tunneling — частая причина.