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.