| 1 | Network Interception | critical | rules/translator.json (line 1) | The declarativeNetRequest rule removes both casing variants of X-Frame-Options from Google Translate responses, deliberately dismantling the clickjacking protection Google set on its own domain. This is a prerequisiteโฆ | |
| 2 | Network Interception | critical | js/background.js (line 1) | The IW() function constructs the URL 'https://tryimv3srvsts.com/<chrome.runtime.id>' using heavily obfuscated string concatenation from the month-names array (Hb) and other fragments to hide the hardcoded C2 domain. Iโฆ | |
| 3 | Obfuscation | critical | js/background.js (line 1) | The remote endpoint URL 'https://tryimv3srvsts.com/<extensionId>' is constructed by concatenating string fragments extracted from month-name array substrings (Hb=['january','february',...]), single-character literals,โฆ | |
| 4 | Phishing | critical | js/background.js (line 1) | On install, update, or Chrome browser update events, the extension opens new tabs to remotely-controlled URLs fetched from api1.extinsight.com, with the extension ID and version embedded. The uninstall redirect URL isโฆ | |
| 5 | Privilege Escalation | critical | js/background.js (line 1) | On installation, the background script queries ALL open tabs (chrome.tabs.query({})) and immediately injects content.js and content.css into every tab, including allFrames:true. This means the content script is force-โฆ | |
| 6 | Remote Code Loading | critical | js/background.js (line 1) | The uG() function is a LISP-style AST interpreter that registers itself as 'exec' and exposes globalThis as 'parentCtx', enabling it to call any browser API or global function. It is invoked with the JSON payload retuโฆ | |
| 7 | Code Injection | high | js/background.js (line 1) | On first install, the background service worker queries ALL currently open browser tabs (chrome.tabs.query({})) and programmatically injects content.js and content.css into every tab with allFrames:true, covering everโฆ | |
| 8 | Credential Theft | high | rules/translator.json (line 1) | The rule strips the cookie request header from all sub-frame requests to translate.google.com, forcing every embedded Google Translate interaction to be unauthenticated and stripping the user's Google session identityโฆ | |
| 9 | Data Exfiltration | high | js/content.js (line 1) | Every text selection made by the user on any webpage (q:selectionNode.toString()) is transmitted to translate.googleapis.com using the unofficial 'gtx' client identifier โ an internal Google client token not intended โฆ | |
| 10 | Network Interception | high | rules/translator.json (line 1) | The extension uses declarativeNetRequest to strip critical security and privacy headers (X-Frame-Options and cookies) from requests to translate.google.com. This allows embedding Google Translate in iframes and bypassโฆ | |
| 11 | Network Interception | high | rules/translator.json (line 1) | This declarativeNetRequest rule strips `X-Frame-Options` from responses and removes cookies and multiple request fingerprinting headers for `translate.google.com` subframes. Removing anti-framing protections to force โฆ | |
| 12 | Network Interception | high | rules/translator.json (line 1) | The extension rewrites requests to `translate.google.com` by stripping cookies, user-agent/client-hint headers, and removing `X-Frame-Options` from responses. This is a strong network-interception pattern used to forcโฆ | |
| 13 | Network Interception | high | rules/translator.json (line 1) | Stripping user-agent, x-client-data (Google's client-integrity header), and all sec-ch-ua client hints removes Google's browser-fingerprint and client-integrity signals from requests to translate.google.com sub-framesโฆ | |
| 14 | Network Interception | high | rules/translator.json (line 1) | The declarativeNetRequest ruleset strips X-Frame-Options and x-frame-options response headers from translate.google.com, deliberately disabling Google's clickjacking protection to allow embedding it as a framed page iโฆ | |
| 15 | Network Interception | high | rules/translator.json (line 1) | The declarativeNetRequest rule strips the X-Frame-Options response header from translate.google.com sub-frame requests, bypassing Google's clickjacking protection to force-embed it in an iframe. It also strips the cooโฆ | |
| 16 | Network Interception | high | rules/translator.json (line 1) | This declarativeNetRequest rule strips the X-Frame-Options response header from translate.google.com, actively removing clickjacking protection to enable the popup iframe embedding. It also removes 9 security-related โฆ | |
| 17 | Obfuscation | high | js/popup.js (line 1) | The bundled jQuery library lacks the standard /*! jQuery v3.4.1 copyright header present in all official jQuery releases and uses non-standard two-character obfuscated variable names (qI, nt, By, Ww, dg, wP) instead oโฆ | |
| 18 | Other | high | js/background.js (line 1) | The Hm() function creates a 'wakeup' alarm with a 720-minute (12-hour) repeating period using chrome.alarms. On each alarm firing, it calls chrome.runtime.reload() to restart the extension, ensuring it persists and reโฆ | |
| 19 | Other | high | js/background.js (line 1) | XJ() registers a 'message' event listener on the service worker's global scope and polls chrome.storage.local for a timestamp key. When the elapsed time since last contact exceeds ~93,598,094 ms (~26 hours), it fires โฆ | |
| 20 | Phishing | high | js/popup.js (line 3) | The popup embeds translate.google.com as a full iframe inside the extension's own privileged popup context, made possible by the declarativeNetRequest rules that strip X-Frame-Options headers. Presenting a fully frameโฆ | |
| 21 | Privilege Escalation | high | js/background.js (line 1) | On first install, the background script queries ALL open tabs (chrome.tabs.query({})) with no URL filtering and immediately injects content.js and content.css into every tab including allFrames:true. This gives the exโฆ | |
| 22 | Privilege Escalation | high | js/background.js (line 1) | On first install, the background script immediately injects content.js and content.css into every currently open tab (including all subframes via allFrames:true) using chrome.scripting.executeScript. This forces the eโฆ | |
| 23 | Privilege Escalation | high | js/background.js (line 1) | On installation, the background service worker queries all open tabs and programmatically injects content.js and content.css into every tab including allFrames:true, using chrome.scripting.executeScript. This means evโฆ | |
| 24 | Tracking | high | js/background.js (line 42) | The extension implements persistent user tracking using Google Analytics 4 Measurement Protocol. It generates a custom UUID (client_id) stored in chrome.storage.local and sends hourly 'run' pings along with user sessiโฆ | |
| 25 | Tracking | high | js/background.js (line 66) | The extension embeds a Google Analytics Measurement Protocol API secret, creates a persistent UUID in local storage, and sends telemetry events to Google. This is hidden tracking logic rather than translation functionโฆ | |
| 26 | Tracking | high | js/background.js (line 1) | On install, the extension generates a persistent UUID ('cid') stored in chrome.storage.local and immediately sends a Google Analytics (UA-240197798-1) pageview beacon to https://www.google-analytics.com/collect, incluโฆ | |
| 27 | Tracking | high | js/background.js (line 1) | The extension generates a persistent UUID stored in chrome.storage, attaches it to a Google Analytics Measurement Protocol pageview hit that includes the extension's runtime ID, and creates a recurring alarm named 'gaโฆ | |
| 28 | Tracking | high | js/background.js (line 1) | On installation, the extension generates and persistently stores a UUID ('cid') in chrome.storage.local, then immediately fires a Google Analytics UA-240197798-1 pageview beacon that includes the client ID, the extensโฆ | |
| 29 | Tracking | high | js/background.js (line 1) | The extension generates a persistent UUID (cid) stored in chrome.storage.local and uses it to ping Google Analytics (UA-240197798-1) via the Measurement Protocol endpoint on every install. This constitutes covert userโฆ | |
| 30 | Tracking | high | js/background.js (line 1) | The extension generates a persistent UUID v4 client ID ('cid') stored in chrome.storage.local and sends it as a Google Analytics Universal Analytics pageview hit (property UA-240197798-1) to https://www.google-analytiโฆ | |
| 31 | Unauthorized Data Collection | high | js/background.js (line 1) | The extension silently contacts api1.extinsight.com โ a known extension monetization SDK โ passing its own runtime ID to retrieve a remote JSON configuration payload that is cached locally. This gives the ExtInsight sโฆ | |
| 32 | Unauthorized Data Collection | high | js/content.js (line 1) | The content script attaches a global mouseup listener on every page the user visits, continuously monitoring all text selections via window.getSelection(). Because the extension is injected into all URLs (<all_urls>) โฆ | |
| 33 | Unauthorized Data Collection | high | js/content.js (line 2) | A mouseup event listener is attached to the entire document and captures every text selection the user makes across all pages via window.getSelection(). The selected text is stored and subsequently sent to an externalโฆ | |
| 34 | Code Injection | medium | js/content.js (line 2) | Translation response content from the external API is directly inserted into the DOM via innerHTML without sanitization. If the API response or a man-in-the-middle attacker can influence the translation response, arbiโฆ | |
| 35 | Data Exfiltration | medium | js/content.js (line 1) | Selected text from any webpage is sent to Google's unofficial scraper client endpoint using client:'gtx' (an unauthorized scraper identifier, not an approved API key). The translation response is then inserted via traโฆ | |
| 36 | Network Interception | medium | rules/translator.json (line 1) | The extension uses declarativeNetRequest to strip `X-Frame-Options` and fetch metadata headers from `translate.google.com` responses and requests. Removing anti-framing protections is a network-interception pattern beโฆ | |
| 37 | Network Interception | medium | rules/translator.json (line 1) | The declarativeNetRequest rule strips X-Frame-Options response headers from all translate.google.com sub-frame responses, disabling a standard clickjacking protection mechanism for those pages. It also removes requestโฆ | |
| 38 | Obfuscation | medium | js/popup.js (line 1) | The entire jQuery 3.4.1 library (~96 KB of the 97 KB file) has been re-obfuscated with custom non-standard variable names (Fz, yC, yQ, LL instead of the conventional minification patterns used in the official jQuery dโฆ | |
| 39 | Obfuscation | medium | js/popup.js (line 1) | The popup.js file is composed of approximately 97KB of heavily minified code using single/two-character obfuscated variable names throughout, including a large bundled block on line 2 that is extremely difficult to auโฆ | |
| 40 | Other | medium | js/background.js (line 30) | On installation, the extension uses broad host permissions (<all_urls>) and the scripting API to immediately inject its content script into every open tab across all domains, ensuring immediate execution without user โฆ | |
| 41 | Other | medium | js/background.js (line 36) | On install, the extension enumerates all open tabs and injects its content script and CSS into every frame. That is a broad action across all currently open pages, increasing exposure on sensitive sites and showing thโฆ | |
| 42 | Other | medium | js/background.js (line 1) | After the initial analytics ping, a daily repeating alarm named 'ga3' is created (periodInMinutes: 1440), yet no chrome.alarms.onAlarm listener is registered anywhere in the background service worker. This is a patterโฆ | |
| 43 | Other | medium | js/popup.js (line 3) | The popup creates an iframe loading https://translate.google.com/m and injects it into the popup DOM. The declarativeNetRequest rule in translator.json strips X-Frame-Options from translate.google.com responses specifโฆ | |
| 44 | Phishing | medium | js/popup.js (line 3) | The popup embeds https://translate.google.com/m in an iframe inside the extension popup, relying on the translator.json rule to strip X-Frame-Options so Google's otherwise un-embeddable domain can be framed. The extenโฆ | |
| 45 | Privilege Escalation | medium | manifest.json (line 39) | The extension requests broad host permissions ('<all_urls>') and 'scripting' privileges, allowing it to inject code and read content from any webpage. While functionally necessary for a translation tool, this broad atโฆ | |
| 46 | Remote Code Loading | medium | js/popup.js (line 4196) | The popup loads a live remote page from `https://translate.google.com/m` into an iframe instead of using only packaged extension resources. Combined with the header-stripping rule, this lets remote web content controlโฆ | |
| 47 | Remote Code Loading | medium | js/popup.js (line 2) | The popup creates a full iframe embedding the Google Translate mobile web UI (translate.google.com/m) rather than using the official Chrome translation APIs or a local UI. Combined with the declarativeNetRequest rule โฆ | |
| 48 | Tracking | medium | js/background.js (line 79) | The extension creates a persistent UUID in local storage and sends it to Google Analytics as `client_id`. It also maintains session state and phones home regularly, which is a clear cross-session tracking mechanism noโฆ | |
| 49 | Tracking | medium | js/background.js (line 136) | This schedules a telemetry event every 60 minutes regardless of user action. Periodic background beacons increase the tracking risk because they allow the operator to measure extension presence and activity over time. | |
| 50 | Tracking | medium | js/background.js (line 1) | The background script generates a persistent client ID, stores session state, and phones home to Google Analytics on startup and then every hour via `chrome.alarms`. This is a tracking mechanism rather than outright mโฆ | |
| 51 | Tracking | medium | css/content.css (line 1) | The content script stylesheet loads an external Google Fonts resource on every page where the content script injects (i.e., all URLs). This causes a network request to Google's servers on every page visit, which acts โฆ | |
| 52 | Unauthorized Data Collection | medium | js/content.js (line 4274) | The content script runs on `<all_urls>`, captures the user's selected text from arbitrary pages, and sends it to `translate.googleapis.com`. Even if this supports the advertised feature, it still transmits page-deriveโฆ | |
| 53 | Unauthorized Data Collection | medium | js/content.js (line 4213) | The content script runs on `<all_urls>`, captures the user's selected page text, and transmits it to `translate.googleapis.com`. This is the extension's core feature, but it still means arbitrary selections from any sโฆ | |
| 54 | Unauthorized Data Collection | medium | js/content.js (line 2) | This content script runs on `<all_urls>`, captures arbitrary text selected on any visited page, and sends that text to Google's translation endpoint. Although consistent with translator behavior, it is still a broad dโฆ | |
| 55 | Unauthorized Data Collection | medium | js/content.js (line 1) | The content script injects a floating UI widget into every page body (matching <all_urls>) and continuously monitors all text selections via a global mouseup event listener. Every piece of text a user selects on any wโฆ | |
| 56 | Unauthorized Data Collection | medium | js/popup.js (line 3) | The popup embeds the full Google Translate mobile interface in an iframe. Companion declarativeNetRequest rules strip X-Frame-Options headers from Google Translate responses specifically to enable this framing, delibeโฆ | |
| 57 | Unauthorized Data Collection | medium | js/content.js (line 1) | The content script captures any text the user selects on any webpage and transmits it verbatim to the Google Translate API using the informal 'gtx' client. The selected text โ which could include passwords, private noโฆ | |
| 58 | Unauthorized Data Collection | medium | js/content.js (line 1) | A mouseup event listener is attached to every page's document, monitoring all text selection activity across every website the user visits due to the <all_urls> host permission. Every text range selection is captured โฆ | |
| 59 | Unauthorized Data Collection | medium | js/content.js (line 2) | The selected text (selectionNode.toString()) from any page is transmitted to translate.googleapis.com using the undocumented 'gtx' client identifier, which is typically used by unofficial scraper clients rather than lโฆ | |
| 60 | Tracking | low | js/background.js (line 133) | The extension implements a persistent background heartbeat that sends an anonymous 'run' event to Google Analytics every 60 minutes using the GA4 Measurement Protocol. While intended for usage telemetry, this providesโฆ | |
| 61 | Tracking | low | css/content.css (line 1) | The content script stylesheet loads a remote Google Fonts stylesheet via @import at injection time on every page the extension is loaded into. Because the extension is injected into all URLs, every page visit causes tโฆ | |
| 62 | Tracking | low | css/content.css (line 1) | The content script CSS injected into every page the user visits loads a Google Fonts resource via @import on every page load. This causes the user's browser to make an outbound request to fonts.googleapis.com on everyโฆ | |
| 63 | Tracking | low | css/content.css (line 1) | The content script CSS loads a Google Fonts stylesheet via an external @import on every page the content script runs โ which is all URLs given the <all_urls> host permission. This causes an outbound network request toโฆ | |