Core Contracts

Regnum Aurum Acquisition Corp
HardhatReal World AssetsNFT
77,280 USDC
View results
Submission Details
Severity: high
Valid

Permanent lockup of crvUSD tokens in RAACNFT contract

Summary

The RAACNFT contract permanently locks crvUSD tokens sent during minting with no withdrawal mechanism.

Vulnerability Details

When users mint NFTs, they send crvUSD tokens to the contract:

token.safeTransferFrom(msg.sender, address(this), _amount);

However, the contract has:

  • No function to withdraw these tokens

  • No way to recover locked funds

  • No burning mechanism that returns tokens

Impact

  • All crvUSD tokens sent to contract become permanently locked

  • Loss of user funds

  • Protocol value becomes inaccessible

  • HIGH severity due to permanent fund lockup

Tools Used

Manual Review

Recommendations

Add withdrawal functionality for the protocol:

function withdrawTokens(address to, uint256 amount) external onlyOwner {
token.safeTransfer(to, amount);
emit TokensWithdrawn(to, amount);
}
function burnAndReturn(uint256 tokenId) external {
require(ownerOf(tokenId) == msg.sender, "Not owner");
uint256 price = raac_hp.tokenToHousePrice(tokenId);
_burn(tokenId);
token.safeTransfer(msg.sender, price);
emit NFTBurned(tokenId, msg.sender, price);
}
Updates

Lead Judging Commences

inallhonesty Lead Judge about 2 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Liquidated RAACNFTs are sent to the StabilityPool by LendingPool::finalizeLiquidation where they get stuck

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.