NFTLiquidator:placeBid()
is manipulatable with multi-signature wallets or ether-reverting smart contracts due to the usage of transfer()
to refound the previously highest bidder.
If the caller outbids the previous highest bidder, the contract refunds him using the transfer()
function:
Multi-sig wallets or ETH-reverting smart contracts can be sure to win the auction if they become the highest bidder because subsequent refunds will revert, making impossible for anyone to outbid them.
In details:
if highestBidder
is a multi-signature wallet, the refund will likely revert due to his receive()
consuming more than 2300 gas
if highestBidder
is a smart contract that reverts on ETH transfers, then the refund will always revert
Manual Review
Do such auctions with WETH, which is impossible to reject since it's an ERC20 token.
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.