-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
novaman33 - Lido withdraw limitation will brick the withdraw process in an edge case #14
Comments
1 comment(s) were left on this issue during the judging contest. 0xmystery commented:
|
Escalate, |
You've created a valid escalation! To remove the escalation from consideration: Delete your comment. You may delete or edit your escalation comment anytime before the 48-hour escalation window closes. After that, the escalation becomes final. |
It's found in the contest |
@mystery0x |
This is the It has a rescue function to retrieve the tokens. Also, can you send a link to |
@WangSecurity, |
Thank you for that clarifications. For the scenario about minimum withdrawal I would consider low, since the loss if 100 wei. But for the maximum is completely viable. I believe the high severity is appropriate here, since it will affect every whale investor in Notional and causes complete loss of funds. Planning to accept the escalation and validate with high severity. Are there any duplicates @novaman33 @mystery0x ? |
@WangSecurity believe it is solo. |
Result: |
Escalations have been resolved successfully! Escalation status:
|
This issue is resolved by removing the Lido stETH withdraw in favor of an ETH withdraw. |
The protocol team fixed this issue in the following PRs/commits: |
The Lead Senior Watson signed off on the fix. |
novaman33
High
Lido withdraw limitation will brick the withdraw process in an edge case
Summary
Lido protocol has limitation regarding the requestWithdraw function. However some of these limitation have not been considered in the
_initiateWithdrawImpl
leading to users being unable to claim their vault shares even after the cooldown.Vulnerability Detail
Lido has stated the following withdraw limitation in their docs:
Extracted from here( https://docs.lido.fi/contracts/withdrawal-queue-erc721#requestwithdrawals )
Consider the following scenario:
initiateWithdraw
. The withdraw will be initiated successfully and the rsETH to withdraw will be sent to the holder contract which is going to start the cooldown.triggerExtraStep
function which will always result in revert because of the Lido requirements regarding the amount to be withdrawn(mentioned in point 4).Impact
The user will experience a full DOS of the protocol. They will have a pending withdraw that will never finish, which will result in their funds being locked forever. They will not be able to liquidate or deposit because of the pending withdraw. The function
triggerExtraStep
will always revert and the tokens from Kelp will never be claimed, because of Lido's limitation. - HighCode Snippet
https://github.com/sherlock-audit/2024-06-leveraged-vaults/blob/14d3eaf0445c251c52c86ce88a84a3f5b9dfad94/leveraged-vaults-private/contracts/vaults/staking/protocols/Kelp.sol#L83
Tool used
Manual Review
Recommendation
Consider enforcing withdraw limitations so that if a user has more than the MAX_STETH_WITHDRAWAL_AMOUNT split it on two requests, or create deposit limitations.
The text was updated successfully, but these errors were encountered: