sherlock-audit / 2023-06-real-wagmi-judging

3 stars 2 forks source link

ash - Flash Loan Attack Vulnerability in _withdraw() Function #187

Closed sherlock-admin closed 1 year ago

sherlock-admin commented 1 year ago

ash

high

Flash Loan Attack Vulnerability in _withdraw() Function

Summary

The _withdraw() function is vulnerable to a flash loan attack due to its reliance on the _totalSupply parameter for performing calculations during the withdrawal process.

Vulnerability Detail

The _withdraw() function calculates the amount of liquidity to withdraw based on the ratio of the user's LP tokens (lpAmount) to the total supply of LP tokens (_totalSupply). However, this dependence on the _totalSupply parameter makes the function susceptible to manipulation during a flash loan attack. An attacker can borrow a large amount of tokens, manipulate the _totalSupply value, and exploit the calculations to their advantage.

Impact

If an attacker successfully executes a flash loan attack, they can manipulate the _totalSupply parameter and obtain unintended advantages during the withdrawal process. This can result in inaccurate fee calculations, improper token balance adjustments, and potential financial losses for the protocol or other users.

Code Snippet

https://github.com/sherlock-audit/2023-06-real-wagmi/blob/82a234a5c2c1fc1921c63265a9349b71d84675c4/concentrator/contracts/Multipool.sol#L488-L544

Tool used

Manual Review

Recommendation

To address the flash loan attack vulnerability, the following recommendations are suggested:

Implement additional checks and safeguards in the withdrawal process to validate the _totalSupply against expected values.