A critical vulnerability has been identified in the QuantAMM Protocol's liquidity management system. When users remove liquidity from pools, their corresponding LP NFTs are not burned, leading to a persistent representation of non-existent positions.
UpliftOnlyExample.sol
LPNFT.sol
When users add liquidity, they correctly receive an NFT token representing their position through the LPNFT.mint() function. However, the protocol fails to implement the corresponding burn() function call in either removeLiquidityProportional() when liquidity is withdrawn. This oversight creates a dangerous mismatch between actual liquidity positions and their NFT representations. It enables malicious actors to retain governance rights, potentially double-claim benefits, or transfer "ghost" NFTs representing non-existent positions to unsuspecting buyers. The vulnerability is particularly severe because these orphaned NFTs maintain full functionality within the protocol's ecosystem, despite no longer being backed by actual liquidity.
This could lead to significant protocol state corruption, especially in governance decisions where voting power should be directly tied to active liquidity positions, effectively allowing users to maintain protocol influence without any actual stake at risk.
Github
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.