Skip to content
Abstract illustration of a flash loan pool manipulation: two teal stablecoin streams share one tilted basin while a looping bright pulse skews their balance and red value drains across a dark gap to a distant chain node, over dark circuitry.
exploitsJuly 21, 20263 min read

Allbridge Core $1.65M Exploit: A 2023 Flash Loan Fix That Missed Solana

Dmitry Serdyuk
Dmitry SerdyukCo-Founder & CDO

Updated on July 21, 2026

TL;DR

On Sunday, July 19, 2026, an attacker drained roughly $1.65 million from Allbridge Core's Solana stablecoin pools using a flash loan to distort the pool's internal pricing, then bridged the proceeds to Ethereum. The method was a textbook flash loan pool manipulation: borrow a large sum, swap it back and forth inside a two-token pool to skew the ratio the pool prices against, withdraw at the skewed rate, repay the loan in the same transaction. Allbridge paused Core and asked liquidity providers to withdraw. The uncomfortable part is the history. In 2023, after a nearly identical attack on its BNB Chain pools, Allbridge published a postmortem and committed to a specific structural fix: one liquidity pool per blockchain, so there would be no second token to swap against. That fix held on BNB Chain and did not hold on Solana, where USDC and USDT sat in the same pool. A remediation that lives in one deployment's configuration and not in the protocol's invariants is a promise, not a control.


What Happened to Allbridge Core?

Allbridge is a cross-chain bridge. Its Core product moves native stablecoins such as USDC and USDT between chains that do not talk to each other, using liquidity pools on each side rather than minting wrapped tokens. On July 19, the team posted that Core was "experiencing a security incident" and that it had "paused the protocol as a precaution," telling anyone with liquidity in affected pools to withdraw immediately.

Security firms put the loss at about $1.65 million. That figure comes from PeckShield and CertiK, while on-chain analytics account Onchain Lens traced more than $1.1 million in confirmed on-chain proceeds. The two numbers have not been reconciled, and the gap between them matters, which I come back to below. The stolen funds were bridged from Solana to an Ethereum address and then dispersed, with CertiK naming the destination as 0x651591b68A9c9650FB23F642162353306281ffDe before the funds fanned out further.

This is the second time Allbridge has been caught by this exact class of attack. The first was in 2023, and the protocol told the world it had fixed it.


How Did the Flash Loan Exploit Work?

Two primitives do all the work here, and neither is exotic.

A flash loan is a loan you take and repay inside a single blockchain transaction. Because the repayment is enforced atomically, no collateral is needed: if the borrower fails to return the funds by the end of the transaction, every step reverts and the lender is made whole. Flash loans are a legitimate DeFi tool. They are also a capital cannon for moving a market for the length of one transaction.

The second primitive is how Allbridge Core priced withdrawals. Like most automated market makers, Core did not read an external price feed. It priced assets off its own pool balances, the on-chain ratio between the two stablecoins it held. Skew that ratio and you skew the price the pool will pay you. There was no external oracle sitting alongside the pool to disagree with it (nothing to veto the lie the balances were telling).

Put those together and the attack writes itself. The attacker borrowed $1.12 million in USDC from Kamino, a Solana-native lending protocol, as a flash loan. They ran a rapid series of USDC-to-USDT swaps inside Core's Solana pool, deliberately distorting the ratio between the two stablecoins. Once the pool was mispriced badly enough, the attacker swapped a small amount of USDT back for a large amount of USDC at the artificial rate, about $2.24 million in USDC moving through the bridge, then repaid the Kamino loan and kept the difference. All of it settled in one atomic transaction. There was no window in which a human could intervene.

The Attack, Step by Step

StepActionEffect
1Borrow $1.12M USDC from Kamino as a flash loanAttacker holds attack capital, must repay same transaction
2Swap USDC and USDT repeatedly inside Allbridge Core's Solana poolInternal USDC/USDT ratio distorted away from 1:1
3Withdraw at the manipulated rateSmall USDT input converts to roughly $2.24M USDC out
4Repay the Kamino flash loanLoan closed, transaction stays valid, spread kept as profit
5Bridge proceeds Solana to Ethereum, then disperseFunds land at an Ethereum address, fan out, some routed into privacy pools

Because the borrow and the repay bracket every other step inside one transaction, the whole sequence is a single indivisible event on-chain. That is what makes flash loan manipulation hard to stop reactively: by the time the imbalance is visible in a block explorer, the money has already left.

The public figures do not cleanly reconcile. The roughly $2.24 million is gross USDC routed through the bridge, not the attacker's net take, since the $1.12 million Kamino loan had to be repaid out of it. PeckShield and CertiK put the loss near $1.65 million; Onchain Lens traced a little over $1.1 million on-chain. The traced figure is close to what the borrow-and-withdraw math leaves after repayment, while the $1.65 million reads as the higher estimate of total pool damage. Allbridge has not reconciled them, so treat the take as a range, roughly $1.1 million to $1.65 million, not a settled number.

rendering diagram…

Why Did Allbridge's 2023 Fix Not Stop This?

Allbridge had seen this movie before. On the night of April 1 to 2, 2023, an attacker drained roughly $570,000 from Core's BNB Chain pools, about $282,889 in BUSD and $290,868 in USDT, by playing both liquidity provider and swapper to manipulate the pool's swap price. The mechanism was the same one used on Solana in 2026: distort a two-token pool's internal ratio, then withdraw against the distortion. Allbridge later recovered about 1,500 BNB, worth around $465,000 at the time, through a white-hat bounty arrangement, and paused to redesign.

The redesign was public and specific. In its May 2023 relaunch post, Allbridge laid out several changes: virtual vUSD accounting fully backed by deposited stablecoins, withdrawals capped at the amount of LP tokens burned, an automatic shutdown if a stablecoin lost its peg or a pool grew severely imbalanced, and a "Rebalancer Authority" emergency account. But the post was explicit that the primary defense against flash loan attacks was one measure above the others, filed under the heading "One asset per chain": deploy a single liquidity pool per blockchain, so that "it will not be possible to execute an exploit in a single transaction."

A single-token pool leaves no second stablecoin to swap against. No second token means no ratio to distort, which means the manipulation step has nothing to grab. That control worked, on BNB Chain.

It did not exist on Solana. The 2026 attack succeeded because Core's Solana deployment held USDC and USDT together in one pool, exactly the multi-stablecoin configuration the 2023 fix was meant to eliminate. Public reporting has not pinned down why. Either the Solana pool was added or expanded to hold both tokens after the 2023 postmortem without the single-pool constraint being applied, or the constraint was interpreted differently for Solana than for the EVM chains. Both readings land in the same place: a security commitment enforced on one chain was never enforced protocol-wide. The postmortem was three years old, and somewhere in the interval the one-pool rule stopped being an invariant and became a per-chain habit.

The Solana pools also appear to have lacked the more standard defenses against this class. A time-weighted average price feed forces any manipulation to survive across multiple blocks instead of a single transaction, which makes an atomic flash loan attack prohibitively expensive. A circuit breaker that halts a pool when its internal ratio deviates past a threshold is a second line. Allbridge itself had promised an "automatic shutdown" on severe imbalance back in 2023. On the Solana pools, none of it fired in time.


The Real Hole: A Fix That Was Never an Invariant

Allbridge understood flash loan manipulation. It saw the attack in detail in 2023, wrote it up, and designed a control that neutralizes it. What it never did was promote that control from the deployment it was born on to a rule the protocol enforces everywhere it runs.

The pattern generalizes well past bridges. A postmortem produces a fix. The fix gets applied to the contract that was exploited, on the chain where it happened. Then the protocol expands: new chains, new pools, new deployments, often months or years later. Unless the fix is encoded as an invariant that every new deployment must satisfy, and unless something actually checks that invariant at deploy time, the remediation quietly rots into folklore. The team believes it is protected because it remembers fixing the problem. The new deployment was never told.

An audit certifies the code you showed it, on the day you showed it. It does not follow your protocol onto a chain you deploy to eighteen months later and confirm that the pool you spun up there still honors the constraint your last postmortem promised. That gap between "we fixed this once" and "this fix holds on every deployment, today" is where Allbridge lost $1.65 million.

We saw the same shape in reserve and price manipulation incidents across DeFi: the vulnerable primitive is well understood, the fix is known, and the loss happens anyway because the fix was applied narrowly while the attack surface grew. Enforcing that known fix on every deployment that inherits the risk is the part that keeps getting skipped.


What Should Operators Take From This?

  1. Turn every past-incident fix into a deploy-time invariant. If your postmortem produced a rule ("one pool per chain," "no unbounded approvals," "oracle must be TWAP"), write it as a check that fails a deployment when violated, not a paragraph in a Medium post. A remediation that depends on human memory across three years and multiple chains will eventually meet a deployment that never got the memo.

  2. Price against something the attacker cannot move for free. Internal-ratio pricing with no external reference is manipulable by anyone who can supply enough capital for one transaction, and flash loans make that capital nearly free. A time-weighted feed or an external oracle cross-check forces manipulation to persist across blocks, which is where the economics stop working for the attacker.

  3. Put a circuit breaker on pool imbalance and wire it to alerts. Allbridge promised an automatic shutdown on severe imbalance in 2023. A ratio deviation past a set threshold should pause the pool and page a human on the first distorting swaps, before the withdrawal, not after the funds have bridged out.

  4. Monitor your live deployments for the invariant, not just for transactions. Runtime monitoring cannot reverse an atomic flash loan, and it is dishonest to pretend it stops one mid-flight. What it can do here is watch the standing configuration. A Solana pool sitting live with two swappable stablecoins violated the one-pool rule from the moment it went up, and stayed that way for as long as it existed. A monitor that alerts when any live pool contradicts a past-incident rule turns that silent gap into a page days before an attacker ever finds it.

  5. Treat multi-chain expansion as new attack surface, not a copy-paste. Each new chain is a fresh deployment with its own configuration and its own chance to omit a hard-won fix. Re-run the incident checklist against every chain you are live on, not just the one where the incident happened.

An audit had already identified this class of bug in 2023, so deeper code review was not the missing piece. The gap was that the remediation was never enforced as an invariant on the Solana deployment, no on-chain circuit breaker halted the pool, and no monitor had flagged that the live deployment violated a rule the team had already committed to. That is a deployment-governance and monitoring problem more than a fresh-audit one, and it is worth being honest about which layer would actually have helped.


Where Does This Leave Allbridge?

Core remains paused, and as of this reporting Allbridge had not published a full technical postmortem or given a restart timeline. The team has said it is preparing a detailed breakdown and intends to relaunch Core without liquidity pools, which would remove the manipulable primitive entirely.

Recovery is harder this time than in 2023. The BNB Chain funds stayed on one chain and were largely returned through a bounty. The 2026 proceeds have already been bridged to Ethereum and fragmented across addresses, with on-chain analysts reporting routing into privacy pools. Allbridge has asked traders who profited from the temporary arbitrage window the manipulation opened to return funds, saying the money would "go directly toward compensating affected LPs" and that its goal is to return all affected funds. How much comes back depends on tracing the bridged funds and on whether those traders cooperate. Neither is guaranteed.


Frequently Asked Questions

How much did Allbridge lose in the July 2026 exploit? Security firms PeckShield and CertiK estimated the loss at about $1.65 million. On-chain analytics account Onchain Lens traced more than $1.1 million in confirmed proceeds. Allbridge has not reconciled the two figures publicly, so the $1.65 million is best read as the security firms' estimate and the roughly $1.1 million as the traced on-chain floor.

Was this a smart contract bug or a design flaw? Neither in the usual sense. The contract behaved as written. The loss came from a design decision, pricing withdrawals off a manipulable internal pool ratio with two swappable tokens in one pool, combined with the failure to apply the 2023 one-pool remediation to the Solana deployment. The exploit class was known and previously fixed elsewhere.

Would a security audit have prevented this? An audit would have flagged the flash loan manipulation class, and in 2023 the equivalent issue was understood and remediated. The problem in 2026 was that the fix was not enforced as an invariant across the Solana deployment, and no runtime monitoring or circuit breaker caught the pool imbalance as it formed. This is closer to a deployment-governance and monitoring gap than a missing audit finding.

How is this different from the 2023 Allbridge exploit? The mechanism is the same flash loan pool manipulation. The 2023 attack hit BNB Chain for roughly $570,000 and stayed on one chain, and most funds were recovered through a white-hat bounty. The 2026 attack hit Solana for about $1.65 million and the funds were bridged to Ethereum and dispersed, which makes recovery materially harder.

What can other protocols do to avoid this? Encode past-incident fixes as deploy-time invariants checked on every chain, avoid pricing withdrawals off a manipulable internal ratio without an external or time-weighted reference, add a circuit breaker on pool imbalance wired to alerts, and monitor live deployments so a pool that violates a past-incident rule is flagged before it is exploited.


Sources / References

Dmitry Serdyuk
Dmitry Serdyuk

Co-Founder & CDO

Full-Stack Operator | Building across security, AI, and digital infrastructure.