Withdrawals and Claims are meant to be pausable, but it is not possible in practice #569
Labels
2 (Med Risk)
Assets not at direct risk, but function/availability of the protocol could be impacted or leak value
bug
Something isn't working
edited-by-warden
M-02
primary issue
Highest quality submission among a set of duplicates
🤖_06_group
AI based duplicate group recommendation
satisfactory
satisfies C4 submission criteria; eligible for awards
selected for report
This submission will be included/highlighted in the audit report
sponsor confirmed
Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")
sufficient quality report
This report is of sufficient quality
Lines of code
https://github.com/code-423n4/2024-04-renzo/blob/main/contracts/Withdraw/WithdrawQueue.sol#L13
https://github.com/code-423n4/2024-04-renzo/blob/main/contracts/Withdraw/WithdrawQueue.sol#L206
https://github.com/code-423n4/2024-04-renzo/blob/main/contracts/Withdraw/WithdrawQueue.sol#L279
Vulnerability details
Impact
Administrator is not able to pause users' withdrawals and claims as expected.
Proof of Concept
The
WithdrawQueue
contract inheritsPausableUpgradable
to provide pausing capabilities to the administrator on users' withdrawals and claims.The contract correctly exposes the
_pause()
and_unpause()
internal functions through access restricted external functions.However, none of the functions implement the
whenNotPaused
modifier.This is especially problematic for user-accessible functions:
withdraw
andclaim
.Tools Used
Manual review
Recommended Mitigation Steps
Consider implementing
whenNotPaused
modifier onclaim
andwithdraw
functions.The following patch implements such a fix.
Note: The patch can be applied with
git apply
.Assessed type
Context
The text was updated successfully, but these errors were encountered: