The withdrawNFT()
function currently does not check the withdrawalsPaused
flag, which can lead to unauthorized withdrawals of NFTs even when withdrawals are intended to be restricted.
The withdrawalsPaused
flag allow to pause withdrawals within the protocol.
This is enforced in functions such as withdraw()
that allows a user to withdraw reserve assets by burning RTokens
.
However, the absence of this check in the withdrawNFT()
function allows users to withdraw NFTs
regardless of the current state of withdrawals.
The function only checks if the contract is not paused via the whenNotPaused
modifier but does not check if withdrawals are paused.
This oversight can be exploited by malicious actors to drain NFTs from the contract.
If the withdrawalsPaused
flag is not enforced, it can result in:
Unauthorized withdrawal of NFTs.
Manual Review
Modify the withdrawNFT()
function to include a check for the withdrawalsPaused flag before allowing any withdrawals.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.