The public pokeRiskWindow function is permissionless and can be called by any address. If the agreement is in an active‑risk state, this call sets the one‑way riskWindowStart latch, which permanently disables withdrawals for all stakers without the attacker needing any stake or privilege.
pokeRiskWindow is a public utility that allows anyone to force the pool to observe the current registry state and update its risk‑window markers.
A malicious actor with no stake can call pokeRiskWindow while the agreement is in an active‑risk state (UNDER_ATTACK or PROMOTION_REQUESTED). This sets the one‑way riskWindowStart latch, permanently disabling withdrawals for all stakers.
Likelihood:
Any external account can call pokeRiskWindow at any time while the agreement is in UNDER_ATTACK or PROMOTION_REQUESTED.
The attacker needs no stake, no privileges, and incurs only gas costs
Impact:
All stakers lose the ability to withdraw early, even if the registry later returns to a safe state.
Funds are not stolen, but the forced lock‑up can cause significant financial damage (missed opportunities, liquidations elsewhere).
Explanation:
A pool is created and a staker deposits 100 tokens. The agreement is already UNDER_ATTACK. A griefer with no stake calls pokeRiskWindow, which forces the observation of the active‑risk state and sets riskWindowStart. The staker then attempts to withdraw but the call reverts with WithdrawsDisabled. The griefer needed no funds or privileges; the lock is immediate and permanent.
Mitigation explanation:
The fix restricts pokeRiskWindow to addresses that hold an active stake (eligibleStake[msg.sender] > 0). This aligns the permission with those who have skin in the game stakers are the ones most incentivised to keep the risk window open or closed correctly.
A random griefer with no funds in the pool can no longer lock everyone’s withdrawals for free. A secondary option is to add a short time‑delay: after pokeRiskWindow seals the latch, withdrawals could remain open for a final N blocks, giving honest stakers a last‑chance exit before the lock becomes permanent.
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.
The contest is complete and the rewards are being distributed.