WebRTC
What is WebRTC?
WebRTC (Web Real-Time Communication) is an open-source project that enables real-time audio, video, and data sharing directly between web browsers and mobile applications without the need for plugins or external applications. It facilitates peer-to-peer communication, allowing for efficient and low-latency interactions.
However, it has serious privacy concerns, mainly by leaking our true IP address even when connected behind a VPN. Learn more about what WebRTC is and further down we discuss how to disable it in your browser.
Key Components of WebRTC:
- Media Capture:
- The
getUserMedia
API allows applications to access the device’s camera and microphone to capture audio and video streams.
- The
- Peer Connection:
- The
RTCPeerConnection
API manages the connection between peers, handling tasks such as signal processing, codec management, and network traversal to establish a direct link.
- The
- Data Channels:
- The
RTCDataChannel
API enables the exchange of arbitrary data between peers, supporting functionalities like file transfers and real-time gaming.
- The
How WebRTC Works:
- Signaling:
- Before a direct connection is established, peers need to exchange metadata (such as session control messages, network configurations, and media details) to coordinate communication. This process, known as signaling, is handled by the application using protocols like SIP, XMPP, or custom solutions over WebSockets. Notably, WebRTC does not specify a standard signaling protocol, leaving it to developers to implement as needed.
- Connection Establishment:
- Once signaling is complete,
RTCPeerConnection
takes over to establish a peer-to-peer link. It uses the Interactive Connectivity Establishment (ICE) framework to find the best path between peers, traversing NATs and firewalls as necessary.
- Once signaling is complete,
- Media and Data Exchange:
- With the connection established, media streams and data channels are set up, allowing for the real-time exchange of audio, video, and other data directly between peers.
Security Considerations:
While WebRTC encrypts data streams to ensure secure communication, it can inadvertently expose a user’s IP address through mechanisms like STUN (Session Traversal Utilities for NAT). This exposure can occur even when using a VPN, potentially compromising privacy. To mitigate this, users can disable WebRTC in their browsers or use browser extensions designed to prevent such leaks.
Applications of WebRTC:
- Video Conferencing: Platforms like Jitsi Meet utilize WebRTC to provide browser-based video conferencing without requiring additional software.
- File Sharing: WebRTC enables direct peer-to-peer file transfers, reducing reliance on intermediary servers.
- Gaming: Real-time multiplayer games leverage WebRTC’s data channels for low-latency communication between players.
Disabling WebRTC
On Desktop:
Firefox Based Browsers:
Type about:config into search bar on a new tab
Click Accept the Risk and Continue
Search for: media.peerconnection.enabled set to FALSE
Search for: media.peerconnection.ice.default_address_only set to TRUE
Brave Browser:
Type brave://flags into search bar on a new tab
Search for WebRTC
Set the four options to Disabled, relaunch the browser
On Android:
Vanadium:
- Disabled by default (check)
- Open Vanadium and click three dots icon and open ‘Settings‘
- Select ‘Privacy and Security‘ option
- Locate ‘WebRTC IP Handling Policy‘
- Ensure that ‘Disable non-proxied UDP‘ is selected
Brave:
- Open Brave and tap on the three-dot menu in the bottom-right corner.
- Select “Settings”.
- Tap on “Brave Shields & privacy”.
- Scroll down and tap on “WebRTC IP Handling Policy”.
- Choose “Disable Non-Proxied UDP”
VPN’s that block WebRTC leaks: Proton VPN, Mullvad VPN and IVPN
How to check for WebRTC leaks:
Visit: https://ipleak.net/
Visit: https://browserleaks.com/webrtc