Rain Contract Exploit Drains $1.1M From Card Users

11 min read
4 views
Sep 3, 2026

An outdated Rain card contract on Solana was used to pull about $1.1 million from funded balances. Wallets were not hacked. The twist is where the money went next.

Financial market analysis from 03/09/2026. Market conditions may have changed since publication.

Have you ever funded a crypto card, watched the balance appear, and assumed the hard part was over? I have. That small moment of relief is exactly why the late-August Rain incident still bothers me. An outdated card contract on Solana was used to pull about $1.1 million from funded balances. Personal wallets were not emptied. Private keys were not snatched from phones. The money sitting in card collateral accounts was the target, and that distinction matters more than the headline first suggests.

What The Rain Card Drain Actually Was

Rain is infrastructure. Several crypto card programs plug into it so customers can spend stablecoins without rebuilding the entire rails from scratch. When a user tops up a card, those coins usually leave the personal wallet and land in a collateral account controlled by onchain code. After that transfer, the security story changes. It is no longer only about your seed phrase. It is about the contract version, the authorization checks, and whether every deployment of that code was kept current.

On August 28, an attacker found an old version of that Solana card contract and started withdrawing. Security researchers later estimated the total near $1.1 million across more than one program. Two named providers later published their own numbers. Avici said $500,859.22 left 1,685 users. Tria said about $431,945 left 636 customers. Add those together and you get a little over $932,800. The remaining gap in the broader estimate appears to sit with other programs that used the same family of contracts.

I keep coming back to that split. Self-custodial wallets were left alone. The exploit sat one layer away from the user, in accounts that existed specifically so cards could be funded. That is a quieter kind of risk. People can do everything “right” with their personal keys and still lose the slice they parked for spending.

Why Shared Card Rails Concentrate Risk

Shared infrastructure is efficient. It is also a single point of pain. One contract pattern can sit under several consumer brands. If that pattern is sound, everyone benefits. If one version is stale, several programs can inherit the same hole at once.

Researchers said they found four deployments with the same opcode hash as the vulnerable contract. At least two were drained. The other two carried the same weakness, with no confirmed losses attached in public write-ups. That is an uncomfortable picture. Identical bytecode in production is convenient for shipping. It is also a reminder that “we use the same stack” is not a safety slogan by itself.

Once funds enter a card collateral contract, their safety depends on the provider’s code and the controls around it, not on the user’s hardware wallet sitting on a shelf.

Rain later said monitoring caught a vulnerability affecting a small number of programs still running an outdated version. It also said every program on that version was upgraded after the attack. That is the right operational move. It does not answer every follow-up. Why were older deployments still live. When did the flaw enter the code. Did any prior review flag the authorization path. Those questions are still sitting on the table.

The Signature Trick That Opened The Door

The vulnerable contract wanted two independent authorizations before certain account actions. On Solana, that kind of check often leans on Ed25519 verification instructions. In plain language, the program was supposed to see two separate signatures that did not collapse into one story.

According to the technical reconstruction shared by security researchers, the attacker manipulated the second verification instruction. Its signature, public key, and message offsets pointed back at data already present in the first instruction. The contract treated one attacker-controlled signature as two independent approvals. That is the whole trick. Ugly. Effective. Hard to spot if you only glance at the happy path.

After the check failed in the attacker’s favor, the next steps were almost administrative. An AddCollateralAdmin instruction granted privileges over individual accounts. Then WithdrawCollateralAsset moved USDC and USDT out. Researchers counted 2,945 administrator additions and 5,288 withdrawal calls. They also counted 8,233 core exploit transactions across roughly two hours and twenty-nine minutes.

The pace was not casual. The first two successful withdrawals landed three seconds apart. That usually means the operator arrived with scripts, target lists, and a plan for many accounts rather than a single lucky hit. Customers did not sign those malicious transfers. Phishing advice would not have saved them. The break happened in application logic.

I’ve found that people still mix up chain failure and app failure. Solana kept processing blocks. The network was not “down.” The attacker used application code deployed on that network. Same distinction we keep relearning after every large DeFi incident: the base layer can be fine while a contract is not.

Who Got Hit And Who Got Paid Back

Avici and Tria were the two programs that put customer figures in public. Combined, they described more than 2,321 affected users and more than $932,800 in drained card balances. Avici said it refunded everyone touched by the event and added a 10% cashback after the fact. Tria said affected customers were being reimbursed.

Solayer Pay was also named among exposed programs. A separately verified loss figure for that program was not sitting in the same public disclosures. That gap is why the $1.1 million estimate and the two detailed refund totals do not line up one-for-one. I would rather see a full deployment list than another round of rounded headlines. We do not have that list yet.

ProgramReported lossUsers citedPublic response
Avici$500,859.221,685Refunds plus 10% cashback
TriaAbout $431,945636Reimbursement underway
Other Rain-supported programsRemainder of ~$1.1M estimateNot fully broken outUpgrades reported

Tokens tied to the affected brands moved after the news. Avici’s token dropped as much as 49% from its session high and printed a reported low near $0.217 before a partial bounce. Tria’s token also slid more than 10% at one point. Market tape is messy. Broader conditions can shove prices around on the same day. Still, exploit headlines and sudden drawdowns tend to travel together, and this week was no exception.

Rain said affected users would be made whole. It did not spell out whether the infrastructure firm reimburses programs directly or whether each card brand carries the cost. From a customer’s chair, the practical question is simpler. Did the balance come back. So far the two most detailed programs say yes, or that the process is in motion.

Where The Stolen Coins Went Next

Withdrawn USDC and USDT piled into one Solana wallet: FVNFzqAny8spWdPmYw6RQ9TkYa29ueFFiqCFD1gQnCEj. From there the attacker swapped stablecoins into SOL on decentralized venues. The trail then left Solana for Ethereum through a cross-chain bridge. That hop is now a familiar chapter in theft write-ups. Bridges are useful. They are also a convenient hallway between ecosystems when someone wants distance from the original chain.

Researchers said about 455.9 ETH later entered Tornado Cash between 19:20 and 19:49 UTC. Mixers do what they are designed to do. Deposits go in. Withdrawals can come out on addresses that are not obviously glued to the sending wallets. After that point, public tracing gets thinner. No recovery of those mixed funds has been announced.

Two Ethereum addresses were linked to the early financing of the attacker’s Solana activity. Nobody in authority has publicly named the people behind those addresses. That is normal at this stage and still unsatisfying. Onchain maps can be precise about wallets and still silent about identities.

  • Stablecoins left card collateral accounts on Solana.
  • Funds collected in a single hot wallet.
  • Coins were swapped into SOL.
  • Value moved to Ethereum through a bridge.
  • A large ETH pile entered a mixer within minutes.

Perhaps the most interesting aspect is how ordinary each step looks in isolation. A swap is normal. A bridge transfer is normal. A mixer deposit is, unfortunately, also normal in theft cases. The sequence only becomes loud when you stack it on top of a two-hour withdrawal burst.

This Was Not A Solana Breakdown

Every few months a contract incident gets flattened into “the chain got hacked.” That shorthand is sloppy. Here the chain kept finalizing transactions. The failure lived in application rules that were supposed to demand two independent approvals and did not enforce that demand tightly enough.

That pattern is bigger than Rain. First-half 2026 security losses across crypto were estimated around $1.1 billion in one industry review. Card programs, lending markets, bridges, and vaults keep teaching the same lesson with different costumes. Networks can hum along while one piece of business logic quietly accepts the wrong proof.

In my experience, readers want a villain that is either “the blockchain” or “the user who clicked a bad link.” This case refuses both. Users did not authorize the withdrawals. The base layer did not collapse. The weak joint was an old contract still holding live collateral.

What Card Users Should Actually Change

I do not think the answer is “never use a crypto card.” Spending tools exist because people want them. The better move is to treat funded card balances as a working float, not a savings account.

  1. Keep only what you expect to spend soon inside card collateral.
  2. Leave the rest in a wallet you control, ideally with hardware isolation.
  3. Watch for official notices about contract upgrades after an incident.
  4. Ask whether a program can name the contract version securing deposits.
  5. Treat refunds as a recovery process, not proof that the design is finished.

That list is boring on purpose. Flashy advice sells. Float management is what would have reduced the blast radius for many of the 2,321 users already counted. If a card needs $200 this week, $200 is the amount that belongs in the collateral contract. The rest can wait.

There is also a product question hiding under the user question. Card issuers that rent shared rails need a version inventory. Which programs are on which bytecode. Who is allowed to add admins. How fast a stale deployment can be frozen. Periodic audits help. They are not a substitute for watching live contracts that hold other people’s dollars.

The Unfinished Questions Rain Still Owns

Rain confirmed the outdated contract and the upgrades. It has not published a full technical memoir. Missing pieces include the version history, the date the authorization flaw appeared, and a clear reason older deployments stayed active. It also has not said whether an audit saw that signature path before August 28.

I do not need a novel. A timeline would do. When the vulnerable code shipped. Which programs stayed on it. What monitoring alert fired first. How long the upgrade window lasted. Outside researchers can check similar bytecode elsewhere if those details exist in public. Without them, every neighboring card stack gets a rumor tax.

A one-time audit is a snapshot. Collateral contracts that sit in production need a camera that stays on.

Industry research has been drifting toward that view for a while. Institutions want continuous monitoring next to classic reviews, especially when user assets sit in reusable contracts. This incident is almost a case study written in advance. Four similar deployments. Two confirmed drains. A two-and-a-half-hour automated sweep. Then a bridge and a mixer. The plot is familiar because the incentives are familiar.

How This Fits A Rough Year For Application Security

The Rain drain is smaller than the ugly bridge and DeFi figures that dominated earlier headlines this year. Size is not the only lesson. Card products sit closer to everyday users than a specialized trading vault. People fund them to buy groceries, book a ride, or float a weekend. That makes the trust break feel personal even when the dollar total is “only” seven figures.

Compare the shape, not just the size. Faulty collateral logic has burned protocols before. Repeatedly vulnerable shared contracts have been hit more than once in other ecosystems. Cross-chain hops after a theft are now standard choreography. Mixer deposits remain the last public chapter more often than anyone in this industry likes to admit.

None of that means card infrastructure is doomed. It means the sales pitch cannot stop at “self-custodial until you spend.” The moment coins move into a funding contract, users have accepted a second security model. That model needs version discipline. It needs monitoring that notices an admin-addition storm in minutes, not after the mixer. It needs a habit of killing old deployments instead of leaving them funded because they still “work.”

A Practical Way To Read The Next Card Headline

When the next notice lands, I look for five things before I trust the first summary.

  • Did the attacker touch personal wallets or only program contracts.
  • Which exact contract version was live.
  • How many deployments shared that bytecode.
  • Whether refunds are coming from the brand, the infrastructure layer, or both.
  • Whether funds were traced past the first mixer deposit.

Those questions cut through panic copy. They also keep the story honest. A drained card float is serious. It is not the same event as a chain halt or a seed-phrase wipe. Mixing those categories helps nobody except the people who want a louder headline.

If you hold a Rain-powered card, the immediate checklist is short. Confirm whether your program was on the old contract. Confirm whether your balance was restored. Lower the idle float if the product still feels useful. If the product no longer feels useful, that is information too. Trust is a spending decision as much as a security decision.


The Quiet Lesson Under The $1.1 Million Figure

The number will be what people remember. $1.1 million is tidy enough to travel. The more durable point is narrower. An authorization check that was supposed to require two independent signatures accepted one. An old deployment was still funded. Scripts then did what scripts do when the door is open.

Rain says the affected programs were upgraded and that extra unauthorized activity stopped after those changes. The two most transparent card brands say customers are being made whole. Those are the constructive parts of the record. The thinner parts are the missing version history, the incomplete loss breakdown across every deployment, and the funds that entered a mixer and have not been shown coming back.

I’ll say this in ordinary language. If you treat a crypto card like a checking account, fund it like a checking account. Keep the grocery money there. Do not park the emergency fund in a contract whose admin path you cannot see. That advice would have sounded cautious on August 27. On September 3 it just sounds awake.

Shared card rails will keep growing because the product is convenient. Convenience is not the enemy. Untracked old contracts holding live collateral are the enemy. The Rain episode is another reminder that users can guard their own wallets and still inherit someone else’s unfinished upgrade. That is not a reason to panic. It is a reason to keep the float small, demand version answers, and read the next incident for the contract layer rather than the chain name in the headline.

And if a team ever publishes the full technical timeline this story still lacks, read that first. The signature offset trick is the mechanism. The stale deployment is the condition. The mixer is the exit. Everything else is commentary, including mine.

Cryptocurrencies are money reimagined, built for the Internet era.
— Cameron Winklevoss
Author

Steven Soarez passionately shares his financial expertise to help everyone better understand and master investing. Contact us for collaboration opportunities or sponsored article inquiries.

Related Articles

?>