Author | Asher (@Asher_0210)

On October 24, the Ethereum DeFi project X100 suffered a governance attack, resulting in the theft of approximately 4.85 million USDT. According to GMGN data, the market capitalization of the X token dropped from about $760 million before the attack to around $24 million, a single-day decline of over 96%.

The treasury, originally governed by three "Senate" seats, was compromised by a hacker who used a flash loan to acquire two of the seats. With majority control, the hacker submitted a malicious proposal and voted it through using the seats under their control, authorizing a transaction that transferred assets to themselves. After the initial attack succeeded, other attackers exploited the same governance mechanism to continue draining the project’s assets.
Next, Odaily Planet Daily will outline the entire process of this governance attack and the DAO governance security vulnerabilities exposed by the X100 incident.
Borrowed $1.94 million—how did the hacker secure two Senate seats?
The X100 treasury is managed by a three-member "Senate" called Senate, whose members vote on decisions such as selling treasury tokens and adding liquidity. A proposal passes and treasury assets can be moved if two out of the three seats are controlled. Holders can participate in the election by depositing project tokens X into the Freezer contract, selecting a lock-up period of one, three, or five years, and paying a registration fee of 100 X. The three seats are awarded in real time to the addresses with the highest current locked balances.
This mechanism does not limit a single controller from securing multiple seats through different addresses, nor does it impose a waiting period for governance rights to take effect. An attacker only needs to have the locked balances of two controlled addresses simultaneously rank in the top three to immediately gain a majority vote; approved proposals can be executed immediately, allowing seat acquisition and asset transfer to be completed in a single transaction.
Before the attack, the second-place address had frozen approximately 19,000 X. On October 24 at 22:11 UTC, the hacker borrowed approximately 1.94 million USDT via an Aave flash loan, purchased X, and distributed it to two auxiliary contracts to simultaneously freeze and campaign. Each contract froze 19,000.000001 X—just one millionth of a token more than the original second-place address—thereby securing both second and third places and displacing the original second-place holder from the governance list.
After gaining a majority vote, how do hackers get the vault assets into their own hands?
Two approval votes to sell 400,000 X at $35.68 from the treasury.
After securing two votes, the hacker immediately submitted a malicious proposal requiring the treasury to sell 400,000 X into a PancakeSwap V3 X/USDT pool created by themselves, setting the minimum received amount to zero, and then voted in favor using another controlled contract, resulting in the proposal passing with two votes and being executed immediately. According to GoPlus analysis, X100 allows governance proposals to specify trading pools but lacks effective minimum output protection. The hacker could determine where the treasury sold its tokens, set the transaction terms themselves, and approve the trade using their controlled majority votes.
The above pool was created by the hacker in a single transaction, with only about $100 of liquidity added. When the treasury sold 400,000 X into this pool, it could only receive a small amount of USDT, and since the minimum received amount was set to zero, the transaction did not fail due to insufficient return. Ultimately, the treasury surrendered 400,000 X and received only about $35.68 in return. The hacker then withdrew their liquidity from the self-created pool, reclaimed the X tokens, and sold a portion of them into the existing Uniswap V3 X/USDT trading pool to obtain USDT. After repaying the flash loan and other expenses, the first hacker profited approximately 4.75 million USDT.
From borrowing coins to securing seats, approving the treasury to sell coins at a low price, and cashing out to repay the loan—all completed in a single transaction. The tokens handed over by the treasury became the hacker’s means of cashing out, while USDT from the real trading pool was used to repay the loan and converted into attack profits.
Subsequent attacks occurred; where did the stolen funds go?
Approximately 24 minutes after the first attack, a second hacker used a flash loan to seize two governance seats again, removed part of Freezer’s Uniswap V3 liquidity positions, and continued transferring assets via a self-built trading pool, acquiring approximately 96,400 USDT. About five minutes later, a third wallet exploited an auxiliary contract left by the second hacker—without access restrictions—to directly borrow its governance seats and pass a proposal, transferring approximately 550,000 X. The first two attacks resulted in a total loss of approximately 4.85 million USDT, while the third attack saw an additional 550,000 X transferred; all three attacks occurred within less than half an hour.
According to Bitquery tracking, the first hacker converted the primary 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 an intermediary address to ChangeNOW, with the entire transfer taking about 21 minutes.
Once governance rights are compromised, asset transfers rapidly evolve from a single attack by the first hacker to a chain of withdrawals involving multiple wallets. Subsequent participants can continue transferring assets without needing to repurchase tokens to recontest governance.
The on-chain world where the cost of governance attacks is decreasing
X100 is not an isolated case; governance attacks do not necessarily require attackers to invest large sums of money in advance. Attackers can acquire voting rights by purchasing tokens, exploit low proposal thresholds to find opportunities, and use flash loans to borrow funds for governance takeovers.
This year, similar governance attacks have caused substantial losses multiple times. In July, the Bonk DAO attacker spent approximately $4.09 million to acquire tokens representing 1.003% of the supply—just exceeding the governance approval threshold—then passed a malicious proposal to transfer about $20.5 million in assets, and reclaimed their staked tokens after the vote concluded. In August, Term Finance suffered a governance attack resulting in losses of approximately $8.5 million. Even though millions of dollars may be required to purchase voting power, this amount may not represent the attacker’s final cost.
The threshold for some attempted attacks is as low as a few hundred dollars. In March of this year, the Moonwell attacker spent only about $1,808 to purchase MFAM and self-delegate, then submitted a malicious proposal attempting to gain control over seven lending markets and core contracts involving approximately $1.08 million in user funds. In September, the Olas attacker spent just about $135 to lock up 5,100 OLAS, surpassing the proposal threshold. Although both attacks were intercepted, they demonstrate that attackers do not necessarily need to hold a majority of votes—merely qualifying to submit a proposal can create an opportunity for attack.
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, resulting in an estimated loss of approximately $1.09 million.
Voting rights can be borrowed, and assets can be transferred once voting passes. When control of the treasury can be so easily transferred, who is truly protected by so-called decentralized governance?



