Build1 distinct publisher3 min readPublished
An extension allowlist pins an ID, and the ID survives a sale. The operators behind Superior bought or seeded trust that users had already granted, then spent it in an automatic update that stripped page CSP on the way through.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
The loader lives in the background service worker. On the first run after the update it generates an installation UUID and opens a WebSocket to the command and control server [4]. The JavaScript modules that come back are stored in `chrome.storage.local`, encrypted with AES-GCM under a key derived from the extension ID and that installation UUID [5]. That key derivation has a practical consequence for anyone hunting: the stored bytes differ per install, so a hash of module content is not a portable indicator, and the module only exists on machines the C2 chose to answer [18].
The privilege step is a documented API call. The extension registers dynamic `declarativeNetRequest` rules that strip `Content-Security-Policy` response headers from pages the user browses [6]. A content script then sets the malicious code as an event handler on a hidden DOM element, fires the event, and gets execution in the page's main world rather than the extension's isolated world [7]. The two steps compose in one direction: the header strip removes the page-side policy that would otherwise have something to say about injected script running in that main world [19].
An allowlist admits extension IDs. The ID is stable across a sale, the change of ownership is not explicitly notified to users, and the browser updates to the new version automatically, often with no install prompt and no warning [3]. So the control that decides which extensions may run holds no opinion about who now writes them. An allowlist that pins IDs is an excellent defence against the previous owner.
The writeup's recommended controls are ID blocking plus removal of unnecessary high-privilege extensions, an enterprise allowlist with continuous monitoring of ownership and permission changes, network blocks on the listed C2 and exfiltration destinations, user education against ClickFix, and EDR [15]. Rank them by half-life. The domain blocks decay fastest, since the traffic goes to C2 servers or Cloudflare Workers on `.top`, `.pro` and `.sbs` names [12] and fresh names are cheap. The permission diff is the one that lasts, because it fires on the version bump itself instead of waiting for an indicator someone else has to publish. The same reasoning applies to the report's hunting hypothesis about managed browsers holding unnecessary high-privilege extensions [17]: privilege you never granted cannot be inherited by a new owner.
Two of the four preconditions in the report are not the attacker's to arrange. Credential and session theft needs the user on the target page, logged in or typing; recovery-phrase theft, asset transfers and ClickFix execution need the user to follow the prompt [16]. The prompts are built to be followed. Full-screen update and recovery pages appear on the official Ledger and Trezor sites asking for 12, 18 or 24 words [9], and clicking a real Connect Wallet or Swap button routes into a process the attacker swapped in [10]. Where the fake Chrome update prompt lands, the pasted commands run locally on the device, outside the browser entirely [11].
The material names 19 targeted extensions [8] without giving the IDs here, so it does not close a ticket. What it does specify is the query worth writing: a per-device extension inventory joined to version history and to the permission set each version requested.
Ranked by verification strength, evidence, and original report placement.
BleepingComputer reported on 2026-08-30, with related research credited to Socket Threat Research, a high-severity campaign tracked as Superior in which threat actors published custom Chrome and Edge extensions or acquired existing ones with an established user base from the original author, kept them harmless to build users, then pushed malicious updates.
After the malicious update the extensions received encrypted JavaScript modules from a C2 server, stripped Content Security Policy headers from web pages, stole cryptocurrency wallets, credentials, session data and browsing history, and displayed ClickFix-style fake update prompts.
The change in extension ownership is not explicitly notified to users, and browsers update installed extensions to newer versions automatically by default, often without any new installation prompt or clear warning.
The background service worker generates a unique installation UUID and establishes a WebSocket connection with the C2 server.
The extension stores JavaScript modules received from the C2 server in chrome.storage.local, encrypted with AES-GCM using a key derived from the extension ID and the installation UUID.
The extension registers dynamic declarativeNetRequest rules to strip Content-Security-Policy response headers from pages the user browses.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 30, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Chrome's auto-update default distributed the drainer once the extension changed hands1 distinct publisher
security
ClickFix in the sidebar: Def Con follow-up phishing turns a real Google Doc into the payload2 distinct publishers
security
A year of Sophos AI cases: 30 of 38 were fake installers, not autonomous attackers1 distinct publisher
security
FTP welcome banners are the new dead drop, and that suits whoever reads netflow1 distinct publisher
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Deep mechanics, one relay, no names
The UUID handshake, the AES-GCM module cache, the declarativeNetRequest header strip — each step is specific enough to write a detection against, and that specificity is the strongest thing here. But all of it reaches us second-hand through a dev.to summary of BleepingComputer, which in turn credits Socket Threat Research; the original investigation is not in front of us. Eight domains are the only artifacts a defender can act on tonight, because the 19 extensions at the centre of the story are referenced and never listed.
Shipped through the trusted path, scale blank
What matters is the delivery route: Chrome Web Store and Edge Add-ons update channels, not sideloading — the path enterprise policy is written to permit. That the malicious versions reached existing users through automatic updates is stated directly. What is entirely absent is magnitude: no install counts for the 19 extensions, no victim tally, no dates bounding how long the bad versions were live, no drained-funds figure. Real distribution, unmeasured reach.
Capability inventory outruns the count
The impact list is long — approvals hijacked across EVM, Solana and Tron, Ledger and Trezor recovery phrases, sessions and balances at eight exchanges, form values from arbitrary sites, Facebook and LinkedIn details — and it sits under a High severity rating with nothing measured beneath it. The prose is restrained rather than breathless, and the preconditions are honest about how much depends on the user typing the phrase or approving the prompt. Still, capability is being read as consequence, and the reader is left to close that gap alone.
Supply-chain vendor to news site to blog
Follow the chain of custody: research from a firm whose business is detecting software supply-chain compromise, through a security news outlet, into a developer-blog summary. The prescribed fixes — enterprise allowlists, continuous monitoring of ownership and permission changes, EDR watching browser-spawned shells — describe a product category, not a patch. None of it reads as a pitch and the advice would hold anyway; it is simply worth noting that nobody in this chain has a reason to publish a smaller number.
Coherent, uncorroborated
Internally the account holds: a key bound to extension ID plus install UUID, a header strip that clears the way for main-world code, ClickFix as the exit from browser into shell. Nothing in it contradicts how extensions actually behave, and the two inferences we draw — hash indicators that will not travel, CSP removal as the enabler for injection — follow from the stated mechanics rather than adding to them. The missing half is corroboration: one retelling, no independent look at the extensions, and silence from Google and Microsoft on review or takedown.