BTC
ETH
HTX
SOL
BNB
View Market
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt

Flash Loan Secures Two Governance Seats: What Does the X100 Exploit Teach the Industry?

Asher
Odaily资深作者
@Asher_0210
This article is about 2434 words, reading the full article takes about 4 minutes
The vault wasn't cracked—only the people guarding it were replaced by hackers.
AI Summary
Expand
  • Core Viewpoint: The X100 project suffered from severe flaws in its DAO governance mechanism. Hackers used flash loans to borrow funds and seize governance seats, then used malicious proposals to transfer vault assets at low prices, causing approximately 4.85 million USDT in losses in a single day and sending the X token crashing over 96%, exposing systemic security risks in decentralized governance.
  • Key Elements:
    1. The X100 vault is managed by a three-seat "Senate," with no waiting period for governance power to take effect. The same controller can seize seats through multiple addresses, and proposals are executed immediately after passage.
    2. The hacker borrowed approximately 1.94 million USDT via flash loan to purchase X tokens, seizing two seats with a frozen balance exceeding the threshold by only one-millionth of a token. They then passed a malicious proposal in the same transaction, selling 400,000 X for approximately $35.68.
    3. About 24 minutes after the first attack, a second hacker exploited the same mechanism to seize two more seats, profiting approximately 96,400 USDT. A third attacker used the second hacker's auxiliary contract to directly transfer approximately 550,000 X. All three attacks were completed within half an hour.
    4. Similar governance attacks have occurred frequently this year: Bonk DAO lost approximately $20.5 million, Term Finance lost approximately $8.5 million, and Arkadiko lost approximately $1.09 million.
    5. Some attempted attacks had extremely low barriers to entry—the Moonwell attacker spent only about $1,808, and the Olas attacker spent only about $135 to reach the proposal threshold, demonstrating that attackers don't need a majority of votes—merely obtaining proposal eligibility is enough to create an attack opportunity.

Original | Odaily (@OdailyChina)

Author | Asher (@Asher_0210)

On October 24, the Ethereum DeFi project X100 suffered a governance attack, with approximately 4.85 million USDT stolen. According to GMGN data, the market cap of the X token fell from approximately $760 million before the attack to approximately $24 million, a single-day drop of over 96%.

The treasury, originally managed jointly by three "Senate" seats, was seized by a hacker who used flash loan funds to take two of the three seats. Armed with a majority vote, the hacker submitted a malicious proposal, then used the seats under their control to vote it through, causing the treasury to approve a transaction that funneled assets to the attacker. After the first attack succeeded, other attackers exploited the same governance mechanism in succession, continuing to drain the project's assets.

Below, Odaily will walk through the entire governance attack and the DAO governance security risks exposed by the X100 incident.

Borrowing $1.94 Million: How the Hacker Captured Two "Senate" Seats

X100's treasury is managed by a three-seat "Senate" called Senate, whose members vote to decide on selling treasury tokens, deploying liquidity, and other operations. Controlling just two of the seats is enough to pass proposals and move treasury assets. Holders deposit the project token X into the Freezer contract, choose to lock it for one, three, or five years, and pay a 100 X registration fee to run for a seat. The three seats are ranked in real time by the current frozen balance of the candidate addresses, with the top three gaining governance rights.

This mechanism neither prevents the same controller from securing seats through multiple addresses nor imposes a waiting period before governance rights take effect. An attacker only needs two controlled addresses to simultaneously enter the top three by frozen balance to immediately gain a majority vote; approved proposals can also be executed immediately, allowing seat capture and asset transfer to be completed in the same transaction.

Before the attack, the second-seat address had approximately 19,000 X frozen. At 22:11 on October 24, the hacker borrowed approximately 1.94 million USDT via an Aave flash loan, purchased X, and distributed it to two auxiliary contracts to complete the freezing and candidacy procedures separately. Each contract froze 19,000.000001 X — just one-millionth of a token more than the original second seat — simultaneously occupying the second and third seats and pushing the original second seat off the governance list.

Having secured the majority vote, how did the hacker funnel the treasury's assets into their own hands?

Two Yes Votes: How the Treasury Sold 400,000 X for $35.68

After securing the two seats, the hacker immediately submitted a malicious proposal requiring the treasury to sell 400,000 X into a PancakeSwap V3 X/USDT pool they had created themselves, with the minimum receive amount set to zero, then used another controlled contract to vote in favor, securing two votes to pass the proposal and execute it immediately. According to GoPlus's analysis, X100 allows governance proposals to specify the trading pool but lacks effective minimum transaction amount protection. The hacker could both decide where the treasury sold tokens and set the transaction terms themselves, then use their majority vote to approve the transaction.

The aforementioned pool was created by the hacker in the same transaction, with only about $100 of liquidity injected. When the treasury sold 400,000 X into it, the pool could only pay a small amount of USDT, and since the minimum receive amount was zero, the transaction did not fail due to insufficient return. Ultimately, the treasury handed over 400,000 X in exchange for only about $35.68. The hacker then withdrew the liquidity from the self-created pool, recovered the X, and sold some of the tokens into the existing Uniswap V3 X/USDT trading pool for USDT. After repaying the flash loan and other expenses, the first hacker profited approximately 4.75 million USDT.

From borrowing funds to buy tokens and seizing seats, to approving the treasury's low-price token sale and cashing out to repay the loan, everything was completed in the same transaction. The tokens the treasury handed over became the hacker's cash-out筹码, while USDT in the real trading pool was used to repay the loan and converted into attack profits.

Subsequent Attacks Followed: Where Did the Stolen Funds Go?

About 24 minutes after the first attack, a second hacker again seized two governance seats via flash loan, removed some of the Uniswap V3 liquidity positions held by Freezer, and continued to drain assets using a self-created trading pool, obtaining approximately 96,400 USDT. About five minutes later, a third wallet exploited an auxiliary contract left by the second hacker that did not restrict callers, directly borrowing its governance seat to pass a proposal and transfer out approximately 550,000 X. The first two attacks caused a total loss of approximately 4.85 million USDT, and the third attack transferred out another approximately 550,000 X — all three attacks occurred within less than half an hour.

According to Bitquery's tracking, the first hacker converted the main USDT proceeds into ETH within minutes of the attack, then dispersed them across five wallets totaling approximately 2,022.86 ETH. The second hacker converted USDT into ETH and routed it through intermediary addresses to ChangeNOW, with the entire transfer process taking about 21 minutes.

Once governance authority is compromised, asset transfers quickly escalate from the first hacker's single attack to a series of drains involving multiple wallets in succession. Later participants did not even need to buy tokens and run for seats again — they could simply use existing authority to continue moving assets out.

The On-Chain World Where Governance Attacks Cost Less and Less

X100 is not an isolated case, and governance attacks do not necessarily require hackers to invest large sums upfront. Attackers can either buy tokens to obtain voting rights or exploit low proposal thresholds to find opportunities, while flash loans allow borrowed funds to participate in governance power grabs.

Since the beginning of this year, similar governance attacks have repeatedly caused major losses. In July, the Bonk DAO attacker spent approximately $4.09 million to buy tokens representing 1.003% of supply — just above the governance approval threshold — then drained approximately $20.5 million in assets through a malicious proposal and even recovered the staked tokens after voting ended. In August, Term Finance lost approximately $8.5 million to a governance attack. Even if millions of dollars are needed to buy voting rights, that money may not be the attacker's ultimate cost.

Some failed attacks had thresholds of only a few hundred dollars. In March this year, the Moonwell attacker spent only about $1,808 to buy MFAM and self-delegate, then submitted a malicious proposal attempting to gain management rights over seven lending markets and core contracts involving approximately $1.08 million in user funds. In September, the Olas attacker spent only about $135 to lock 5,100 OLAS, surpassing the proposal threshold. Although both attacks were intercepted, they demonstrate that attackers do not necessarily need a majority vote — merely obtaining proposal eligibility can create attack opportunities.

On October 22, Arkadiko also suffered a governance attack. The attacker purchased enough DIKO to single-handedly vote through a proposal introducing a malicious contract, with no opposing votes during the process, resulting in an estimated loss of approximately $1.09 million.

Governance rights can be borrowed, and once a vote passes, assets can be moved out. When control of the treasury changes hands this easily, who can so-called decentralized governance actually protect?

Safety
DeFi
Welcome to Join Odaily Official Community