CrossCurve, FutureSwapX, and JFIN Lose Over $1.9M to Preventable Exploits
In Brief
CrossCurve lost $1.4M due to missing access control checks.
JFIN lost $15K because of a double counting error for reward calculation.
FutureSwapX lost $500K after flash-loaned tokens were counted as voting power.
Hacks Analysis
CrossCurve | Amount Lost: $1.4M
On February 1st, the CrossCurve exploit across multiple chains resulted in a $1.4M loss. The root cause was a missing access control check in the expressExecute() function of the cross-chain receiver contract. This function executed messages without verifying that they were authorized by the Axelar Gateway. The only validation was that a commandId had not been used before. This allowed anyone to generate a fresh commandId and call expressExecute() directly. The attacker supplied arbitrary source chain data and a crafted ABI-encoded payload. The contract trusted this input and executed internal logic. This allowed the attacker to transfer tokens to their own wallet.
On December 20th, the JFIN exploit on the Ethereum mainnet resulted in a $15K loss. The root cause of the exploit was a reward calculation error (double counting) in the JFIN LCBridgev2Token contract’s stake() function. Before updating a user’s stake, the contract added getReward(account) to debtReward. However, getReward() already included the existing debtReward. This caused the old debt to be counted twice. By repeatedly calling stake() with 1 WEI, an attacker inflated debtReward. The attacker then called claimReward() to withdraw the inflated balance.
On December 14th, the FutureSwapX exploit on the Ethereum mainnet resulted in a $500K loss. The root cause of the exploit was a voting logic vulnerability that allowed flashloaned tokens to be counted as voting power. The attacker first flash loaned 3.6M FST tokens and created a proposal in the same transaction. FutureSwap’s Governance contract recorded the attacker’s inflated balance. The attacker then voted using the recorded snapshot balance. After voting, the flash loan was repaid. The proposal passed with artificial voting power, allowing the attacker to drain funds.
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.