Highest bidder can cancel his bid, withdraw collateral and win the round.
Vulnerability Detail
Documentation says: "Only bids that are no longer the highest bid can be canceled and their associated collateral withdrawn". But highest bidder can cancel his bid, using _cancelAllBids function and withdraw his collateral. At the same time, he will remain in the array as the highest bidder, and if there are no bids after him, then he will win the round. His collateral will be split between old Steward and Creator Circle, and this will lead to a loss of contract's funds.
Impact
Highest bidder unfairly wins the auction and receives token for free.
DenTonylifer
high
Highest bidder can cancel his bid
Summary
Highest bidder can cancel his bid, withdraw collateral and win the round.
Vulnerability Detail
Documentation says: "Only bids that are no longer the highest bid can be canceled and their associated collateral withdrawn". But highest bidder can cancel his bid, using
_cancelAllBids
function and withdraw his collateral. At the same time, he will remain in the array as the highest bidder, and if there are no bids after him, then he will win the round. His collateral will be split between old Steward and Creator Circle, and this will lead to a loss of contract's funds.Impact
Highest bidder unfairly wins the auction and receives token for free.
Code Snippet
[https://github.com/sherlock-audit/2024-02-radicalxchange/blob/main/pco-art/contracts/auction/EnglishPeriodicAuctionInternal.sol#L416-L434]()
Tool used
Manual Review
Recommendation
Duplicate of #14