Suspicious 80% firefox 1 installs Download

Multi-Account Container Helper 1.4.0

Excessive permissions, new package

“Import proxy lists, automate creation of containers, and manage Firefox Multi Account Containers with direct proxy routing.”

Extension can proxy all browser trafficArchive contains Mozilla COSE digest manifest

Evidence

Extension declares proxy authority manifest.json · lines 1–23
1{
2 "manifest_version": 2,
3 "name": "Multi-Account Container Helper",
4 "version": "1.4.0",
5 "description": "Creates and manages Firefox Multi-Account Containers.",
6 "icons": {
7 "48": "icon48.png",
8 "96": "icon96.png"
9 },
10 "permissions": [
11 "contextualIdentities",
12 "cookies",
13 "proxy",
14 "storage",
9 lines
Uses browser.* namespace core APIs import.js · lines 4–17
4:55roxies");
5
6function setStatus(message, state = "") {
7 status.textContent = message;
8 status.dataset.state = state;
9}
10
11async function restoreState() {
12 const stored = await browser.storage.local.get(["pendingProxyFileName", "popupState"]);
13 if (stored.popupState && stored.popupState.proxyType) {
14 proxyType.value = stored.popupState.proxyType;
15 }
16 if (stored.pendingProxyFileName) {
17 setStatus(`Previ
Registers browser click event listener import.js · lines 17–25
17:93lace it.`);
18 }
19}
20
21if (extensionConfig.proxiesEnabled) {
22 importButton.addEventListener("click", async () => {
23 const file = fileInput.files[0];
24 if (!file) {
25 setStatus("Choose a proxy CSV file first.", "er
Reads DOM text content popup.js · lines 54–57
54:33er.storage.local.get("pendingProxyFileName");
55 proxyFileStatus.textContent = proxyState.pendingProxyFileName
56 ? `Ready to assign: ${proxyState.pendingProxyFileName}`
57 : "No proxy CSV imported.";
SOCKS5 protocol reference popup.js · lines 211–232
211:38& result.tested > 1
212 ? "WARNING: every proxy reported the same exit IP. Firefox may be reusing one authenticated " +
213 "connection across containers because they share the same proxy host and port. Try SOCKS5 " +
214 "if your provider supports it, or ask for a distinct host/port per session.\n"
215 : "") +
216 result.results
217 .map(row =>
218 `${row.group} (${row.host}:${row.port}): ${row.ok ? `OK - ${row.reportedIp || "IP not read"}` : `FAILED - ${row.reason}`}`
219 )
220 .join("\n"),
221 },
222];
223
224function createActionStatus(button) {
225 const card = button.closest(".card");
226 let message = card.querySelector(".action-status");
227 if (!message) {
228 message = document.createElement("div");
229 message.className = "action-status";
230 message.setAttribute("role", "status");
231 message.setAttribute("aria-live", "polite");
232 message.id = `${card.querySelector("h2").id}-status`;

Showing the top 5 files — 2 more files (23 regions) not shown.

No evidence locations were recorded for this file. Raw result

Keyboard shortcuts on this page: j for the next sample, k for the previous one, x to go back to the feed, d to download the original bytes, r to re-queue the sample for analysis.