The proxy architecture delegates calls to branch contracts without adequate verification, risking storage collisions or malicious delegatecall injection.
Architecture Overview:
Key Risks:
Unverified Branch Contracts: If branches can be modified post-deployment, they might use incompatible storage layouts
Delegatecall Injection: Missing validation of msg.sender
in branch functions could allow unauthorized logic execution
Proof of Concept:
If CreditDelegationBranch
contains:
An attacker could execute arbitrary delegatecalls through this function.
Medium Impact: Storage corruption or limited fund loss
High Likelihood: Common in complex proxy systems
Medium Risk: Depends on branch implementations
Manual pattern analysis
Foundry
Implement strict input validation in all branch functions
Use Diamond Storage pattern for versioned storage
Add delegatecall allowlist:
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.