Is Volume Booster – increase volume up to 600% safe?
Boosts browser audio volume up to 600% for louder playback.
This extension provides an audio amplifier and enhancer for browser sound. It is described as useful for streaming, gaming, and everyday browsing, with volume amplification up to 600%.
Who publishes itUmbrella - 3 other listings from the same operator, none carrying a finding
Umbrella - 3 other listings from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
3 other listings published from this account, 12k+ users between them, none of them carrying a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Remote Tasks Can Rewrite Headers and Cookies
The background worker accepts Mellowtel crawl instructions to rewrite session rules, stripping X-Frame-Options/CSP headers from sub-frames.
A jar object fetches cookies from an AWS Lambda URL, converting them into Cookie/Set-Cookie rules.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-506
- Source
- Dynamic sandbox
A remote Mellowtel crawl instruction tells the extension which page and options to use.
Those options can include whether to rewrite response headers and whether to expand a remote cookie jar.
The extension can change browser session rules before loading the target page.
The resulting rules remove selected response headers or add cookie headers for matching domains.
- Content-Type
- application/json
- Frame-control headersx-frame-options; content-security-policy; content-security-policy-report-only
These headers help protect you from pages being embedded in another site.
- Isolation policy headerscross-origin-embedder-policy; cross-origin-opener-policy; cross-origin-resource-policy
These headers help control how a page shares browser context with other pages.
- Cookie request headerCookie: session_id=abc123; Path=/; Domain=example.com (illustrative)
A matching request can be sent with a cookie value supplied by the remote jar.
- Cookie response headerSet-Cookie: session_id=abc123; Path=/; Domain=example.com (illustrative)
A matching response can receive a Set-Cookie value supplied by the remote jar.
- Remote jar lookupbcrew_two=jar-7f9c2d&node_id=8a6f1d34-2a52-4df0-9b2e-4a90e732f30b (illustrative)
The jar lookup can tie returned cookie instructions to your browser node.
The header-removal rule installed by the background service worker
Readable equivalent of rule 80045
background.jsfunction installHeaderRemovalRule(hostname, skipHeaderRewrite) { return new Promise((resolve) => { if (skipHeaderRewrite) { resolve(false); return; } const ruleId = 80045; canUseDeclarativeNetRequest().then((useMessageBridge) => { if (useMessageBridge) { sendToBackground({ intent: "disableXFrameHeaders", hostname, skipHeaders: skipHeaderRewrite, }).then(() => resolve(true)); return; } chrome.declarativeNetRequest.updateSessionRules({ removeRuleIds: [ruleId], addRules: [{ id: ruleId, priority: 1, action: { type: "modifyHeaders", responseHeaders: [ { header: "x-frame-options", operation: "remove" }, { header: "content-security-policy", operation: "remove" }, { header: "cross-origin-embedder-policy", operation: "remove" }, { header: "cross-origin-opener-policy", operation: "remove" }, { header: "cross-origin-resource-policy", operation: "remove" }, { header: "content-security-policy-report-only", operation: "remove" }, ], }, condition: { resourceTypes: ["sub_frame"], urlFilter: "*://*/*", }, }], }); resolve(true); }); });}The cookie-jar path that creates Cookie and Set-Cookie rules
Readable rule-id helper
background.jsfunction cookieRuleId(cookie) { const key = cookie.name + cookie.value + cookie.domain + cookie.path + (cookie.isWhisper ? "whisper" : "normal"); let hash = 0; for (let index = 0; index < key.length; index += 1) { hash = (hash << 5) - hash + key.charCodeAt(index); hash |= 0; } return 221022 + Math.abs(hash) % 1000000;}Readable cookie-rule creation path
background.jsasync function createJarRules(jarData) { return new Promise(async (resolve) => { if (!(await canUseDeclarativeNetRequest())) { const ruleIds = await sendToBackground({ intent: "createJar", jarData }); resolve(ruleIds); return; } const filterHttpOnly = Boolean(jarData.filterHttpOnly); const cookies = filterHttpOnly ? jarData.cookies.filter((cookie) => !cookie.httpOnly) : jarData.cookies; const rules = cookies.map((cookie) => { const resourceTypes = cookie.resourceTypes || ["sub_frame"]; const ruleId = cookieRuleId(cookie); let value = cookie.name + "=" + cookie.value + "; Path=" + cookie.path + "; Domain=" + cookie.domain; if (cookie.secure) value += "; Secure"; if (cookie.httpOnly) value += "; HttpOnly"; if (cookie.sameSite && cookie.sameSite !== "unspecified") { value += "; SameSite=" + cookie.sameSite; } else { if (cookie.optionalDefaultValue) value += "; " + cookie.optionalDefaultValue; if (cookie.secure) value += "; SameSite=None"; } if (!cookie.session && cookie.expirationDate) { value += "; Expires=" + new Date(1000 * cookie.expirationDate).toUTCString(); } return { id: ruleId, priority: 1, action: { type: chrome.declarativeNetRequest.RuleActionType.MODIFY_HEADERS, ...(cookie.isWhisper ? { requestHeaders: [{ header: "Cookie", operation: chrome.declarativeNetRequest.HeaderOperation.SET, value }] } : { responseHeaders: [{ header: "Set-Cookie", operation: chrome.declarativeNetRequest.HeaderOperation.APPEND, value }] }), }, condition: { urlFilter: "||" + cookie.domain, resourceTypes, }, }; }); const ruleIds = rules.map((rule) => rule.id); chrome.declarativeNetRequest.updateSessionRules({ removeRuleIds: ruleIds, addRules: rules }, () => { if (chrome.runtime.lastError) { resolve([]); } else { resolve(ruleIds); } }); });}Readable runtime request fields used by this path
background.jsfunction parseRuntimeCrawlRequest(request) { return { recordID: request.recordID, url: request.url, skipHeaders: request.hasOwnProperty("skipHeaders") && request.skipHeaders.toString().toLowerCase() === "true", methodEndpoint: request.hasOwnProperty("method_endpoint") ? request.method_endpoint : "", methodPayload: request.hasOwnProperty("method_payload") ? request.method_payload : "no_payload", methodHeaders: request.hasOwnProperty("method_headers") ? request.method_headers : "no_headers", bCrewObject: request.hasOwnProperty("bCrewObject") ? request.bCrewObject : "{}", burkeObject: request.hasOwnProperty("burkeObject") ? request.burkeObject : "{}", };}- ti6sritai2y2cqwc23byo7iobm0vfpsg.lambda-url.us-east-1.on.aws
Default jar-expansion endpoint used when a remote crawl instruction does not supply another endpoint; receives bcrew_two and node_id query parameters.
- ws.mellow.tel
Mellowtel websocket host initialized by the background module for runtime crawl instructions.
- api.mellow.tel
Mellowtel approval endpoint initialized by the same websocket module.
What it can do
Permissions this extension asks for, as declared in version 1.0.1. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on every site you visit
<all_urls>
Run hidden pages in the background
offscreen
Capture the video and audio of a tab
tabCapture
See the address and title of every tab you have open
tabs
Store data in your browser
storage
Block and redirect the requests your browser makes
declarativeNetRequest