A security exploit in old smart contracts of the money market Dolomite resulted in a loss of approximately $1.8 million, blockchain security firm CertiK reported. The breach, which occurred on Mar. 20, involved an attacker manipulating a vulnerability in input validation to transfer funds from victims using the ‘transferFrom’ method. The drained funds were originally denominated in USD Coin (USDC) and were subsequently converted to Ether (ETH).
Dolomite’s team explained via an X post that only long-time users who interacted with its platform before 2020 were affected and a transaction has been submitted to disable the exploited contract from being called anymore.
The ”DolomiteMarginProtocol’, which retains the ability to transfer user assets, was at the center of the exploit. The attacker leveraged the fact that old users, known as ‘TraderDelegators’, had not revoked their approvals, allowing asset transfers to the DolomiteMarginProtocol address.
Moreover, the DolomiteMarginProtocol contract contains a ‘callFunction’ that permits arbitrary calls. This function is typically safeguarded by a ‘noEntry’ modifier, intended to be accessible only after a ‘singleEntry’ function is called.
However, the attacker circumvented this by interacting with the SoloMargin contract, which has a ‘call’ function that the attacker exploited to execute the desired operations and trigger ‘callFunction’ calls, thereby stealing assets from users who had approved the DolomiteMarginProtocol contract.