Web threats / ClickFix

PolyTDS ClickFix kit

PolyTDS is an obfuscated loader that reads its next script host from Polygon. We have matched it on 31 sites since 29 September.

PolyTDS in numbers

Since 29 September, the first PolyTDS match in our records, counted on 12 November 2026. How we count.

Sites with PolyTDS code31
Sites with a match in the last 30 days5
New sites in October29
Sites running WordPress (captured since 25 September)10%

The contract address sits on the script element

PolyTDS is a large inline loader whose data-contract attribute holds a Polygon contract address. The script reads that attribute, sends an eth_call with selector 0xc3f909d4 and decodes the returned value as a domain. It then builds an HTTPS address ending in /tds/ and injects that address as a script.

The contract value lets the operator change the script host while infected pages keep the same loader.

The /tds/ script presents the visitor with a ClickFix prompt. Its copied command uses msiexec.

The packed loader survived an optimiser rewrite

The original build uses javascript-obfuscator. Its string table carries a swapped-case Base64 alphabet, which hides the Polygon RPC method, selector and /tds/ path in raw source.

September captures contain the same inline build. An October capture shows a WordPress performance optimiser changing the script type and later turning its body into a Base64 data: URL. The data-contract attribute survives that rewrite. Search the final response and decoded data: content as well as the original template.

What we see

MonthNew sites
September2
October29
November so far0

PolyTDS matches began on 29 September. 5 sites had a match in the 30 days to 12 November 2026, and 10% of captured PolyTDS sites run WordPress.

Checking a site

Search server responses and decoded scripts for:

  • a data-contract attribute holding a Polygon contract address
  • an eth_call to Polygon with selector 0xc3f909d4
  • a decoded HTTPS script address ending in /tds/
  • a large obfuscated string table with a swapped-case Base64 alphabet
  • a Base64 data:text/javascript URL carrying the same loader

Trace the injection into templates, database content and optimisation caches, then purge each affected cache before retesting.

Contracts we read

We read 1 PolyTDS contract every day.

ChainContractCurrent destinationsLast changed
Polygon0x8e02b8245a416f7ea713f559c674d99fa2f979f9lovecute3ssss[.]top

The EtherHiding contract tracker keeps the full destination history.

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.