Transferring doesn't check if the receiver already has 100 deposits and allows exceeding it without limit.
When transferring deposit NFT the functionality doesn't check if the receiver already has reached the limit. Thus allowing for a user address to potentially have unlimited amount of deposits.
When deposits are unlimited it can create a partial-DOS. If a user has many small amount deposits sent to him he will not be able to withdraw all amounts before removing smaller ones due to gas limits. And also may experience DOS while sending away deposits due to iteration running out of gas while trying to find the tokenID:
Because there are no condition requirements this can be abused by malicious actors using dust amount deposit transfers and DOS'ing users (especially on cheaper gas chains - Arbitrum, Base), but since nothing really is gained apart from disruption - Low/Medium.
Manual review + foundry test
Add this check
to router function afterUpdate(address _from, address _to, uint256 _tokenID) public
Likelihood: Medium/High, anyone can receive an unlimited NFT number but will cost creation of LP tokens and sending them. Impact: Low/Medium, DoS the afterUpdate and addLiquidityProportional but will be mitigable on-chain because a lot of those NFT can be burn easily in onAfterRemoveLiquidity.
Likelihood: Medium/High, anyone can receive an unlimited NFT number but will cost creation of LP tokens and sending them. Impact: Low/Medium, DoS the afterUpdate and addLiquidityProportional but will be mitigable on-chain because a lot of those NFT can be burn easily in onAfterRemoveLiquidity.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.