Security Alert: Confirmed Malware
TZWebChartWindow
ID: nmdhbmdklokcmpmcegmbfehjencmbeab
Supported Languages
Extension Info & Metadata
Publisher Contextual Analysis
- Author
- http://www.tradezone.com.brView Profile
- MX records exist
- Yes
- Domain exists
- Yes
- Is disposable
- No
- Is role-based
- No
- Mailbox exists
- Yes
TZWebChart Chrome Extension
Possibilita o uso do Tradezone WebChart para clientes que usam o Google Chrome. Através de uma aplicação Out of Browser, instalada a partir do site do Tradezone - IT Evolution. Ao se instalar a extensão e navegar para o site do web chart tradezone, a partir da corretora, um passo a passo guiará o usuário. Video demonstrando o processo:https://www.youtube.com/watch?v=1PMXQg_iKwo Enables Tradezone WebChart to be used for customers using Google Chrome. Through an Out of Browser application, installed from the Tradezone - IT Evolution website. By installing the extension and navigating to the web site tradezone chart, from the brokerage, a step by step guide will guide the user. Video demonstrating the process:https://www.youtube.com/watch?v=1PMXQg_iKwo
Every URL visited on any of the six monitored tradezone.com.br subdomains is serialised and forwarded verbatim to a native host application ('com.tradezone.tzwebchartwindow') via sendNativeMessage. Native messaging bypasses all browser sandboxing, giving the host process unrestricted OS-level access to whatever data the extension passes — in this case the full navigation URL. This constitutes covert exfiltration of browsing activity to a locally-installed native binary whose behaviour cannot be inspected from the extension.
function loaded(o) { console.log('loaded'); var ur = o.url.toString(); tid = o.tabId; var hostName = "com.tradezone.tzwebchartwindow"; message = { "text": ur }; chrome.runtime.sendNativeMessage(hostName, message, function(response) { if (chrome.runtime.lastError) { if (chrome.runtime.lastError.message.indexOf('not found') > -1) { instExtApp = "http://tzwebchartchrome.tradezone.com.br/publish.htm"; window.open(instExtApp, '_blank'); chrome.tabs.remove(tid); } else console.log("ERROR: " + chrome.runtime.lastError.message); } else { console.log("Messaging host sais: ", response); chrome.tabs.remove(tid); } });When the native host is absent the extension silently redirects the user to a plain HTTP (not HTTPS) URL — http://tzwebchartchrome.tradezone.com.br/publish.htm — in a new tab and then closes the original tab without user consent. Serving an install page over HTTP exposes the install flow to man-in-the-middle attacks. Forcibly closing tabs (chrome.tabs.remove) after the redirect further removes the user's ability to inspect or cancel what just happened.
chrome.runtime.sendNativeMessage(hostName, message, function(response) { if (chrome.runtime.lastError) { if (chrome.runtime.lastError.message.indexOf('not found') > -1) { instExtApp = "http://tzwebchartchrome.tradezone.com.br/publish.htm"; window.open(instExtApp, '_blank'); chrome.tabs.remove(tid); } } else { chrome.tabs.remove(tid); }});The extension intercepts completed navigation events on six financial-services subdomains (all under tradezone.com.br, which appears to be a Brazilian online brokerage / trading platform). Targeting multiple financial subdomains — including subdomains named after Brazilian brokers such as 'rico', 'easynvest', and 'xpi' — with automatic URL capture and native-message forwarding strongly indicates the purpose is to monitor users' trading activity or sessions on these financial sites.
chrome.webNavigation.onCompleted.addListener(loaded, { url: [{ hostContains: 'tav.tradezone.com.br' }, { hostContains: 'rico.tradezone.com.br' }, { hostContains: 'clear.tradezone.com.br' }, { hostContains: 'xpi.tradezone.com.br' }, { hostContains: 'easynvest.tradezone.com.br' }, { hostContains: 'webchart.tradezone.com.br' } ]});The variable 'message' is assigned without a preceding 'var', 'let', or 'const' declaration, making it an implicit global. While not inherently malicious, this is a code-quality red flag common in quickly-written or obfuscated code, and the implicit global could be read or overwritten by other scripts running in the extension context.
var hostName = "com.tradezone.tzwebchartwindow";message = { "text": ur};chrome.runtime.sendNativeMessage(hostName, message, function(response) {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 |
|---|---|
| 1.5 | 4 |
Files with findings
1 distinct path — top paths by unique finding count:
- main.js4
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.