The joinDAO
method requires an user to have approved funds from the currency token to the protocol's contract address. The external caller role can easily steal allowances by creating a DAO with suitable tier price and steal funds.
callExternalContract to the contract address itself
Impersonate any user
In _msgSender() we have msg.data being able to impersonate any person/user. This is reachable when the EXTERNAL_CALLER uses callExternalContract() to the same contract address
In joinDAO, we have code to transfer from allowances for _msgSender() which is proved that EXTERNAL_CALLER can spoof to any value.
User funds can be stolen and are at constant risk from the address of EXTERNAL_CALLER
manual analysis
joining a DAO should be entirely upto the user so use msg.sender instead of _msgSender
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.