70% of VPN Chrome Extensions Leak Your DNS

Pierluigi Paganini April 03, 2018

Researchers John Mason with the help of TheBestVPN.com the ethical hacker File Descriptor from Cure53 tested 15 VPN services and 10 of them were causing DNS leaks through their Chrome browser extensions.

Intro

Google Chrome has a feature called DNS Prefetching(https://www.chromium.org/developers/design-documents/dns-prefetching) which is an attempt to resolve domain names before a user tries to follow a link.

It’s a solution to reduce latency delays of DNS resolution time by predicting what websites a user will mostly likely visit next by pre-resolving the domains of those websites.

The Problem

When using a VPN browser extensions, Chrome provides two modes to configure the proxy connections, fixed_servers and pac_script.

In fixed_servers mode, an extension specifies the host of an HTTPS/SOCKS proxy server and later all connections will then go through the proxy server.

In pac_script mode on the other hand, an extension provides a PAC script which allows dynamically changing the HTTPS/SOCKS proxy server’s host by various conditions. For example, a VPN extension can use a PAC script that determines if a user is visiting Netflix by having a rule that compares the URL and assigns a proxy server that is optimized for streaming. The highly dynamic nature of PAC scripts means the majority of VPN extensions use the mode pac_script over fixed_servers.

“Now, the issue is that DNS Prefetching continues to function when pac_script mode is used. Since HTTPS proxy does not support proxying DNS requests and Chrome does not support DNS over SOCKS protocol, all prefetched DNS requests will go through the system DNS. This essentially introduces DNS leak.”

There are 3 scenarios that trigger DNS Prefetching:

  • Manual Prefetch
  • DNS Prefetch Control
  • Omnibox

The first two allow a malicious adversary to use a specifically crafted web page to force visitors to leak DNS requests. The last one means when a user is typing something in the URL address bar (i.e. the Omnibox), the suggested URLs made by Chrome will be DNS prefetched. This allows ISPs to use a technology called “Transparent DNS proxy” to collect websites the user frequently visits even when using browser VPN extension.

Test Your VPN For DNS Leaks

To test if your VPN is vulnerable, do the following test:

  1. Activate the Chrome plugin of your VPN
  2. Go to chrome://net-internals/#dns
  3. Click on “clear host cache”
  4. Go to any website to confirm this vulnerability

If you find a VPN that is not listed, but leaks – please send us a screenshot ([email protected]) and we’ll update the list.

Affected VPNs That We’ve Tested (2nd of April):

  1. Hola VPN
  2. OperaVPN
  3. TunnelBear
  4. HotSpot Shield
  5. Betternet
  6. PureVPN
  7. VPN Unlimited
  8. ZenMate VPN
  9. Ivacy VPN
  10. DotVPN
Example of PureVPN leak

VPNs That Don’t Leak

  1. WindScribe
  2. NordVPN
  3. CyberGhost
  4. Private Internet Access
  5. Avira Phantom VPN
Example: NordVPN doesn’t leak

Solution/Fix

Users who want to protect themselves should follow the remediation:

  • 1. Navigate to chrome://settings/ in the address bar
  • 2. Type “predict” in “Search settings”
  • 3. Disable the option “Use a prediction service to help complete searches and URLs typed in the address bar” and “Use a prediction service to load pages more quickly”

This research was put together with the help of File Descriptor – ethical hacker from Cure53.

P.S. Note that online DNS leak test services like dnsleaktest.com are unable to detect this kind of DNS leak because the DNS requests are only issued under specific circumstances.

The Original post is available at here

[adrotate banner=”9″] [adrotate banner=”12″]

Pierluigi Paganini

(Security Affairs – Chrome Extensions, hacking)

[adrotate banner=”5″]

[adrotate banner=”13″]



you might also like

leave a comment