Core Contracts

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

Stability pool has no logic to handle received NFTs

Vulnerability Details

Stability pool receives users' NFTs during the call to lendingPool.finalizeLiquidation. However, there's no logic to handle the received NFTs in the stability Pool. This can result in NFTs becoming permanently trapped in the Stability Pool contract.

finalizeLiquidation

for (uint256 i = 0; i < user.nftTokenIds.length; i++) {
uint256 tokenId = user.nftTokenIds[i];
user.depositedNFTs[tokenId] = false;
raacNFT.transferFrom(address(this), stabilityPool, tokenId);
}

The transfer was made using transferFrom which doesn't check for NFT receiver interface implementation.

Impact

  • Permanent loss of NFT assets which can lead to protocol insolvency

Tools Used

Manual

Recommendations

  • Implement logic to handle NFTs

Updates

Lead Judging Commences

inallhonesty Lead Judge 7 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.

Give us feedback!