veRAACToken withdrawal validation can be bypassed when emergency withdrawal is disabled and the lock hasn't expired. This creates a vulnerability in the time-lock mechanism that protects locked RAAC tokens. The veRAACToken.sol implementation shows the withdrawal logic: function withdraw()
The issue is that the withdrawal function properly validates lock expiry but doesn't handle the emergency withdrawal state correctly, this creates a scenario where users could potentially withdraw tokens even when emergency withdrawals are disabled and their lock hasn't expired.
We expects withdrawals to fail when locks haven't expired and emergency withdrawals are disabled. This makes perfect sense, because we want to protect the protocol's vote-escrow mechanism that powers the dual-gauge system for real estate and DeFi directionality.
But currently the implementation in veRAACToken.sol handles lock expiry checks but misses a crucial validation.
The function handles conversion: veRAAC (locked) → RAAC (liquid)
Critical validation happens early
State changes follow clear progression:
Load → Validate → Calculate → Clean → Update → Transfer
The vulnerability point: Lock expiry check doesn't consider emergency state
Impact flows through governance (voting power) and economics (token transfers)
As can be seen, this structure shows how the withdrawal mechanism integrates with RAAC's broader governance and tokenomics systems.
This means that a user could withdraw tokens even when emergency withdrawals are disabled and their lock hasn't expired. For a protocol bridging real estate and DeFi, this undermines the core stability mechanism. Think of this like breaking a certificate of deposit (CD) before maturity without paying the early withdrawal penalty.
This vulnerability could undermine the entire vote-escrow tokenomics by allowing premature withdrawals. The time-lock mechanism is crucial for maintaining long-term protocol alignment through veRAACToken voting power.
manual
Add explicit emergency withdrawal validation in the withdraw function
Withdrawal allowed only if:
Emergency withdrawals are enabled OR
Lock period has expired
State Transitions
Security Layers
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.