BlockBeats news, September 11: SlowMist tweeted that ether.fi suffered an attack, with losses of approximately 15.45 ETH.
According to analysis, the root cause lies in the lack of access control in the solve() function of the AtomicQueue contract for the solver parameter passed in by the caller. There is neither a check for solver == msg.sender nor any signature, registration, or authorization verification. The attacker first constructs a malicious AtomicRequest through the updateAtomicRequest() function, then forces the victim's address to act as the solver. AtomicQueue then calls finishSolve on the victim's address and executes want.transferFrom(solver, users[i], assetsToUser), exploiting the ERC-20 allowance previously granted by the victim to steal funds.

