ClickFix lures are injected into legitimate sites and talk visitors into pasting a malicious command themselves. Report URI uses reports from your visitors' browsers to spot the injected script, the connections it makes and the fake overlay, even if you never see them yourself. Then you can block them.
Trusted by Security Teams
There's no browser exploit involved. A fake verification step or error message appears on a site the visitor trusts, a script copies a command to their clipboard, and the instructions on screen walk them through running it. The browser never downloads anything malicious, so download protection has nothing to catch.
A loader is added to a legitimate site through a vulnerable plugin, a stolen admin login or a compromised tag. It is usually disguised as analytics, a font service or a CDN. Your server serves the page as normal.
The loader fetches its instructions, often over a WebSocket or from a blockchain smart contract, and renders a fake CAPTCHA or Cloudflare check. It is shown only to the visitors it targets, so your own testing never triggers it.
The visitor pastes the command into the Run dialog or a terminal and presses Enter. It downloads and runs an infostealer, which takes their saved passwords, browser sessions and crypto wallets. They were on your website when it happened.
We track ClickFix infrastructure as part of our threat research. Read how a WebSocket-driven chain works, and how one campaign reached thousands of WordPress sites →
You can't protect your visitors' computers. You can see what your page does in their browsers, and decide what it is allowed to do. No agents, no injected scripts, no code running on your behalf.
Script Watch keeps an inventory of every script your pages load, built from real visitors' browsers. A ClickFix loader is a script that wasn't there yesterday, so it shows up as new, with when it first appeared and which pages it was seen on.
Learn more about Script Watch →The loader has to fetch its overlay and its command from somewhere. A brochure page has no reason to open a WebSocket to a week-old domain, or to read a blockchain RPC endpoint. Data Watch tracks every destination your pages connect to and alerts you when a new one appears.
Learn more about Data Watch →Some kits render the fake "security check" as a full-screen iframe from another origin. Frame Watch keeps an inventory of every frame your site embeds and tells you the first time a new one is seen.
Learn more about Frame Watch →Script Watch tells you a script is new. Threat Intelligence tells you if it's already known to be malicious. We check every host in your reports against the infrastructure we track, and flag known ClickFix hosts on the report itself.
Learn more about Threat Intelligence → Read our threat research →Once you know what your site legitimately loads, enforce it. An enforced Content Security Policy refuses a loader from a host you never allowed, so the overlay never renders and nothing is written to the clipboard.
A Connection Allowlist blocks the call home. Name the destinations your pages may reach and the browser refuses the rest, including the WebSocket or blockchain RPC request a loader needs to fetch its overlay and command.
Learn more about CSP Reporting → Learn more about Connection Allowlist →The lure renders in the visitor's browser, for the visitors it chooses. Most of the tools a site owner relies on never look there.
Kits filter by operating system, first visit and logged-in status. You can browse your own site all day and never see the overlay your visitors are getting.
The overlay, the clipboard write and the call home all happen in the browser. Your server logs show a normal page view.
On WordPress, the loader is often added through the site's own script API from code left behind after the compromise. A core update leaves that code exactly where it was. See how that campaign worked →
Operators rotate their domains constantly, sometimes registering a new one the morning it goes live. A list of known names is always a step behind.
A ClickFix lure can be injected into any page, so deploy a report-only policy across your whole site. It changes nothing about how your site behaves; it just tells you what loads.
Content-Security-Policy-Report-Only: script-src 'self';
connect-src 'self'; frame-src 'self';
report-uri https://your-subdomain.report-uri.com/r/d/csp/reportOnly
Add the third parties you actually use. Anything that still shows up in your reports after that is worth a look. Once the policy has settled, move it to enforcement.
Report URI covers the part of a ClickFix attack that happens on your pages. The last step, running the pasted command, happens on the visitor's own computer, which no website can reach.
| Report URI covers | Doesn't replace |
|---|---|
| Detecting injected scripts on your pages | Endpoint protection on your visitors' devices |
| Detecting new connections and frames | Malware cleanup on a compromised site |
| Blocking unauthorised scripts and destinations | Incident response for visitors who ran the command |
| Matching hosts against known ClickFix infrastructure | Patching the vulnerability that let the attacker in |
Nothing of ours runs on your pages, so there is no new script for an attacker to compromise.
It's one header, there's nothing to install, and nothing gets blocked until you decide to enforce.
30-day free trial · One header · No infrastructure changes
script-src load. It has to fetch its instructions, which is a connect-src connection, and connect-src covers WebSockets. Some kits render the overlay as a full-screen iframe, which is a frame-src load. A policy reports all three, and in Report-Only mode it does so without blocking anything.