10190 matches found
Failure to Initialize Default Price Feeds Can Cause Unexpected Reverts
Lines of code Vulnerability details Impact The ChainlinkPriceOracle contract does not initialize default price feed mappings for supported assets. This means calling the getAssetPrice function before explicitly setting a feed will result in a revert instead of a defined failure response. Details:...
Missing pause check in transferAssetToNodeDelegator()
Lines of code Vulnerability details Summary The function transferAssetToNodeDelegator present in the LRTDepositPool contact ignores the contract's pause state. Impact The LRTDepositPool contract contains a functionality to pause the contract in case of an emergency. 208: function pause external...
No way to withdraw from the strategy
Lines of code Vulnerability details Impact NodeDelegator does not have any functions to withdraw the underlying from the strategy. It does have a function to transfer ERC-20 tokens to the LRTDepositPool, assuming the eigen layer strategy mints ERC20 tokens to represent the share of invested funds...
Max deposit limit on assets per deposit on strategy on EigenLayer
Lines of code Vulnerability details Impact Each strategy on EigenLayer has a maxPerDeposit it validates all individual deposits into the concerned strategy against. This is inclusive of the maxTotalDeposits against a strategy. These two upper limits are validated against deposits to the strategy,...
depositAsset() does not check for slippage
Lines of code Vulnerability details Impact Prices are fetched from Chainlink but it is possible that the prices are stale due to to the fact that it is not checking for the freshness of the price or chainlink could be experiencing a crash event where it would return prices between a minimum and...
Upgraded Q -> 2 from #66 [1699995497317]
Judge has assessed an item in Issue 66 as 2 risk. The relevant finding follows: 1. Low. setAnnualInterestBips will decrease reserveRatio for the next 2 weeks if it was above 90% --- The text was updated successfully, but these errors were encountered: All reactions...
Artist Royalty Split Proposal Functionality Missing
Lines of code Vulnerability details Impact The protocol's documentation specifies that royalty splits can be proposed by the artist and accepted by the admin. However, the MinterContract does not implement the functionality for artists to propose royalty splits. This inconsistency between the...
Adding a randomizer to a collection should be mandatory
Lines of code Vulnerability details Impact The minting process will be broken. Proof of Concept In the current setup, a randomizer contract can be associated with each collection, and it plays a crucial role in generating a random value for token uniqueness during the minting process. Here's a...
claimAuction can be reverted by any bidder, locking all funds and the prize.
Lines of code Vulnerability details Description claimAuction is used to redeem the auction's ERC-721 and refund all bidders that didn't win the auction. In this process, callbacks are sent to every single bidder via low-level calls that triggers fallbacks/receives and ERC721.safeTransferFrom. So,...
Bidder Can Retrieve Bid Amount Twice in claimAuction
Lines of code Vulnerability details Impact This vulnerability enables a bidder to recover their bid amount twice during the execution of the claimAuction function. Proof of Concept A race condition between the claimAuction and cancelBid functions allows a non-winning bidder to claim their bid...
Winner of auction status is not set to false after claim so eligible for refund
Lines of code Vulnerability details Impact Bidders funds will get stuck Proof of Concept After Auction winner claims token, his/her status is not set to false so he is eligible for a refund because the refund logic checks for all indexes with status set to true, which not supposed to be so. So th...
Bid's array can be overloaded with dust bids to break AuctionDemo funcionality.
Lines of code Vulnerability details Description Bids to the auction can be created using any msg.value via participateToAuction method and are stored in an array within the mapping auctionInfoData. However, all important methods claimAuction, returnHighestBid, returnHighestBidder,...
Contract can be drained from the claimAuction contract
Lines of code Vulnerability details Impact Due to the way the claimAuction function is written, it is also possible to drain the contract when sending bids back to users. This can only happen if the highestBidder made multiple bids which is likely. Proof of Concept In this section of the...
Users get pay for multiple NFTs and only get 1 minted
Lines of code Vulnerability details Impact Users get only 1 NFT after paying for multiple or more than one Proof of Concept In MinterContract.mint users can mint more than one token and are allowed to pay for the number of tokens minted. function mint uint256 collectionID, uint256 numberOfTokens,...
Switching to sales model 3 for a collection with pre-existing supply could brick the ' mint() ' function for that collection.
Lines of code Vulnerability details Impact ' Periodic sales' model cannot be used in a collection with Pre-existing supply because of how timeOfLastMint is calculated in mint function. This prevents the system from flexibly combining different sales models in a single collection as intended by th...
AuctionDemo opens itself several DoS attack vectors
Lines of code Vulnerability details Impact Detailed description of the impact of this finding. Proof of Concept The auctionDemo.auctionInfoData map holds important info on auctions, and hold this info per tokenId. Needless to say, for many auctions that may become popular and/or long running, the...
Last token of maximum supply can be paid, but it isn't minted nor reverted.
Lines of code Vulnerability details Description collectionCirculationSupply is incremented in each mint and it's used to check if the mint don't overtakes the collection's max supply. However, it increments before the check, which makes that although last token is in the max supply range, the...
Unchecked constructor arguments can make a contract unworkable
Lines of code Vulnerability details Impact In the NextGenCore contract constructor, there is no check that a valid admin contract is set using NextGenAdmins::isAdminContract. If the contract address in the adminsContract constructor is set incorrectly, it is not possible to call admin functions i...
Adversary can reenter mint to bypass max allowance.
Lines of code github.com/code-423n4/2023-10-nextgen/blob/main/smart-contracts/NextGenCore.solL189-L200 Vulnerability details Description MinterContract.mint calls NextGenCore.mint, which variables that accounts the amount of tokens each user minted is changed only after mintProcessing, that has a...
collection admin can still change delegation Address by calling setCollectionCosts()
Lines of code Vulnerability details Impact Function updateDelegationCollection which update allowlist mint delegation collection prevents collection admin and any other actors from perfoming this except global and Function Admin. However, collection admin can still change delegation Address by...
No function to distribute secondary sales royalties split.
Lines of code Vulnerability details Impact The minter contract currently does not have a way to reliably share the secondary sales revenue for the proposed addresses and splits. Proof of Concept Contract : NextGenMinterContract The minter contract uses collectionArtistSecondaryAddresses and...
High possibility of DOS
Lines of code Vulnerability details Impact In the claimAuction function there is a high possibility of DOS where the auction winner is unable to claim the NFT due to high gas cost or not enough gas, this is due to the functions having three loops on same array of all bids, they are in the...
mint with sales option 3 doesn't work as expected
Lines of code Vulnerability details Summary lastMintDatecol is set to be higher than expected, which can lead to the minting process being blocked for some time. Vulnerability Details In the mint function in the MintContract if the salesOption of the collection is set to 3 then we can only mint 1...
Add reentrancy protection in payArtist function
Lines of code Vulnerability details In payArtist function, the potential for reentrancy exists due to the call method being used to transfer Ether. The call method is known to be risky for reentrancy attacks because it hands off control to the called contract, which could be malicious. After the...
No Chainlink error handling in case of ethereums gas prices increasing or subscription running out of Link.
Lines of code Vulnerability details Impact Any collections making use of the ChainLink VRF2 randomizer could potentially get 0x0 hashes for their nfts. Due to uint32 public callbackGasLimit = 40000; being hardcoded, any gas fluctuations on Ethereum main net, could potentially not be enough for th...
burnToMint and burnOrSwapExternalToMint allows bypass of periodic sales timer.
Lines of code Vulnerability details Description Sales Mode 3 is when the contract allows only one mint per period of time. However, burnToMint and burnOrSwapExternalToMint allows an user to bypass this restriction, since these functions don't have periodic sales check. This can be a problem since...
Missing deadline checks
Lines of code Vulnerability details Consider addings implementation to handle the expiration of the transaction for additional security. To implement a transaction expiration mechanism in the emergencyWithdraw add a timestamp check to ensure that the transaction is executed only within a certain...
Missing highBid value update returnHighestBidder would return the wrong HighestBidder causing nft to be minted to the wrong winner
Lines of code Vulnerability details Impact returnHighestBidder is used in checking who the winner is, however the code implemented in doing this was flawed as it missed updating highBid variable for the current higest bid found so far before next iteration. Missing this would cost function to...
Royalty Payment Invariant Violation
Lines of code Vulnerability details Impact The vulnerability in the payment mechanism of the smart contract significantly impacts the protocol's functionality. The root cause of the vulnerability is that, despite the README stating an invariant that "Payments can only be made when royalties are...
The Transfer event is emitted successfully in MinterContract#mintAndAuction() even when the transaction has failed, leading to inaccurate accounting in off-chain systems.
Lines of code Vulnerability details Impact The airDropTokens function in the NextGenCore contract is responsible for minting and transferring an NFT to a user, exclusively called by the MinterContract. However, the execution of airDropTokens within MinterContractmintAndAuction prior to critical...
The reentrancy vulnerability in NextGenCore can allow an attacker to manipulate minting execution
Lines of code Vulnerability details Impact Function mintProcessing has been used in mint and airDropTokens and both doesn't follow check-effect-interaction pattern and code updates the values of tokensAirdropPerAddress, tokensMintedAllowlistAddress and tokensMintedPerAddress variables after makin...
Re-enterancy in AuctionDemo contract
Lines of code Vulnerability details Impact claimAuction function of AuctionDemo contract transfers the token to highest bidder winner and the bid amount is transferred to the owner. Moreover, refund is sent to all remaining participants non-winners of the auction via call function. However, if a...
Minting nft with Index 0 is not allowed
Lines of code Vulnerability details Impact Detailed description of the impact of this finding. The constructor of the NextGenCore.sol contract includes an increment operation for the newCollectionIndex variable, ensuring that the newCollectionIndex start from 1. While adding or modifying addition...
cancelBid() and cancelAllBids() functions are incorrectly implemented, resulting in partial/complete DoS-ing of bid cancelling functionality.
Lines of code Vulnerability details Impact cancelBid and cancelAllBids functions are incorrectly implemented, resulting in partial/complete DoS-ing of bid cancelling functionality. bidder could lose funds when they change their mind and want to cancel their bid, imagine they were the top bidder a...
When the burnToMint function is enabled, any bad actor can transfer the nft-to-burn when it receives the newly minted nft, getting burned after he no longer is the owner.
Lines of code Vulnerability details Impact Medium impact, it affects the functionallity of the nfts with other contracts, as they wouldn't want to interact with tokens that could get burned. Explanation in the NextGenCore contract, the burnToMint function has the minting of the new nft, which mak...
DoS: Auction May Be Made Unusable By An Attacker
Lines of code Vulnerability details Impact When the items of auctionInfoData array is sufficiently high, claimAuction, cancelAllBids, returnHighestBid will all not be able to be called due to the block gas limit rendering all funds locked and auction unusable. auctionInfoData can only ever be add...
The absence of sanity checks in the MinterContract#mintAndAuction() function can lead to avoidable error scenarios.
Lines of code Vulnerability details Impact The setCollectionCosts function within the MinterContract is utilized to establish the collection costs and sales model for an upcoming collection sale. As outlined in the documentation, the expectation is that one token can be minted and auctioned durin...
Missing Reentry Protection in 'emergencyWithdraw' function
Lines of code Vulnerability details Ensure that all state changes in emergencyWithdraw are done before the external call to prevent reentrancy attacks. The function is vulnerable to reentrancy attacks due to the use of .callvalue: balance"". This can be mitigated by adding a reentrancy guard.- Po...
RandomizerNXT allows randomness re-rolling and also front-running.
Lines of code Vulnerability details Description When a collection uses RandomizerNXT as the randomizer, the process of minting and setting the token hash happens in the same transaction and block, which allows two attacks. First, a user can see the randomness outcome in mempool and front-run his...
Risk of Permanent ETH Loss for Bidders
Lines of code Vulnerability details Impact There's a risk of ETH becoming irretrievably locked in the contract if a bidder's address is a contract with either complex logic in its receive function or no receive function at all. In such cases, ETH transfers to these addresses could fail and result...
AuctionDemo::claimAuction() - L105: Logic bug in the conditional statement where the timestamp check should be > instead of >=.
Lines of code Vulnerability details Impact Would enable the winning bidder/bid to be selected WHILE it's still possible to bid higher in the auction. I.e. current comparison logic makes it possible to select auction winner while the auction isnt over yet. there's the risk of the true/valid highes...
Multiple instances of reentrancy
Lines of code Vulnerability details Impact This can lead to massive loss of funds and asset in Nextgen. Proof of Concept There are multiple instances of reentrancy in NextGenCore.sol, MinterContract.sol and AuctionMemo.sol. These reentrancy is due to the use of ERC721 safeMint... for token transf...
AuctionDemo::claimAuction() - L105: Logic bug in the conditional statement where the timestamp check should be > instead of >=.
Lines of code Vulnerability details Impact Would enable the winning bidder/bid to be selected WHILE it's still possible to bid higher in the auction. I.e. current comparison logic makes it possible to select auction winner while the auction isnt over yet. there's the risk of the true/valid highes...
Owner of the token will not receive the funds of the highest bid after an Auction is claimed
Lines of code Vulnerability details Impact After the auction is completed, the winner or protocol owner must call the claimAuction function. At this point, the token is sent to the auction participant who made the highest bid, and the funds from that bid are sent to the owner of the protocol. And...
Missing gas fee limit
Lines of code Vulnerability details The use of .callvalue: balance"" does not limit the gas sent along with the Ether, potentially allowing all gas in the transaction to be used by the receiver. // Set a specific gas limit for the call if applicable uint256 gasLimit = someGasLimit; // Define...
Cross-Contract Reentrancy can occur during burnToMint
Lines of code Vulnerability details Impact Cross Contract re-entrancy can occur due to not following CEI Proof of Concept 1. Attacker can call burnToMint, with any of the tokenId he owns! 2. This calls the burnToMint in GenCore, which mints the the new token from the to be minted collection...
NFT Claiming Issue Due to Lacking Ownership
Lines of code Vulnerability details Impact The vulnerability in the AuctionDemo contract has a significant impact on the ability of auction winners to claim their NFTs. The root cause of the vulnerability is that the AuctionDemo contract fails to check whether it owns or has approval to transfer...
Upgraded Q -> 2 from #385 [1699689442074]
Judge has assessed an item in Issue 385 as 2 risk. The relevant finding follows: L-04 ODSafeManager.allowSAFE function enables any allowed address to add/remove other allowed addresses Details The ODSafeManager.allowSAFE function is meant by design to allow/disallow any address to manage the safe...
In _executeSetSignatureValidator, validate data.signatureHash and data.signatureValidator for non-zero values.
Lines of code Vulnerability details M5 - In executeSetSignatureValidator, validate data.signatureHash and data.signatureValidator for non-zero values. poc: solidity function executeSetSignatureValidator internal returns bytes memory nextProgressData requiredata.signatureHash != bytes320, "Signatu...
PartyGovernanceNFT.burn is not updating the totalVotingPower
Lines of code Vulnerability details Proof of Concept The getSharedProposalStorage.governanceValues.totalVotingPower value defines the voting power cap that can be minted using mint in PartyGovernanceNFT. In a previous version of the protocol 2023-05-party this variable was...