KelpDAO, dTrinity, and DBXen Exploits: $290M+ Lost to Validator Compromise, Flash Loan Manipulation, and msg.sender Flaws
In Brief
KelpDAO lost $290M due to compromised validators.
dTRINITY lost $257K after flash loan fee manipulation inflated the liquidity index.
DBXen lost $149K due to a msg.sender/_msgSender() inconsistency.
Hacks Analysis
KelpDAO | Amount Lost: $290M
On April 18th, the KelpDAO exploit on Ethereum mainnet resulted in a $290M loss. The root cause of the exploit was the compromise of validators and the lack of multiple validators to approve cross-chain messages (LayerZero Labs was sole verifier). After compromising two validators, the attacker was able to mint ~116,500 rsETH without any collateral. The exploit impacted multiple protocols that accepted rsETH as collateral.
On March 17th, the dTRINITY dLEND exploit on Ethereum mainnet resulted in a $257K loss. The root cause of the exploit was a flaw in how the protocol calculated collateral value when very few tokens were supplied to the cbBTC market. The protocol used a liquidity index to track earned fees and determine collateral value. Because the total supply was extremely small, the attacker was able to increase the index by repeatedly taking and repaying flash loans to generate fees. This made the attacker’s position appear more valuable than it actually was. The attacker first reduced the supply and became the only supplier, then inflated the index through flash loans, and finally borrowed 257,328 dUSD against the inflated value and made a profit.
On March 11th, the DBXen exploit on Ethereum mainnet resulted in a $149K loss. The root cause of the exploit was an inadvertent mixing of msg.sender and _msgSender() when claiming rewards. The protocol lets users burn XEN tokens in cycles to earn DBXen rewards, tracked through accCycleBatchesBurned and lastActiveCycle. In burnBatch(), burned batches were credited to the user via _msgSender(). However, lastActiveCycle was updated using msg.sender, which pointed to the forwarder. This left the attacker’s lastActiveCycle unchanged. When calling claimRewards(), the contract treated the rewards as unclaimed. The attacker was able to repeatedly claim rewards from a single burn and make a profit.
The rich text element allows you to create and format headings, paragraphs, blockquotes, images, and video all in one place instead of having to add and format them individually. Just double-click and easily create content.
A rich text element can be used with static or dynamic content. For static content, just drop it into any page and begin editing. For dynamic content, add a rich text field to any collection and then connect a rich text element to that field in the settings panel. Voila!
Headings, paragraphs, blockquotes, figures, images, and figure captions can all be styled after a class is added to the rich text element using the "When inside of" nested selector system.
Follow-up: Conduct a follow-up review to ensure that the remediation steps were effective and that the smart contract is now secure.
Follow-up: Conduct a follow-up review to ensure that the remediation steps were effective and that the smart contract is now secure.
In Brief
Remitano suffered a $2.7M loss due to a private key compromise.
GAMBL’s recommendation system was exploited.
DAppSocial lost $530K due to a logic vulnerability.
Rocketswap’s private keys were inadvertently deployed on the server.
Hacks
Hacks Analysis
Huobi | Amount Lost: $8M
On September 24th, the Huobi Global exploit on the Ethereum Mainnet resulted in a $8 million loss due to the compromise of private keys. The attacker executed the attack in a single transaction by sending 4,999 ETH to a malicious contract. The attacker then created a second malicious contract and transferred 1,001 ETH to this new contract. Huobi has since confirmed that they have identified the attacker and has extended an offer of a 5% white hat bounty reward if the funds are returned to the exchange.