Adform's Ad Script Was Poisoned for a Week, and Every Site That Embedded It Shipped a Crypto Stealer
Cybersecurity

Adform's Ad Script Was Poisoned for a Week, and Every Site That Embedded It Shipped a Crypto Stealer

A tracking script from one of Europe's largest adtech firms was quietly rewritten to swap cryptocurrency wallet addresses in visitors' browsers, turning a single third-party tag into a supply-chain compromise across unrelated customer sites.

PublishedAugust 2, 2026
Read time6 min read
Share

What happened

Adform, a Danish adtech company that describes itself as one of Europe's largest independent platforms, had its JavaScript tracking file compromised. The affected resource, trackpoint-async.js served from s2.adform.net, was rewritten to act as a client-side cryptocurrency stealer. Any website that embedded the tag began serving the poisoned code to its visitors, which is the defining trait of a supply-chain attack. The attackers did not need to breach the downstream sites. They compromised one shared dependency and let distribution do the rest.

The scale of that distribution is the story. Adform reports around 1,800 customers and roughly 1.5 billion ad displays a day across more than 180 countries, running a full stack of demand-side, supply-side, and ad-serving tools. A tag with that reach is precisely the kind of high-leverage asset attackers target, because a single successful modification propagates instantly to every site that trusts it. The economics favor the attacker at every step: one intrusion into a shared vendor buys a foothold in the browsers of millions of visitors, with none of the effort of compromising each destination site individually.

How the stealer worked

The malicious payload had two jobs, both aimed at redirecting cryptocurrency payments. It monitored the clipboard on a four-second interval and, when it detected a Bitcoin, Ethereum, or Tron wallet address, replaced the value with an attacker-controlled address. It also rewrote addresses displayed in input fields, textareas, and contenteditable elements, hooking copy, cut, paste, and input events and even intercepting programmatic value writes. The code used a light six-byte XOR obfuscation and reached out to a command server at 84.32.102.230 on port 7744, transmitting the hostname and page path.

Independent researcher Kevin Beaumont, who analyzed the compromise, captured why this design is so effective against careful users. As he put it, 'even if you notice the address is wrong and recopy the wallet, it keeps replacing it.' A person paying attention, who spots the wrong destination and copies the correct address again, still hands their funds to the attacker. The malware had no persistence and installed nothing, operating only while an affected page stayed open, which is all a payment swap requires.

Why the timeline matters

Adform says it detected the incident on July 27, removed the malicious code, notified affected clients, and reported the matter to authorities. That response is the right shape. The uncomfortable detail is duration. Researchers found the poisoned script had been live for roughly a week before detection, with the oldest captured sample dated July 26 from an Archive.org snapshot. For seven days the tag was quietly rewriting wallet addresses across an unknown number of customer sites.

A week of undetected client-side tampering is the part that should worry technology leaders more than the specific payload. The code ran in visitors' browsers, outside the reach of most server-side monitoring, and it produced no obvious errors. Adform has not published indicators of compromise or a count of affected sites and diverted funds, so the true blast radius remains unknown. In practice that means downstream operators cannot yet confirm whether their own visitors were exposed.

Third-party scripts are your code now

For anyone running a commerce or checkout experience, this is the recurring nightmare of client-side supply chains. Analytics tags, ad pixels, personalization widgets, and consent managers all load with the same privileges as your own JavaScript. They can read the DOM, watch the clipboard, and rewrite what a user sees. When one of those vendors is compromised, your site becomes the delivery vehicle, and your brand absorbs the trust damage even though your servers were never touched.

The defenses here are well understood and still widely skipped. Subresource Integrity pins a script to a known hash, though it breaks for tags the vendor updates dynamically, which is common in adtech. A tight Content Security Policy limits which origins can load and which endpoints scripts can reach, which would have flagged the outbound call to an unfamiliar server. Sensitive flows, above all payment pages, are the place to minimize third-party JavaScript entirely rather than trust that every vendor stays uncompromised.

What to do this week

The immediate action is inventory. Confirm whether any of your properties load Adform's trackpoint-async.js, and if so, review browser telemetry and any user reports for signs of address rewriting during the exposure window. Because Adform has not released indicators of compromise, absence of evidence is not evidence of absence, and payment-adjacent pages deserve the closest look. Treat the July 26 to July 27 window as the known-bad period and widen it if your own monitoring suggests otherwise.

The durable fix is a real inventory of third-party scripts and a policy for them. Every tag should have an owner, a business justification, and a defined loading context, and none should load on payment pages without explicit review. Content Security Policy with reporting turned on gives you a live view of what your pages actually execute and where they connect. The Adform compromise is a clean demonstration that your attack surface includes every vendor whose code you invite into your users' browsers.

Adtech is a recurring source of these incidents for structural reasons. The whole model depends on scripts that update frequently, load asynchronously, and often chain to further third-party code, which is the exact opposite of the static, hash-pinnable dependency that Subresource Integrity was built to protect. The tags are also placed by marketing teams for measurement and revenue, so the people who own them rarely think of them as executable code running with full page privileges. That gap between who deploys a tag and who understands its risk is where compromises like this live.

For retail and commerce leaders the uncomfortable implication is that your revenue tooling and your security posture are in tension, and the tension has to be managed rather than wished away. The measurement and monetization that adtech provides are real business value, so the answer is governance, not a blanket ban. Decide which pages can tolerate third-party scripts and which cannot, keep payment and authentication flows as clean as possible, and demand that vendors in this space can speak to how they protect their own build and delivery pipeline.

Tagged#news#security#cybersecurity#breach#cisa#ransomware#zero-day#supply-chain#ai-security#adform#supply-chain-attack#adtech#javascript#cryptocurrency#web-security