Is Bright Tab safe?
Bright Tab routes every new-tab search query through its own server with a persistent user ID and a server-assigned secret token.
When installed, Bright Tab contacts bright-tab.com to obtain a secret token and a user identifier, which are stored locally alongside a device-generated UUID. Every subsequent search typed in a new tab is transmitted to bright-tab.com as a URL parameter bundle that includes the search query, the UUID, the secret, and browser metadata, linking the full search history to a stable per-user profile on the vendor's server.
Who publishes itcoryatkinson56 - no other listings under this identity
coryatkinson56 - no other listings under this identity
What this publisher told the store about itself, and the other listings that told it the same thing.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Bright Tab links new-tab searches to persistent IDs
Searching from Bright Tab's new-tab page sends the terms to bright-tab.com in a GET URL that also carries a user UUID, a server token, theme code, browser version, and a stored utm_uid value, confirmed by dynamic analysis.
What actually happens
You submit a search from Bright Tab's replacement new-tab page.
Pressing Enter or clicking the search button calls the same search path.
The extension sends the search to bright-tab.com with persistent identifiers attached.
The request includes the typed query, a user UUID, a server-assigned token, and utm_uid.
Fields attached to the search request
- Search termsweather radar
This is the text you typed into the new-tab search box. It can include personal, work, or internal terms if you search for them there.
- Persistent user ID7a24b0de-0f43-4b64-a9c5-2f6d90c3e812
This lets repeated searches from the same browser be tied together over time.
- Server tokenredacted server token
This is a server-assigned value stored by the extension and sent with later searches.
- Attribution ID3481609274
This adds another stable value that can group searches or installs in the vendor's system.
- Browser contextb=chrome&bv=126&themeIndex=102
This records that the request came from Chrome and includes the browser version used by your browser.
Captured request
Navigation request to the vendor search endpoint; no request body is used for the search.
The code that does this
Install identifiers are stored, read on the new-tab page, and appended to each search.
Install request stores the server token and utm_uid
bg.jsfunction fireInstallPixel(userId) { const url = "https://" + SEARCH_DOMAIN + "/ch/install.php"; let parameters = { uid: userId, b: "chrome", extension: EXTENSION, theme_index: EXTENSION_CODE }; let formBody = []; for (let property in parameters) { let encodedKey = encodeURIComponent(property); let encodedValue = encodeURIComponent(parameters[property]); formBody.push(encodedKey + "=" + encodedValue); } formBody = formBody.join("&"); fetch(url, { method: "POST", body: formBody, headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, }).then(res => { return res.json() }).then(data => { SECRET = data["ch"]; utm_uid = data["utm_uid"]; chrome.storage.local.set({ secret: SECRET, utm_uid: utm_uid }); let ty_page = "https://" + SEARCH_DOMAIN + "/ch/ty.php?uid=" + utm_uid + "&ch=" + SECRET; chrome.tabs.create({ url: ty_page, }); }).catch(error => { console.log(error); });}The new-tab page reloads identifiers from extension storage
lib/newTab.jswindow.addEventListener("load", function () { chrome.storage.local.get( [ "secret", "userId", "utm_uid", "installation_week", "installation_year", "reset_time", ], function (items) { const { reset_time: resetTime } = items; if (items.userId !== undefined) { USER_ID = items.userId; } if (items.secret !== undefined) { SECRET = items.secret; } if (items.utm_uid !== undefined) { utm_uid = items.utm_uid; } if (items.installation_week !== undefined) { installation_week = items.installation_week; } if (items.installation_year !== undefined) { installation_year = items.installation_year; } } );});startSearch appends the identifiers to the search navigation
lib/newTab.jsfunction startSearch() { let query = $("#SearchBar").val().trim(); if (query.length === 0) { return; } let queryStringObject = { uid: USER_ID, rnd: 1, themeIndex : 102, b: "chrome", bv: ffVersion, secret: SECRET, source: 1, utm_uid: utm_uid, }; // if (query !== undefined && query !== null) // queryStringObject["q"] = query; let obj = new URLSearchParams(queryStringObject).toString(); window.location="https://bright-tab.com/ch/search.php?q="+query + "&" + obj;}Enter and click actions call the same search function
lib/newTab.jsfunction OpenSearchResult(searchQuery) { startSearch(searchQuery);}External destination for the search data
- bright-tab.com
Receives the install request that returns the server token and utm_uid, then receives new-tab search requests containing q, uid, the token parameter, and utm_uid.
What it can do
Permissions this extension asks for, as declared in version 1.7. 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 bright-tab.com
*://bright-tab.com/*
Store data in your browser
storage
See the address and title of every tab you have open
tabs
Where it sends data
Destinations our analysis observed Bright Tab 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.
- bright-tab.com
Bright Tab sends data to bright-tab.com. No other extension we have analyzed sends data here.
