sherlock-audit / 2024-08-saffron-finance-judging

9 stars 5 forks source link

SyncCode2017 - Transactions calling `LidoVault::finalizeVaultOngoingFixedWithdrawals` will fail if one of the requests for withdrawals to Lido reverts causing funds being stuck (DoS). #166

Open sherlock-admin3 opened 2 months ago

sherlock-admin3 commented 2 months ago

SyncCode2017

Medium

Transactions calling LidoVault::finalizeVaultOngoingFixedWithdrawals will fail if one of the requests for withdrawals to Lido reverts causing funds being stuck (DoS).

Summary

When a user calls LidoVault::finalizeVaultOngoingFixedWithdrawals all the queued requests are sent individually in a loop to Lido. So a long loop of requests is expected to be processed in this one transaction as shown below.

https://github.com/sherlock-audit/2024-08-saffron-finance/blob/main/lido-fiv/contracts/LidoVault.sol#L1174

If one of the requests reverts the transaction fails. Causing funds to be stuck in the protocol.

Root Cause

Using a user's transaction to send all the queued requests for withdrawal to Lido.

Internal pre-conditions

No response

External pre-conditions

No response

Attack Path

No response

Impact

All users with queued requests for withdrawal from an ongoing vault will have their funds stuck.

PoC

No response

Mitigation

Refactor LidoVault::_claimWithdrawals to send only msg.sender request or use try-and-catch block to send transactions to Lido.