Web threats

EtherHiding moves a website loader's next address into a smart contract.

EtherHiding is a loader technique that lets code on an infected website read its next script or address from a smart contract. Since 1 August we have matched EtherHiding code on 46,746 sites.

EtherHiding in numbers

Since 1 August, when our rule-match records begin, counted on 12 November 2026. How we count.

Sites with EtherHiding code46,746
Sites with a match in the last 30 days27,405
New sites in October13,936
Still serving EtherHiding when recaptured at least 25 days later15,840 of 19,172 sites (83%)
Sites running WordPress (captured since 25 September)83%
Named kits26

Kits compared

The 10 kits with the most sites in the last 30 days. All 25 kits are listed at the end of the page. One site can carry more than one kit. The last column counts sites recaptured at least 25 days after their first match, where there are at least 50.

KitLast 30 daysAll sitesFirst matchStill serving 25 days on
LenAI8,59814,25576% of 5,380
ChainBite8,04910,86985% of 3,853
GzipGnaw2,9446,66988% of 3,118
OverlayWar2,6944,96575% of 2,210
DriveSurge1,5983,19275% of 1,539
BW panel1,3573,26567% of 1,842
DoubleDonut1,3092,26377% of 1,007
NoChain1,2143,14074% of 1,582
FleetSync7681,06891% of 552
XorVeil69282678% of 131

What the infected sites run

26,672 of the 32,266 sites we captured since 25 September 2026 run WordPress (83%), and 1,748 sites run Joomla. Shares below are of the WordPress sites, by the version and plugins on each site's latest capture.

WordPress versionSitesShare
WordPress 7.114,91656%
WordPress 7.02,91611%
WordPress 6.91,8187%
WordPress 6.81,1144%
Other releases from 6.01,8767%
Older than 6.01,0284%
Rare or unreadable version3,00411%
PluginSitesShare
elementor12,03945%
contact-form-77,52028%
elementor-pro5,78622%
woocommerce5,25220%
google-site-kit3,72314%
revslider3,38613%
wordpress-seo2,1738%
elementskit-lite1,9257%
js_composer1,8397%
litespeed-cache1,8117%
wordfence1,3505%

Smart contracts

24 kits read 189 contracts on Base, Polygon, BNB Smart Chain testnet, Ethereum Sepolia, BNB Smart Chain and Ethereum. Today they return 211 destinations.

Open the EtherHiding contract tracker

EtherHiding is JavaScript on an infected website that reads code or an address from a smart contract. The loader sends a read-only eth_call through a public blockchain RPC service, decodes the reply and loads what the contract names.

infected website
  -> public blockchain RPC service
  -> eth_call to a smart contract
  -> contract returns code or an address
  -> visitor's browser loads the next script

The contract controls every infected copy

The contract address and function selector are built into the injected loader. The operator can replace the value stored in the contract without editing the infected sites again. Every copy that reads that contract follows the new value on its next visit.

Guardio Labs named the technique EtherHiding in October 2023 after finding ClearFake loaders on compromised WordPress sites reading malicious JavaScript from BNB Smart Chain (Guardio Labs). The eth_call read creates no transaction on the chain and costs the reader no gas.

That separation makes takedown harder. Removing the current script host interrupts one route, but the injected code and contract remain.

Chains and kits

The loaders we track read Polygon, BNB Smart Chain mainnet, BNB Smart Chain testnet, Ethereum mainnet, Ethereum Sepolia and Base. They carry several public RPC endpoints and try another when one fails.

The ClickFix kits with their own pages here use several versions of the pattern:

  • BW panel reads its panel address from Polygon.
  • DoubleDonut reads a whole script from BNB Smart Chain testnet.
  • OverlayWar decodes staging hosts stored on Polygon.
  • GzipGnaw decrypts and decompresses a stage from Sepolia.
  • ChainBite walks through several BNB Smart Chain testnet contracts.
  • LenAI reads controller addresses from Polygon and Sepolia. One build reads a block number from a BNB Smart Chain testnet contract and runs the lure stored in that block's transaction log.
  • NoChain stores scripts and a lure page in a contract on Base.
  • CLEARSHORT uses router, logic and storage contracts on BNB Smart Chain.
  • CookieDam has a build that reads its overlay host from Ethereum mainnet.

HexMage uses the same staging idea for a payment-card skimmer. Its loader asks a Sepolia contract where to find the per-site skimmer script. BaseTask decrypts a controller URL read from a Base contract, then sends AES-GCM-encrypted get_bundle and get_resource requests. The returned task lists select JavaScript to cache in IndexedDB or inject through Blob URLs and inline script elements.

SuperPixel, another card skimmer, reads its collection host from an Ethereum mainnet contract. FileDrop runs fake software download sites: copies of BleachBit, FileZilla, Notepad++ and other free tools whose Download buttons read the download server from a Base contract and hand the visitor a ticketed ZIP to run.

Contract history

We read 189 registered contracts every day. The EtherHiding contract tracker shows each contract's family, chain, address, current destination and destination history. The tracker lists the first and last date for every destination we decoded.

What we see across infected sites

MonthNew sites
September22,271
October13,936
November so far3,292

83% of the EtherHiding sites captured since 25 September run WordPress. Of the 19,172 sites recaptured at least 25 days after their first match, 15,840 still served EtherHiding code (83%).

Checking a site

Open the public page while logged out and watch its network requests. On a site with no blockchain feature, trace:

  • JSON-RPC requests whose method is eth_call
  • requests to public Polygon, BNB Smart Chain, Sepolia or Base RPC services
  • a contract address and function selector embedded in page JavaScript
  • code that strips ABI padding, decodes Base64, decrypts a string or creates a script element from the reply

Then find the script in the page source, theme, plugin or cached JavaScript that created the call. Remove the injection and the access used to place it, then rotate site and hosting credentials. Blocking the current destination leaves the loader in place.

Kits

LenAI

8,598 sites in the last 30 days

LenAI is a packed ClickFix loader that reads its controller from a Polygon smart contract.

ChainBite

8,049 sites in the last 30 days

ChainBite is a ClickFix kit that stores each stage of its attack in a different BNB Smart Chain testnet contract.

GzipGnaw

2,944 sites in the last 30 days

GzipGnaw is a ClickFix loader that stores its next stage encrypted and compressed in an Ethereum Sepolia contract.

OverlayWar

2,694 sites in the last 30 days

OverlayWar is a ClickFix kit that reads its staging host from Polygon contracts and deletes other kits' overlays before showing its own.

DriveSurge

1,598 sites in the last 30 days

DriveSurge is a ClickFix kit delivered by a fake WordPress analytics plugin, ganalytics-tracker.

BW panel

1,357 sites in the last 30 days

BW panel is a ClickFix kit that finds its control panel through Polygon contracts and lets the panel choose one of nine lures for each visitor.

DoubleDonut

1,309 sites in the last 30 days

DoubleDonut is a ClickFix kit that plants a loader on WordPress sites and reads its next script from a BNB Smart Chain testnet contract.

NoChain

1,214 sites in the last 30 days

NoChain is a ClickFix kit that keeps its scripts and its lure page inside a smart contract on Base, loaded by a fake WordPress plugin.

FleetSync

768 sites in the last 30 days

FleetSync is a WordPress backdoor that polls a controller for work and writes an autologin hook into theme files.

XorVeil

692 sites in the last 30 days

XorVeil is a fake Cloudflare overlay that XOR-decodes its clipboard command and controller.

HexMage

331 sites in the last 30 days

HexMage is a web-skimmer kit whose loader reads a per-site script host from an Ethereum Sepolia smart contract.

CLEARSHORT

93 sites in the last 30 days

CLEARSHORT is the JavaScript downloader Google's threat intelligence group attributes to UNC5142, and the successor to ClearFake.

TwinKey

56 sites in the last 30 days

TwinKey is a two-key wrapper whose decoded stage reads a script host from Polygon.

CookieDam

44 sites in the last 30 days

CookieDam is a footer-injected loader that adds remote HTML to a compromised page.

SuperPixel

26 sites in the last 30 days

SuperPixel is a WooCommerce card skimmer appended to a shop's own scripts, usually the copy of jQuery WordPress ships.

EnvelopeDam

24 sites in the last 30 days

EnvelopeDam is an injected website loader that reads a controller from Polygon and unwraps a page-specific encrypted stage in the browser.

ProxySig

22 sites in the last 30 days

ProxySig retrieves code through a same-origin contract relay and executes the Base64 response.

FileDrop

20 sites in the last 30 days

FileDrop is a kit for fake software download sites copying BleachBit, FileZilla, Notepad++, OBS and other free tools.

BaseTask

17 sites in the last 30 days

BaseTask is a wallet tasking loader that reads its controller from a Base smart contract and requests JavaScript through an encrypted protocol.

RTCGnaw

16 sites in the last 30 days

RTCGnaw is a Magecart card skimmer for WooCommerce and Magento shops.

PolyTDS

5 sites in the last 30 days

PolyTDS is an obfuscated loader that reads its next script host from Polygon.

LinkHiding

3 sites in the last 30 days

LinkHiding is a WordPress SEO-spam backdoor with an Ethereum-backed controller address.

PermitKey

2 sites in the last 30 days

PermitKey is a wallet drainer on look-alike DeFi and reward-claim pages.

TripleGnaw

2 sites in the last 30 days

TripleGnaw is a packed website loader that reads JavaScript from a BNB Smart Chain testnet contract and opens a WebSocket for its next stage.

TestnetTail

1 site in the last 30 days

TestnetTail is a website loader that resolves its HTML source through a BNB Smart Chain testnet contract.

Try the feed for 14 days.

Request a trial and we'll send you a live API key, with the same feed, removals and reasons a customer gets.