DoubleDonut ClickFix kit
DoubleDonut is a ClickFix kit that plants a loader on WordPress sites and reads its next script from a BNB Smart Chain testnet contract. We have matched it on 2,263 sites since 10 August.
DoubleDonut in numbers
Since 10 August, the first DoubleDonut match in our records, counted on 12 November 2026. How we count.
| Sites with DoubleDonut code | 2,263 |
|---|---|
| Sites with a match in the last 30 days | 1,309 |
| New sites in October | 613 |
| Still serving it when recaptured at least 25 days later | 778 of 1,007 sites (77%) |
| Sites running WordPress (captured since 25 September) | 90% |
Rapid7 documented the campaign
Rapid7 published this campaign as "ClickFix DoubleDonut". The code injected into websites is identical to the code in their report, down to the window.__performance_optimizer_v6 guard and the same crawler filter.
How it gets onto a site
We see the same loader placed several ways. One is a plugin-style loader that posts to the site's own admin-ajax.php with the action bsc_sl_get_script. The site's server makes the blockchain call and hands the script back, so the visitor's browser only ever talks to the site.
Other sites carry a small injected loader that decodes a list of endpoints and requests /jsrepo?rnd= or /teamrepo?rnd= from each until one answers. A third version adds script tags for mpackage.js and smpackage.js, loaded from lookalike CDN hosts named like cdn.<word>delivr.com. We have matched the mpackage.js tag on 464 sites since 1 September 2026. Caching plugins and CDNs then keep copies of the injected scripts, so the code can outlive the first clean-up.
Each build is packed with its own small JavaScript virtual machine, with a fresh alphabet and type tags every time. DoubleDonut's contract holds the whole next stage. The loader sends eth_call with the selector 0x6d4ce63c to a contract on BNB Smart Chain testnet (chain 97), decodes the returned string from Base64 and runs it.
Windows visitors only
The loaders skip crawlers and stay off WordPress system paths such as /wp-admin and /wp-json. The second stage exits unless the browser reports Windows. An owner who checks from the dashboard, or from a Mac, will see a normal site.
The fake Cloudflare check
Windows visitors get a full-screen Cloudflare page with the site's domain and a Ray ID, drawn inside a shadow root so the site's own styles cannot touch it. Every build mounts the same page with the same stylesheet.
The steps are Win+X, then I to open Terminal, then Ctrl+V. The lure picks one of 31 sets of instructions from the browser's language, so German visitors are told to press Strg instead of Ctrl. The command itself is fetched for each visitor and copied to the clipboard from a hidden text box.
When a site carries two different builds of the lure, each one keeps re-adding its own overlay and the page freezes. For some owners, a page that locks up is the first visible sign.
What we see
| Month | New sites |
|---|---|
| September | 1,078 |
| October | 613 |
| November so far | 201 |
Of the 1,007 sites recaptured at least 25 days after their first match, 778 were still serving DoubleDonut (77%). 90% of the sites captured since 25 September run WordPress, and 56% of those run WordPress 7.1.
Checking a site
Look at the public page from a Windows browser you do not use to log in. Then check for:
- a script tag loading
mpackage.jsorsmpackage.jsfrom a host you do not recognise __performance_optimizer_v6in the page source or in a theme or plugin file- an
admin-ajax.phpaction calledbsc_sl_get_script, or absc-sl-loaderscript you did not install - elements named
__cf_challenge_host__or__app_root_overlay__in the rendered page - a "Cloudflare" check that asks you to press Win+X, I and Ctrl+V
Clear the site's cache and CDN after removing the code, or the old copies keep serving it.
Contracts we read
We read 2 DoubleDonut contracts every day.
| Chain | Contract | Current destinations | Last changed |
|---|---|---|---|
| BNB Smart Chain testnet | 0x7Fd85c090f2b35071C57a3b9FeAF462aaEb0E437 | tdssecure[.]beer | |
| BNB Smart Chain testnet | 0xFB448D465841C63F3bC433be61Eb692b813D469d | tdssecure[.]beer |
The EtherHiding contract tracker keeps the full destination history.
Hosts its commands download from
DoubleDonut lure commands we captured download from 5 hosts.
| Host | Sites | Last seen | Latest command |
|---|---|---|---|
checkingrayid[.]com | 163 | CommandURL First seen 6 November 2026, 163 URLs on this host. | |
cloudelivrenterprise[.]com | 59 | CommandURL First seen 29 September 2026, 1 URL on this host. | |
clouddelivry[.]com | 20 | CommandURL First seen 16 October 2026, 7 URLs on this host. | |
cdn[.]kjhg[.]shop | 2 | CommandURL First seen 6 October 2026, 1 URL on this host. | |
cloudeliveryenterprise[.]com | 1 | CommandURL First seen 7 September 2026, 1 URL on this host. |
The ClickFix command tracker lists every host.