Issue:
The EXTERNAL_CALLER
role in the MembershipFactory
contract can perform arbitrary calls to external contracts using the callExternalContract
function. This introduces a severe security risk, as any account with this role can call any function on any contract, potentially leading to token theft, fund draining, or unauthorized modifications if compromised.
Impact: If the EXTERNAL_CALLER
role is compromised, the attacker could perform unauthorized operations on behalf of the DAO, including minting, burning tokens, or transferring funds.
The EXTERNAL_CALLER
role in the MembershipFactory
contract allows any account with this role to perform arbitrary calls to external contracts. This is a high-risk issue as an attacker with EXTERNAL_CALLER
privileges could execute unauthorized calls, potentially transferring tokens or performing unauthorized actions on connected DAOs.
code:
A malicious user with the EXTERNAL_CALLER
role could transfer all tokens from a given ERC20
contract to themselves:
Restrict the callExternalContract
to only allow safe, whitelisted functions and target contracts:
Tools used - VSC, Github
Recommendation: Limit the callExternalContract
function to only allow specific whitelisted functions and addresses. Add checks to ensure only pre-approved external contracts are called.
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.