Audio Equalizer

ID: aemjbieioebobglekneinkpijacjiohn

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.0.7
Size
0.25 MB
Rating
4.7/5
Reviews
1,175
Users
224,484
Type
Extension
Updated
Nov 25, 2020
Category
22_accessibility
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
DevAppView 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
224,484

Audio Equalizer with the function of bass booster and with the settings of musical genres. Make the sound better!

Powerful and easy to use, classic audio equalizer with presets of music genres and Bass Booster function. Audio Equalizer allows improving the sound quality of your Chrome browser to get more pleasure from listening to music and watching videos. Extension includes: - Equalizer for 10 bands; - Audio Volume Control - to set the desired volume level; - Volume Booster - a significant increase in volume from the standard sound power; - Bass Booster preset - sound effect to enhance the bass sound; - Preset Vocal Booster - amplification of high frequencies of the sound; Audio equalizer will help you adjust the levels of sound effects, with which you can make the most of your speakers and headphones. Try to use this equalizer and get pleasure from its use. Get maximum pleasure from listening to music and watching videos online, using Audio Equalizer!

Item
Type
Severity
Description
<all_urls>
Permission
Critical
This permission grants access to all websites without restriction. Rated High because it can access any web content, monitor all web activity, and potentially steal sensitive data across all sites.
*://*/*
Permission
Critical
This permission grants access to all websites without restriction. Rated High because it can access any web content, monitor all web activity, and potentially steal sensitive data across all sites.
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
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

A message handler responds to an externally-triggerable 'getUid' method by returning the user's persistent unique identifier. Critically, it also increments a usage counter and, after 100 invocations, sets a 'valid' flag to 1 — a classic time-bomb anti-detection pattern that delays activation of suspicious behavior past sandbox/review thresholds. The 'getUid' method is never sent by any visible internal code in the extension, indicating it is intended to be triggered by an external party (e.g., a remote script or injected page) to harvest the persistent user UID and eventually unlock a dormant payload via the 'valid' flag.

js/background.js (Line 460)
chrome.runtime.onMessage.addListener(function(obj, sender, sendResponse) {      if (obj.method && obj.method == "getUid") {        if (Core.load("count")) {          let co = Core.load("count");          let count = parseInt(co);          count++;          Core.save('count', count);          if (count > 100) {            Core.save('valid', 1)          }        } else {          Core.save('count', 1);        }        return sendResponse({          uid: Core.load('uid')        });      }

The manifest explicitly weakens the default Content Security Policy by including 'unsafe-eval', allowing the extension to execute dynamically-generated code via eval(), new Function(), setTimeout(string), etc. A legitimate audio equalizer has no need for eval()-based code execution. This deliberate CSP weakening is a common precaution taken by malicious extensions to ensure their dynamic payload injection works even if other defenses are in place.

manifest.json (Line 15)
{  "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"}

When the popup is opened and no audio stream is currently active, the extension automatically initiates tab audio capture (via 'powerOn') without any explicit user interaction — no button press required. Combined with the broad '<all_urls>' and '*://*/*' permissions plus 'tabCapture', this means every popup open silently starts capturing audio from the active tab (including banking, corporate, or sensitive sites). This auto-capture behavior is undisclosed to the user and constitutes covert audio surveillance.

popup.js (Line 1037)
chrome.tabs.query({  active: true,  currentWindow: true}, function(a) {  if (Core.load('power') == true) {    // ... existing stream handling ...  } else {    chrome.runtime.getBackgroundPage(function(bg) {      if ("undefined" === typeof bg.currentTab.stream) {        Core.save('id', a[0].id);        Core.sendMessage("powerOn", a[0]);        Power.visualOn(a[0])      }    })  }});

On installation, the extension silently generates and persists a unique user ID (via getUserID() which creates a UUID) alongside the install timestamp in chrome.storage.local. On updates, it also records the update timestamp. This fingerprinting infrastructure is the foundation for the covert user tracking system exposed by the 'getUid' message handler, enabling long-term identification of individual users across sessions.

js/background.js (Line 665)
chrome.runtime.onInstalled.addListener(function(details) {  if (details.reason == "install") {    Core.save('tabEqualizer', true);    chrome.storage.local.set({      userId: Core.getUserID(),      dateInstalled: (new Date()).getTime(),      tabEqualizer: true,      mono: false,      instance: false,      power: false,      pitch: false,      info: true,      tabLimiter: false,      convolverBypass: true,    });  } else if (details.reason == "update") {    chrome.storage.local.set({      dateUpdate: (new Date()).getTime()    })  }});

The extension generates a cryptographically random UUID and stores it persistently in localStorage as 'uid'. This persistent identifier is then saved to chrome.storage.local as 'userId' at install time and is returned to external callers via the 'getUid' message handler. The UID survives browser restarts and extension updates, functioning as a permanent user fingerprint for covert cross-session tracking.

js/core.js (Line 21)
getUserID() {  let uid = this.load('uid');  if (uid) {    return uid;  } else {    let buf = new Uint32Array(4),      idx = -1;    window.crypto.getRandomValues(buf);    uid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {      idx++;      let r = (buf[idx >> 3] >> ((idx % 8) * 4)) & 15,        v = c == 'x' ? r : (r & 0x3 | 0x8);      return v.toString(16);    }.bind(this));    this.save('uid', uid);    return uid;  }}

By severity

Critical1
High3
Medium4
Low0

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.0.83
1.0.75

Files with findings

4 distinct paths — top paths by unique finding count:

  • js/background.js3
  • manifest.json2
  • popup.js2
  • js/core.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Tracking
critical
js/background.js (line 460)A message handler responds to an externally-triggerable 'getUid' method by returning the user's persistent unique identifier. Critically, it also increments a usage counter and, after 100 invocations, sets a 'valid' f…
2Code Injection
high
popup.js (line 1124)The extension writes the current tab title directly into the privileged popup DOM with `html()`. Because page titles are attacker-controlled, a malicious site could supply HTML markup and potentially trigger DOM-based…
3Code Injection
high
manifest.json (line 15)The manifest explicitly weakens the default Content Security Policy by including 'unsafe-eval', allowing the extension to execute dynamically-generated code via eval(), new Function(), setTimeout(string), etc. A legit…
4Unauthorized Data Collection
high
popup.js (line 1037)When the popup is opened and no audio stream is currently active, the extension automatically initiates tab audio capture (via 'powerOn') without any explicit user interaction — no button press required. Combined with…
5Code Injection
medium
manifest.json (line 1)The manifest explicitly enables `'unsafe-eval'` in the extension CSP, which weakens one of Chrome's main defenses against injected script execution. No direct `eval()` call was found in the first-party code reviewed, …
6Tracking
medium
js/background.js (line 488)The background page exposes a persistent `uid` over runtime messages and keeps request counters (`count`, `valid`) around that identifier. Elsewhere in the extension, this `uid` is generated once and stored persistent…
7Unauthorized Data Collection
medium
js/background.js (line 665)On installation, the extension silently generates and persists a unique user ID (via getUserID() which creates a UUID) alongside the install timestamp in chrome.storage.local. On updates, it also records the update ti…
8Unauthorized Data Collection
medium
js/core.js (line 21)The extension generates a cryptographically random UUID and stores it persistently in localStorage as 'uid'. This persistent identifier is then saved to chrome.storage.local as 'userId' at install time and is returned…
URLs
61
IPv4
2
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/Graphics/SVG/1.1/DTD/svg11.dtdhttp://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd
www.w3.org/2000/svghttp://www.w3.org/2000/svg
chrome.google.com/webstore/detail/audio-equalizer/aemjbieioebobglekneinkpijacjiohnhttps://chrome.google.com/webstore/detail/audio-equalizer/aemjbieioebobglekneinkpijacjiohn
jquery.com-https://jquery.com/
sizzlejs.com-https://sizzlejs.com/
jquery.org/licensehttps://jquery.org/license
github.com/eslint/eslint/issues/6125https://github.com/eslint/eslint/issues/6125
jquery.org/licensehttp://jquery.org/license
jsperf.com/thor-indexof-vs-for/5https://jsperf.com/thor-indexof-vs-for/5
www.w3.org/TR/css3-selectors/http://www.w3.org/TR/css3-selectors/#whitespace
Showing 1 to 10 of 70 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

2.3.3.3
IPv4
-
2.3.3.1
IPv4
-
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.