The collectFee function transfers WETH and then sends ETH to the collector using a low-level call. This sequence can potentially be exploited by a reentrancy attack if the collector is a contract that can re-enter the collectFee function.
Likelihood:
This vulnerability occurs when the s_collector address is set to a contract that implements a receive() or fallback() function capable of invoking the collectFee() function again during ETH receipt. Because collectFee() performs external calls before updating state or restricting access through reentrancy guards, a malicious collector contract can exploit this call sequence.
This condition is especially likely to be exploitable in a permissioned or semi-permissioned context where the owner or admin mistakenly (or maliciously) sets an untrusted contract as the s_collector. Since the collector can be changed via changeCollector(), any lapse in access control or off-chain due diligence increases the chance of this exploit path being triggered.
Impact:
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.