
16 Malicious Firefox Extensions Steal Cryptocurrency Wallet Credentials
Socket Threat Research uncovered a coordinated campaign of 16 malicious Firefox extensions split into a Rabby Wallet clone family (4 extensions, full repackaged Rabby codebase) and an OKX Wallet-impersonating "Portal WALLET" family (12 extensions), all hooking wallet import flows to steal mnemonic seed phrases and private keys and exfiltrate them via GET/POST/sendBeacon to attacker-controlled Cloudflare Workers endpoints under the icy-star-f45c.workers.dev namespace. The writeup includes campaign markers (EQOx7EIPZSNi), background.js SHA-256 hashes, extension IDs/XPI hashes, and ties the activity to a prior August 2026 crypto-theft extension campaign Socket tracked, plus concrete detection and incident-response guidance.
What it is
Two distinct Firefox extension families from Socket's analysis: a Rabby Wallet clone family ("Raabby WaIIet" — note the misspelling, with author listed as "Debrunk") and an OKX Wallet-impersonating "Portal WALLET" family. The existing summary covers counts and exfiltration endpoints; this adds the mechanism, detection fields, and IOC-level specifics needed to actually hunt or respond.
How it works
The Rabby clones hook importPrivateKey, createKeyringWithMnemonics, and mnemonic/account import paths with an injected function self._lv that accepts only 12/24-word strings or 64-char hex private keys, deduplicates in memory, URL-encodes the secret, and GETs it to the Worker with mode: "no-cors", keepalive: true (falling back to XMLHttpRequest on fetch failure). A second helper in 977.js duplicates collection at UI-level import paths, tagging requests action: ui vs action: import — meaning a single secret entry can generate multiple exfil requests.
The OKX clones post a SEED_PHRASE_IMPORT runtime message (legacy alias WALLET_SYNC) containing the raw phrase, which background scripts validate (12/24 words, non-empty, deduplicated) before transmission. One variant uses a three-stage fallback: navigator.sendBeacon, fetch POST with no-cors/keepalive, then an image-pixel GET — its code comments falsely claim only a hash and word count leave the device, but the payload field w carries the raw phrase (an FNV-1a hash is computed only for dedup, not sent instead).
All exfil requests share four JSON/query fields: a (action), s (campaign marker EQOx7EIPZSNi), k (login), w (the raw secret).
flowchart TD
A[User imports wallet secret] --> B{Extension family}
B -->|Rabby clone| C[self._lv hook fires on import functions]
B -->|OKX clone| D[SEED_PHRASE_IMPORT message to background.js]
C --> E[GET with secret in URL query, XHR fallback]
D --> F[POST JSON, or sendBeacon+fetch+pixel fallback chain]
E --> G[icy-star-f45c.workers.dev]
F --> G
F -.broken variant.-> H[fondationanimalaidrelief.workers.dev]Preconditions / Affected
One extension, sipoo-grozza@browserweb.com (v2.1), is non-functional as packaged: its manifest omits the background declaration so background.js never loads, and even if manually triggered, the frontend sends SEED_PHRASE_IMPORT while the packaged background only handles WALLET_SYNC. All manifests falsely declare data_collection_permissions.required = ["none"]. As of October 5, 2026, Mozilla has unpublished all 16 extensions.
What to do
Static/network detections given by the page:
- Flag the string
Raabby WaIIetand message typesSEED_PHRASE_IMPORT/WALLET_SYNCnear rawseedPhrasehandling. - Match JSON/GET fields
a,s,k,w,twiths=EQOx7EIPZSNi,k=login— but redact fieldwbefore logging, since it carries the raw secret. - Check extension inventories against the five listed background.js/frontend SHA-256 hashes and the 16 extension ID/XPI hash pairs.
- Search proxy/DNS logs for the three Worker namespaces under
icy-star-f45c.workers.devplusfondationanimalaidrelief.workers.dev. - For affected users: assume compromise if a real phrase/key was entered into any functioning variant — password changes don't revoke a stolen mnemonic; create a new wallet from a clean environment and move assets/revoke approvals immediately.
Caveats
The page explicitly cautions that upstream Rabby/DeBank hosts (api.rabby.io, static.debank.com, etc.) retained in the clone's code are inherited legitimate infrastructure, not campaign IOCs, and should not be blocked. It also notes the extensions' broad content-script/webRequest permissions exceed what's needed for the observed secret theft, but states no separate form-grabber behavior was confirmed — so broader browsing-data theft is flagged as a risk, not a proven finding.
Organisations named here
- EQOx7EIPZSNi
- icy-star-f45c.workers.dev
- Raabby WaIIet
- SEED_PHRASE_IMPORT
- WALLET_SYNC
Technologies named here
- Socket Threat Research
- Mozilla Firefox
- Cloudflare Workers
- Rabby Wallet
- OKX Wallet
- Mozilla
- view-focus-bright@webtools.co v6.12.2
- quick-track-nest@tabtools.co v8.1.18
- vibe-kit-tool@fasttools.co v9.21.9
- edge-hub-snap@protools.net v4.12.24
- core-hub-peak@neattools.example v8.24.21
- sipoo-grozza@browserweb.com v2.1
- mozart-seo@webtools.com v1.4
- clean-file-bar@neattools.com v4.21.8
- clean-net-timer@plugify.example v4.17.1
- manager-square@webtools.com v1.4
- manager-course@webtools.com v1.4
- val-andrew@browserweb.com v1.4
- manager-team@browserweb.com v1.4
- valory-andrew@browserweb.com v1.4
- franklin-uk@browserweb.com v1.4
- franklin-uro@browserweb.com v1.4
- Firefox
- Ethereum
- Socket
Techniques named here
- Function hooking on wallet import paths
- Multiple redundant exfiltration hooks
- Credential exfiltration via GET query parameters
- Credential exfiltration via HTTPS POST JSON
- Multi-channel resilient exfiltration
- Deceptive manifest permissions
- Deceptive code comments concealing data collection
- Brand impersonation with incomplete rebranding
- Builder-pipeline generated campaign variants
Threat actors named here
- Firefox crypto wallet extension campaign
- Rabby clone family
- OKX Clone Web3 Portal family
Related in Threat Intel
Reverse Engineering the Six Stages of MacSync Stealer and RAT
AI-Coded Malware | Analyzing Vibe-Coded AD Enumeration | Huntress
