-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
User can mint more tokens than is allowed #1961
Labels
bug
Something isn't working
downgraded by judge
Judge downgraded the risk level of this issue
duplicate-745
edited-by-warden
grade-c
QA (Quality Assurance)
Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax
unsatisfactory
does not satisfy C4 submission criteria; not eligible for awards
Comments
c4-submissions
added
2 (Med Risk)
Assets not at direct risk, but function/availability of the protocol could be impacted or leak value
bug
Something isn't working
labels
Nov 13, 2023
c4-submissions
added a commit
that referenced
this issue
Nov 13, 2023
code4rena-admin
changed the title
User can mint more tokens than is allowed.
User can mint more tokens than is allowed
Nov 13, 2023
141345 marked the issue as duplicate of #1198 |
141345 marked the issue as duplicate of #1597 |
141345 marked the issue as not a duplicate |
141345 marked the issue as duplicate of #1763 |
c4-judge
added
duplicate-745
and removed
duplicate-1763
2 (Med Risk)
Assets not at direct risk, but function/availability of the protocol could be impacted or leak value
labels
Dec 4, 2023
alex-ppg changed the severity to QA (Quality Assurance) |
c4-judge
added
downgraded by judge
Judge downgraded the risk level of this issue
QA (Quality Assurance)
Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax
labels
Dec 8, 2023
alex-ppg marked the issue as grade-c |
c4-judge
added
grade-c
unsatisfactory
does not satisfy C4 submission criteria; not eligible for awards
labels
Dec 8, 2023
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
bug
Something isn't working
downgraded by judge
Judge downgraded the risk level of this issue
duplicate-745
edited-by-warden
grade-c
QA (Quality Assurance)
Assets are not at risk. State handling, function incorrect as to spec, issues with clarity, syntax
unsatisfactory
does not satisfy C4 submission criteria; not eligible for awards
Lines of code
https://github.com/code-423n4/2023-10-nextgen/blob/main/smart-contracts/NextGenCore.sol#L218
Vulnerability details
Impact
Every user is allowed to mint a maximum of
maxCollectionPurchases
tokens. This can be easily bypassed if the user firstly calls theburnToMint()
function and thenmint()
.When the
burnToMint()
function is called, a token from one collection is burned and a new token from a new collection is minted if the collection is in the phase of public minting. So, ifmaxCollectionPurchases = 20
for the new collection and the user firstly callsburnToMint()
, after that callsmint()
20 times, he will have 21 tokens, but the maximum required will be 20. This is possible because there is a missed increment oftokensMintedPerAddress
in theburnToMint
function.Recommended Mitigation Steps
Make the following changes:
function burnToMint(uint256 mintIndex, uint256 _burnCollectionID, uint256 _tokenId, uint256 _mintCollectionID, uint256 _saltfun_o, address burner) external { require(msg.sender == minterContract, "Caller is not the Minter Contract"); require(_isApprovedOrOwner(burner, _tokenId), "ERC721: caller is not token owner or approved"); collectionAdditionalData[_mintCollectionID].collectionCirculationSupply = collectionAdditionalData[_mintCollectionID].collectionCirculationSupply + 1; if (collectionAdditionalData[_mintCollectionID].collectionTotalSupply >= collectionAdditionalData[_mintCollectionID].collectionCirculationSupply) { _mintProcessing(mintIndex, ownerOf(_tokenId), tokenData[_tokenId], _mintCollectionID, _saltfun_o); + tokensMintedPerAddress[_mintCollectionID][ownerOf(_tokenId)] = tokensMintedPerAddress[_mintCollectionID][ownerOf(_tokenId)] + 1; // burn token _burn(_tokenId); burnAmount[_burnCollectionID] = burnAmount[_burnCollectionID] + 1; } }
Assessed type
Other
The text was updated successfully, but these errors were encountered: