It is possible for executor to recover tokens from a zero bid more than once breaking the core trust of the contract.
Context:
SpiceAuction.sol#L287
The recoverAuctionTokenForZeroBidAuction() function in the SpiceAuction.sol contract allows the DAOExecutor to recover auction tokens for epoch with zero bids, however, due to a missing code in the current function implementation, It is possible for the executor to perform this on even just a single zero bid epoch more than once and end up draining the totalAuctionTokenAllocation even after many users have bid, this possibility breaks the entire trust to the smart contract:
depositors can claim their share of the TGOLD rewards after auction and also retroactively
Now let's have a look at the recoverAuctionTokenForZeroBidAuction():
Notice after getting and transferring the totalAuctionTokenAmount of that zero bid epoch to the recipient address, it doesn't update the now recovered value to zero.
With this missing, It is possible for the executor to recover tokens from a zero bid more than just once, which will affect all bidders.
It is possible for the executor to recover tokens from a zero bid more than once and end up draining the totalAuctionTokenAllocation even after many users have bid, affecting the entire bidders. Also, this possibility alone breaks the entire trust of the smart contract and protocol users.
Manual Review
The epochInfo.totalAuctionTokenAmount should be updated to zero after getting the value:
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.