Scam defense / Updated 2026-09-17

The Extension That Was Safe Last Month: How Browser Add-Ons Turn Into Wallet Stealers

Extensions do not have to arrive malicious. Nine sports-score add-ons became wallet stealers under the same listing, inheriting their installs and reviews. What extensions can reach, when you are re-prompted, and the audit that takes ten minutes.

How this guide is checked

Official sources first, no wallet connection, no guaranteed returns.

Reviewed on 2026-09-17 by WildWildCrypto Safety Desk. Method: Human editorial review with official-source checks, affiliate-disclosure checks, and no-financial-advice checks.

Publisher: WildWildCrypto Editorial. Corrections go through the contact page. We do not ask for seed phrases or tell you what to buy.

malicious browser extension crypto wallet matters because You have been told to verify before you install, and you did — so the idea that an add-on you vetted months ago could quietly become something else, without a warning, without a new prompt, and without losing its reviews, does not fit the mental model anyone handed you.

This guide explains what browser extensions can actually reach, why an update is a better attack than a fake download, the two distinct ways these add-ons take crypto, and how to audit what is installed in your browser right now.

You will learn which permission phrase should stop you, the exact condition under which a browser does and does not re-prompt you on an update, why a modified copy of a real wallet is more dangerous than an obvious fake, how a campaign reused sports apps to inherit trust, and where the hard boundary is that no extension can cross.

The attack is not the download — it is the update

Almost everything written about malicious extensions assumes the danger is at installation: a fake listing, a typosquatted name, a suspicious developer. That advice is fine as far as it goes, and the campaigns documented through 2026 went around it entirely by attacking a moment nobody inspects.

Socket's threat research team documented a cluster of 40 malicious Firefox extensions, part of a wider set of 77 add-ons sharing source code and infrastructure, in a campaign they called the Offside Wallet Theft Factory and traced back to at least March 2026. The name comes from the tactic. Nine of the malicious identities did not start as crypto products at all. They first shipped as ordinary sports score extensions — football, basketball, NBA, hockey — and did exactly that, for months. Later updates replaced that code with wallet-stealing logic under the same extension IDs, inheriting whatever install base and review history the originals had built.

Sit with what that defeats. The install count was real. The reviews were real, left by people whose experience of the add-on was genuinely fine. The developer history was real. Every signal a careful person is told to check was accurate at the time it was checked, and none of them described what the extension became. The researcher who led the analysis, Kirill Boychenko, framed the economics in a line worth remembering: a single successful installation can expose a recovery phrase, private key or wallet state worth far more than the cost of repeatedly publishing disposable extensions. When one hit pays for hundreds of failures, patience is cheap.

The same pattern showed up in the Chromium world. Socket researcher Karlo Zanki documented 19 extensions — 18 in Chrome, one in Edge — carrying a modular framework for wallet draining, and the highest-impact listing among them was not a crypto product either. It was a right-click-and-copy utility with roughly 80,000 combined installs. An add-on that does something small, useful and entirely unrelated to money is the ideal host, because nobody audits the thing that unlocks text selection on a stubborn web page.

Checklist

  • Socket documented 40 malicious Firefox extensions within a wider set of 77 sharing code and infrastructure.
  • The campaign, active since at least March 2026, was named the Offside Wallet Theft Factory.
  • Nine began as sports score apps and were converted by later updates under the same IDs.
  • Install counts, reviews and developer history were genuine — and described the old code.
  • Socket: one successful install can be worth more than many disposable listings cost.
  • In Chrome and Edge, 19 extensions carried draining code; the largest was a right-click utility with ~80,000 installs.
  • Unrelated small utilities make ideal hosts because nobody re-audits them.

What an extension can actually reach, and when you get warned

To understand why this works you have to be precise about what an extension is. It is not a separate app in a sandbox next to your browser. It is code that runs inside your pages, with whatever access its permissions describe, and the relevant permission is broader than most people realise when they click through it.

Mozilla's explanation of permission requests is candid about why the broad one exists: extensions ask to access your data for all websites because a web page can contain virtually anything, and some extensions need to read everything on it to do their job — ad blockers identifying ads, password managers finding form fields, shopping tools reading product details. These are legitimate needs. The same access, in different hands, means the extension can read every page you open and change what those pages do. Chrome's permissions reference states the consequence in its own warning text for privileged access: read and change all your data on all websites.

Read that against what a wallet interface is. It is a web page. A transaction confirmation is a rendered page. An address you paste is a form field. Code with permission to read and change all data on all sites is inside that boundary, not outside it, which is why an extension attack does not require you to make any visible mistake — there is no fake domain to notice and no bad link to avoid.

Now the mechanism that makes updates the ideal delivery route. Chrome's developer documentation on permission warnings explains that some permissions are less intrusive and do not display a warning, while others trigger a warning the user has to allow, and specifies the consequence: when a new permission that triggers a warning is added, the extension is disabled until the user accepts the new permission. That protection is real and worth knowing. But the inverse is equally true and much less discussed. If an update changes what the code does while staying inside the permissions you already granted, there is no prompt, no notification and no disabling. The extension simply becomes different software on your machine, at a moment of the developer's choosing rather than yours.

Checklist

  • An extension runs inside your pages, not in a separate sandbox beside them.
  • Mozilla: broad access exists because some extensions genuinely need to read whole pages.
  • Chrome's warning text for privileged access: read and change all your data on all websites.
  • A wallet interface is a web page — this access sits inside that boundary.
  • Chrome: adding a new warning-triggering permission disables the extension until you accept.
  • The inverse: a code change within granted permissions updates silently, with no prompt.
  • An extension with page access already has what a wallet stealer needs.

The two ways they take the money

The documented campaigns split cleanly into two techniques, and they call for different defences, so it is worth separating them.

The first is harvesting the secret. Here the extension presents a wallet interface — impersonating a known product, or offering a plausible reason to enter your phrase such as an import, a validation, a migration or a recovery — and captures what you type. In the Firefox campaign Socket documented the impersonated products by name: OKX, Rabby Wallet and TronLink. Fifteen of the extensions captured recovery phrases and private keys and exfiltrated them through Cloudflare Workers, while another seven used attacker-controlled Supabase projects as remote switches for phishing and decoy content — meaning the same installed extension could present innocent behaviour or its attack on command, which also defeats anyone testing it once and pronouncing it clean.

The defence against this one is a rule with no exceptions attached: your recovery phrase is entered exactly once, into your wallet, when you deliberately restore it, on a device you control. Never in response to a prompt that appeared. Never as a validation, a sync, an eligibility check, an unlock, an airdrop claim or a support step. The request is the attack — which is the same principle behind pre-filled recovery sheets shipped with counterfeit hardware devices, where a phrase you never chose is presented as though it were yours.

The second technique never asks you for anything. Thirteen extensions in the Firefox campaign shipped modified builds of Rabby Wallet, engineered to exfiltrate serialized keyrings before local encryption — that is, taking the key material at the point in the process where it is still readable, inside software that otherwise behaves exactly like the real wallet, because it largely is the real wallet. Five more focused on credentials and clipboard data through hard-coded command and control infrastructure. The Chrome and Edge cluster was broader still: a framework of sixteen modules covering multi-chain wallet draining, hardware-wallet seed-phrase harvesting, exchange and wallet account theft, universal credential and form grabbing, social account theft, browser history collection and ClickFix-style social engineering lures, with the operators rotating command-and-control endpoints to give each victim a separate exfiltration channel and make detection harder.

There is no user behaviour that defeats the second category, which is the uncomfortable part. You cannot out-careful a modified copy of your own wallet. What defeats it is architecture: keys that never exist in the browser in the first place.

Checklist

  • Technique one: a fake or hijacked interface harvests the phrase you type.
  • Socket: impersonated products included OKX, Rabby Wallet and TronLink.
  • Fifteen extensions exfiltrated phrases and keys via Cloudflare Workers; seven used remote switches to hide behaviour on demand.
  • Rule with no exceptions: a phrase is entered only into your wallet, by your deliberate choice.
  • Technique two: modified builds of real wallets take keyrings before local encryption.
  • The Chrome and Edge cluster ran sixteen modules including hardware-wallet seed harvesting and credential theft.
  • Careful behaviour does not defeat a modified wallet — only keeping keys out of the browser does.

Why the store signals do not protect you here

Both major stores run review processes, and both catch a great deal. Mozilla's Recommended Extensions program applies full code review by staff security experts and marks the result with a badge, and Mozilla is candid that a review process designed to make malicious publishing difficult still cannot guarantee extensions are completely safe. That honesty is the right starting point, because the campaigns above were built specifically around the gap it names.

Reviews and install counts describe history, not current code. When a listing is converted by an update, every accumulated signal transfers to software that has nothing to do with what earned them. Mozilla's own suggested questions — is the extension made by a reputable developer, are the user ratings high, are the permission requests consistent with the features — remain good questions, and the third is the strongest of the three, because it is the only one that interrogates the extension's behaviour rather than its reputation. A scores app requesting access to all sites is exactly the mismatch that question is designed to surface.

The practical reading is not that store signals are worthless — they usefully filter obvious junk. It is that they are a floor rather than a ceiling, and that the most important question is not whether an extension was trustworthy when you installed it, but whether you would still accept its permissions today for what it actually does for you.

Checklist

  • Mozilla's Recommended program applies full code review — and Mozilla states no process guarantees safety.
  • Reviews and install counts describe past code, and transfer intact through a malicious update.
  • Mozilla's strongest question: are the permissions consistent with the features?
  • A scores or utility extension asking for access to all sites is that mismatch.
  • Store signals are a floor, not a ceiling — ask whether you would accept the permissions today.

The ten-minute audit, and the boundary that actually holds

Open your browser's extensions page and read the list as though someone else installed it. Most people find between five and twenty entries and cannot say what several of them do. That gap is the whole problem, and closing it is quick.

Remove anything you do not actively use. This is not a judgement about whether it is malicious; unused extensions are pure exposure, because they carry permissions indefinitely and are updated by developers you stopped thinking about years ago. For each one that survives, ask Mozilla's consistency question directly: does what this thing does for me plausibly require reading and changing data on every site I visit? A note-taker, a theme, a scores widget, a coupon finder and a screenshot tool generally do not. Then check what each one is today — open its listing, see when it last updated, whether ownership changed, and whether recent reviews describe different behaviour from older ones. A cluster of recent complaints saying an add-on 'started doing something weird' is the signal the store's aggregate rating is too slow to show.

Then build the separation that makes the whole category smaller. Use a browser profile — or better, a browser — that exists only for wallets and exchanges, with no extensions installed except the wallet itself, obtained from the vendor's own published link. Do your reading, shopping and general browsing in the profile where your convenience extensions live. That single split means a compromised utility cannot see a session it was never present for, and it costs nothing but a second icon.

Now the boundary. Everything above reduces the odds; none of it survives a modified build of your own wallet, because there is no visible error to avoid. What survives is a hardware wallet, and the reason is structural rather than a matter of quality: the private key is generated on the device and never enters the browser, so an extension reading every page still finds nothing to steal. What it can still do is alter what a page displays, which is why the device's own screen matters — confirm the destination address and amount on the hardware screen, not on the page asking you to approve. That check is the last thing standing when everything else has been compromised, and it is the one people skip precisely because it looks redundant.

Checklist

  • Read your extension list as if a stranger installed it.
  • Remove everything you do not actively use — unused permissions are pure exposure.
  • Ask whether each extension's job plausibly needs access to every site.
  • Check each listing for recent updates, ownership changes and reviews describing new behaviour.
  • Keep a separate browser or profile for wallets and exchanges, with no extra extensions.
  • Install wallet software only from the vendor's own published link.
  • A hardware wallet keeps the key out of the browser entirely.
  • Confirm address and amount on the device screen, not the web page.

Authority sources used

Outbound links are included for verification and entity authority, not decoration.

FAQ

I checked the reviews and install count before installing. Wasn't that enough?

It was the right check aimed at the wrong moment. Reviews and install counts describe the code that existed when people used it, and they transfer intact through an update that replaces that code. Socket's research on the Firefox campaign documented this directly: nine malicious identities first published football, basketball, NBA and hockey score extensions, then later updates replaced that functionality with wallet stealers under the same extension IDs, inheriting whatever install base and review history the originals had built. So the ratings were honest, the installs were real, and neither described what the extension became. The check that holds up over time is not reputational but behavioural — Mozilla's own suggested question is whether the permission requests are consistent with the features, and that one keeps working, because a scores widget asking to read and change data on every site is a mismatch on the day you install it and every day after.

Will my browser warn me if an extension updates and turns malicious?

Only in one specific case, and it is not the common one. Chrome's developer documentation explains that some permissions do not display a warning while others trigger one the user has to allow, and that when a new permission triggering a warning is added, the extension is disabled until the user accepts it. So an update that reaches for genuinely new powers will stop and ask. The problem is that an update which changes what the code does while staying within permissions you already granted produces no prompt, no notification and no interruption — it simply installs. An extension that already had access to page content in order to display sports scores did not need to request anything further to start reading a wallet interface, which is exactly why converting an existing listing is more effective than publishing a new malicious one. Treat permission prompts as a real but partial safeguard, and treat 'it has not asked me for anything' as no evidence at all.

Is my hardware wallet safe from a malicious extension?

Substantially, and for a structural reason rather than a quality one: the private key is generated on the device and never enters the browser, so extension code reading every page has nothing to read. That is the strongest available defence and it is why the recommendation survives this entire category of attack. But be precise about the residual risk, because one of the sixteen modules Socket documented in the Chrome and Edge cluster was hardware-wallet seed-phrase harvesting — which works not by extracting the key from the device but by presenting a convincing reason for you to type your recovery phrase into a page, such as an import, a firmware step, a validation or a recovery. A real hardware wallet never needs that. The second residual risk is display tampering: an extension can alter what a web page shows, including a destination address, which is precisely why the device has its own screen. Verify the address and amount on the hardware screen before approving, every time, including the times it feels unnecessary.

How do I know whether an extension I already have is safe?

You cannot fully verify it, and it is worth being honest about that rather than performing a check that produces false confidence — you are not in a position to read the code, and Mozilla itself notes that even a review process designed to make malicious publishing difficult cannot guarantee safety. What you can do is reduce exposure and watch the right indicators. Remove anything you do not actively use, since unused extensions carry their permissions indefinitely. For what remains, apply the consistency test: does this extension's actual usefulness require reading and changing data on every site? Then check the current listing rather than your memory of it — when it last updated, whether the developer or ownership changed, and whether recent reviews describe behaviour that differs from older ones, since a cluster of new complaints tends to precede a removal. Finally, separate contexts so the question matters less: a browser profile used only for wallets and exchanges, carrying no extensions beyond the wallet itself, means an unverified utility never shares a page with your money.

What should I do if I think an extension already had access to my wallet?

Act as though the key is exposed rather than waiting for proof, because the confirming evidence in this scenario is usually the loss itself. Remove the extension, then create a new wallet on a device you have reason to believe is clean — not a second account inside the same browser, which is the same environment that was compromised. Move assets in an order that keeps fees payable: the most expensive items first and the network's gas token last, so each transfer is funded by what is already there. Record transaction hashes and a timeline while it is fresh. Then handle the two things that do not travel with your funds: outstanding token approvals granted to contracts from the old address, which persist independently, and any EVM delegation set on that address, which can remain even after the balance is zero. And treat the old address as permanently unusable — an empty wallet whose key has been copied is not a recovered wallet, it is a wallet someone else also owns.

Are wallet extensions themselves a bad idea?

No — for most people a reputable browser wallet is a reasonable tool, and the realistic advice is about sizing and separation rather than abstinence. The honest framing is that a browser wallet is hot by definition: its keys exist on a general-purpose machine running general-purpose software, which is a fine place for amounts you use and a poor place for amounts you are keeping. So use one deliberately. Install it only from the vendor's own published link rather than a search result or a social post. Keep it in a browser profile that carries no other extensions, so nothing else shares a page with it. Fund it with what you are actively using, and hold the rest where the key has never touched a browser. And carry the same rule everywhere: the wallet asks for your recovery phrase when you deliberately restore it, and at no other time — so any prompt that appears asking for it, inside any interface however familiar, is the attack rather than a step.