What happened
The first campaign used SEO poisoning to push fake documentation for a nonexistent Python package, requests-secure-v2. Hidden instructions told visiting agents that a $3 developer license was needed to fix an error, and the page carried code to send about 0.0012 ETH to a hardcoded wallet.
ThreatLabz built a web-browsing agent with payment tools, ran it in a sandbox with no real money and no spending limit, and tested 26 models. Four executed the payment.
A second campaign used a lookalike DeBank domain. With payment tools removed, GPT-5.4 and Claude Sonnet 4.5 each rated the fake site legitimate in one test condition.
What happened next
No real funds were at risk in the test. Zscaler said the attacker’s wallet had received other, larger payments, without establishing who sent them.
What would have stopped it
- Give agents a hard per-payment and per-day spending cap enforced outside the model.
- Allow payments only to an allowlist of payees, so an instruction found on a web page cannot add a new recipient.
- Treat any payment request that originates in fetched content as untrusted and require user confirmation.
Attack families
Test scenarios
Sources
- Zscaler ThreatLabz: Indirect prompt injection in web content targets AI agents
- SecurityWeek: Prompt injection attacks trick AI agents into making crypto payments
Early access
Test your agent against cases like this.
We will email you when Countermove opens testing for agents like yours.