The Treasury contract lacks a mechanism to enforce allocation withdrawals, creating a discrepancy between recorded allocations and actual token ownership. This vulnerability allows allocators to record allocations without having sufficient funds, potentially leading to double-spending.
The allocateFunds function only records allocations in the _allocations mapping without validating or enforcing actual token transfers:
Key issues:
No validation of allocator's available balance
No deduction of allocated amount from allocator's balance
No enforcement of allocation claims
Potential for double-spending of allocated funds
Inconsistent state between recorded allocations and actual token ownership
Potential for fund mismanagement
Manual code review
Static analysis
Immediate Implementation
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.