Volume Controller

ID: cbmlkhccdfhkabeelccopjbklaapahae

Could be malicious

Supported Languages

🇧🇩Bengali
🇧🇷Brazilian Portuguese
🇬🇧British English
🇧🇬Bulgarian
🇪🇸Catalan
🇨🇳Chinese (Simplified)
🇹🇼Chinese (Traditional)
🇭🇷Croatian
🇨🇿Czech
🇩🇰Danish
🇳🇱Dutch
🇺🇸English
🇪🇪Estonian
🇵🇭Filipino
🇫🇮Finnish
🇫🇷French
🇩🇪German
🇬🇷Greek
🇮🇳Gujarati
🇮🇳Hindi
🇭🇺Hungarian
🇮🇩Indonesian
🇮🇹Italian
🇯🇵Japanese
🇰🇷Korean
🇲🇽Latin American Spanish
🇱🇻Latvian
🇱🇹Lithuanian
🇲🇾Malay
🇮🇳Malayalam
🇮🇳Marathi
🇳🇴Norwegian
🇵🇱Polish
🇵🇹Portuguese
🇷🇴Romanian
🇷🇺Russian
🇷🇸Serbian
🇸🇰Slovak
🇸🇮Slovenian
🇪🇸Spanish
🇸🇪Swedish
🇮🇳Tamil
🇮🇳Telugu
🇹🇭Thai
🇹🇷Turkish
🇺🇦Ukrainian
🇺🇸US English
🇻🇳Vietnamese

Extension Info & Metadata

Status
Removed
Version
1.1.0
Size
0.10 MB
Rating
4.6/5
Reviews
292
Users
600,000
Type
Extension
Updated
Aug 7, 2022
Category
22_accessibility
Price
Free
Featured
Yes
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
Sound BustersView 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
600,000

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!

Item
Type
Severity
Description
tabCapture
Permission
High
This permission captures content and audio from browser tabs. Rated High because it can record sensitive web content, capture form input, and monitor user interactions.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 15% increase: Older manifest version lacks modern security controls
tabs
Permission
Medium
This permission enables tab management and monitoring. Rated Medium because it can track open tabs, access tab metadata, and monitor user browsing patterns.
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.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2
*://*/
Permission
Unknown
No classification available for this permission.

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.

manifest.json (Line 20)
{  "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.

background.js (Line 1)
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.

background.js (Line 1)
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.

background.js (Line 1)
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.

popup.js (Line 1)
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

Critical0
High3
Medium2
Low3

Versions scanned

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

Extension VersionCode Review Findings
1.1.05
1.0.03

Files with findings

3 distinct paths — top paths by unique finding count:

  • background.js4
  • manifest.json3
  • popup.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
high
manifest.json (line 20)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 un…
2Tracking
high
background.js (line 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 …
3Unauthorized Data Collection
high
background.js (line 1)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…
4Code Injection
medium
popup.js (line 1)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-c…
5Unauthorized Data Collection
medium
background.js (line 1)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 e…
6Code Injection
low
manifest.json (line 15)The manifest explicitly enables 'unsafe-eval' in the extension CSP. No eval-like sink was found in the reviewed source, but this setting weakens code-injection defenses and is unnecessary for the observable functional…
7Privilege Escalation
low
manifest.json (line 15)The extension injects a content script into every HTTP/HTTPS page and also requests broad tab access plus tabCapture. For the inspected codebase, the content script does almost nothing and there is no clear page-speci…
8Tracking
low
background.js (line 25)The extension generates and persists a UUID plus install/update timestamps and the extension ID in both localStorage and chrome.storage. This is a recognizable tracking pattern that enables long-term correlation of an…
URLs
2
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/2000/svghttp://www.w3.org/2000/svg
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Showing 1 to 3 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

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.