Core Contracts

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

Emergency Withdrawal Bypasses Treasury Accounting System

Summary

FeeCollector's emergencyWithdraw function uses direct token transfers instead of Treasury's deposit function, breaking balance tracking and potentially trapping funds.

Vulnerability Details

The emergencyWithdraw function bypasses proper accounting:

if (token == address(raacToken)) {
balance = raacToken.balanceOf(address(this));
raacToken.safeTransfer(treasury, balance); // Direct transfer bypasses accounting
}

Impact

Funds directly transferred will be locked since the withdrawal relies on _balances[token] and not balanceOf()

Tools Used

Manual review

Recommendations

Use Treasury's deposit function instead of direct transfer:

if (token == address(raacToken)) {
balance = raacToken.balanceOf(address(this));
- raacToken.safeTransfer(treasury, balance);
+ raacToken.approve(treasury, balance);
+ ITreasury(treasury).deposit(address(raacToken), balance);
}
Updates

Lead Judging Commences

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

FeeCollector::_processDistributions and emergencyWithdraw directly transfer funds to Treasury where they get permanently stuck

Support

FAQs

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