Closed sherlock-admin3 closed 6 months ago
This attack has no cost as in, assuming the user has the liquidity, he wont pay any extra. The liquidity is still accruing fees, not idle. It works on any pool.
The fix of using cached liquidity also requires adjusting tokenOwed, as explained before.
And do what? What is the attack here? He still can't exceed 2X
Increase the usd balance when the exposure cap was reached, so no deposits could be made, but the user wants to increase the balance, so he figures he can add liquidity to the pool and increase the usd balance up to 2x.
That is not an attack. No attack is possible since the total amount is capped. Again, the speed at which we reach the max amount does not matter. Since it could even be in one block via #18. There is no danger for the protocol when a user does that and it is not a disadvantage for other users.
So again, what is the attack?
Reducing the speed at which the max value can be reached (especially since there are ways to even bypass those reductions such as #18) does not make the protocol more or less risky.
So again, what is the attack?
Same as #18 but capped.
Up to you allowing attackers to manipulate variables as they please.
@0x73696d616f Please refrain to comment if asked here. @Thomas-Smets Thanks for your input.
When reviewing an issue, the escalation should serve as a additional to the main issue.
The main root of the issue is that the protocol should use cached liquidity. With the first comment, the sponsor shows that this is not true.
Then there is an escalation by watson who agrees with the sponsor and escalates exactly the opposite of what is written in the issue, but I have to look mainly at what is written in the issue. The other comments become redundant because the issue is invalid from the beginning.
Also, there is no specific impact or attack vector in the issue and the recommendation is also wrong.
Planning to reject the escalation and leave the issue as it is.
Agreed with @cvetanovv judgement. This issue is indeed invalid.
Result: Invalid Unique
0x73696d616f
medium
SlipstreamAM::_getFeeAmounts()
fetches the liquidity of the position, allowing the owner to increaseUSD
balance as it pleasesSummary
SlipstreamAM::_getFeeAmounts()
fetches the liquidity of position, instead of using the cached liquidity. Thus, users that have pending fees may increase the liquidity of their positions to instantly boost theUSD
value of their position, as it is pro-rata toliquidity
.Vulnerability Detail
SlipstreamAM::_getFeeAmounts()
gets the fees of a position using the actual liquidity of the position in the pool. This is not the case for other asset moduels such asWrappedAerodromeAM
, which uses the cachedtotalWrapped
. Due to the fact that fees are calculated pro-rata toliquidity
, this means that anyone may increase theUSD
value of an already depositedassetId
, which can serve several different purposes within the protocol and may be used to game it.Impact
Incosistent and silent increase of the
USD
value of an account up toprincipal0
andprincipal1
which may be used to game the protocol.Code Snippet
SlipstreamAM::_getFeeAmounts()` fetching the actual liquidity of a position instead of the cached one.
Tool used
Manual Review
Vscode
Recommendation
Use the cached liquidity to prevent abuse from
accounts
.