Security Alert: Confirmed Malware
Volume Controller
ID: cbmlkhccdfhkabeelccopjbklaapahae
Supported Languages
Extension Info & Metadata
Publisher Contextual Analysis
- Author
- Sound BustersView Profile
- MX records exist
- Yes
- Domain exists
- Yes
- Is disposable
- No
- Is role-based
- No
- Mailbox exists
- Yes
Control audio volume in your browser. Set individual volume level for tabs with audio. Get your audio rocking by our volume booster.
Volume Controller extension helps you to set a desired speaker volume level for each individual tab in your browser. Websites are just bursting with media content such as videos, music, streams, audio and video ads. To take control over all that audio you need a power volume adjust tool with the ability to set individual volume settings for each tab. To solve that task we developed our audio volume control extension. We made as simple and lite interface of our audio volume control switch as it just possible with keeping all of its power in a light design. A light and stylish window with a volume switch with a list of tabs that a currently playing audio content. You can separately change volume for each individual tab, so you will never get that sound mix that we all hate and control audio volume to your desire. It’s not just a volume switch, it works also as a volume booster. You can raise audio volume control switch to a 600% setting. This will just blast volume on those quiet videos! Try our volume app. You will love how simple and powerful it is. Use it on your favorite websites that are filled to the max with audio and video content, such as: Twitter™, Vimeo™, YouTube™, Facebook™, Spotify™ and others! Our sound volume control changer extension also remembers your previous settings for your convenience. Try it and you will love Volume Controller!
The manifest explicitly enables 'unsafe-eval' in the Content Security Policy, allowing dynamic code execution via eval(), new Function(), and similar constructs. This weakens the extension's security sandbox and is unnecessary for a volume controller. It directly contradicts the ML pipeline's permission-analysis flag and suggests the extension may execute dynamically generated or remotely sourced code strings.
{ "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"}On installation, the extension silently generates a persistent UUID (stored as 'uid'), records the extension's own ID ('extId'), and timestamps the install date ('dateinstall') — all persisted to both localStorage and chrome.storage.local. On update, a 'dateupdate' timestamp and status flag are also stored. This creates a persistent user-tracking profile with no disclosed purpose for a volume controller extension, and the data could be read by any future code running in the extension's background context.
chrome.runtime.onInstalled.addListener(function(a) { "install" == a.reason ? (chrome.storage.local.set({ uid: Core.getUserID(), extId: chrome.runtime.id, dateinstall: new Date().getTime(), status: 0 }), Core.getUserID(), Core.save("extId", chrome.runtime.id), Core.save("dateinstall", new Date().getTime()), Core.save("status", 0)) : "update" == a.reason && (Core.getUserID(), Core.save("dateupdate", new Date), Core.save("status", 1), chrome.storage.local.set({ dateupdate: new Date().getTime(), status: 1 }))})The Core.getUserID() method generates a cryptographically random UUID v4 and persists it permanently in localStorage under the key 'UID'. This creates a stable, cross-session identifier that uniquely fingerprints the user's browser installation. While not immediately exfiltrated in the visible code, this identifier (along with extId and install date) forms a complete telemetry profile ready for transmission — a pattern commonly seen in adware/spyware that defers exfiltration to a later update.
static getUserID() { var a = Core.load("UID"); if (a) return a; var b = new Uint32Array(4), d = -1; return window.crypto.getRandomValues(b), a = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(a) { d++; var c = 15 & b[d >> 3] >> 4 * (d % 8), e = "x" == a ? c : 8 | 3 & c; return e.toString(16) }), Core.save("UID", a), a}The extension uses the tabCapture API to capture the full audio stream of any tab. While volume control legitimately requires audio capture, the tabCapture permission grants access to a live MediaStream of the tab's entire audio output, which could be recorded or transmitted. Combined with the persistent user UID and unsafe-eval CSP, this represents a high-capability surveillance primitive that could be weaponized in a future update without additional permission grants.
chrome.tabCapture.capture({ audio: !0, video: !1}, a => { chrome.runtime.lastError || (b(d.tabId, a), c(d.tabId, d.sliderValue), background.updateBadge(d.tabId, d.sliderValue))})The localizeHtmlPage() function iterates every HTML element on the page and directly assigns to innerHTML using i18n message values, and also replaces the entire document's innerHTML. Assigning untrusted or attacker-controlled strings to innerHTML can enable XSS-style code injection within the extension popup. While locale files are bundled, the unsafe-eval CSP and this innerHTML pattern together create a pathway for injected script execution if i18n messages are ever tampered with or if the extension is compromised.
function replace_i18n(a, b) { var c = b.replace(/__MSG_(\w+)__/g, function(a, b) { return b ? chrome.i18n.getMessage(b) : "" }); c != b && (a.innerHTML = c)}function localizeHtmlPage() { var a = document.querySelectorAll("[data-i18n]"); for (var b in a) if (a.hasOwnProperty(b)) { var c = a[b], d = c.getAttribute("data-i18n").toString(); replace_i18n(c, d) } for (var e = document.getElementsByTagName("html"), f = 0; f < e.length; f++) { var c = e[f], d = c.innerHTML.toString(); replace_i18n(c, d) }}localizeHtmlPage();By severity
Versions scanned
Showing 2 of 3 scanned versions with more than one unique finding. Counts are unique findings that include each version.
| Extension Version | Code Review Findings |
|---|---|
| 1.1.0 | 5 |
| 1.0.0 | 3 |
Files with findings
3 distinct paths — top paths by unique finding count:
- background.js4
- manifest.json3
- popup.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.
Code Diff
Compare extension code between any two versions.
No comparable text files found between these versions.
Browse and explore files within this extension package
Gain full insight into all external connections.
Upgrade for full visibility.