Beginner FriendlyFoundryNFT
100 EXP
View results
Submission Details
Severity: high
Valid

No validations to check the balance of credTokens leads to gaining credTokens without staking

Summary

No validations to check the balance of credTokens leads to gaining credTokens without staking.

Vulnerability Details

There are no validations to verify ownership or balance of credTokens held by the challenger. Any user can join rap battles with any amount of credTokens and claim the defender's credTokens upon winning the battle. Users can even join rap battles minting credTokens.

Impact

  1. Any user can battle and gain credTokens without actually holding the required credTokens to make the bet.

  2. User also doesn't need to participate in staking to gain credTokens.

Tools Used

Manual Review

Recommendations

Add the below code in goOnStageOrBattle function -

function goOnStageOrBattle(uint256 _tokenId, uint256 _credBet) external {
+ require(credToken.balanceOf(msg.sender) >= _credBet, "RapBattle: Insufficient credToken Balance");
if (defender == address(0)) {
defender = msg.sender;
defenderBet = _credBet;
defenderTokenId = _tokenId;
emit OnStage(msg.sender, _tokenId, _credBet);
oneShotNft.transferFrom(msg.sender, address(this), _tokenId);
credToken.transferFrom(msg.sender, address(this), _credBet);
} else {
// credToken.transferFrom(msg.sender, address(this), _credBet);
_battle(_tokenId, _credBet);
}
}
Updates

Lead Judging Commences

inallhonesty Lead Judge over 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

missing check for sufficient `_credBet_` approval

Support

FAQs

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