The Nexus smart account fails to implement access control in the fallback()
function used to redirect calls to fallback handlers.
The fallback()
function is in charge of routing calls to installed fallback handler modules.
As we can see in the implementation, the function doesn't implement any type of access control. Anyone would be able to execute direct calls to the smart account in order to trigger any of the installed fallback handlers.
Note that this is an explicit requirement by the ERC-7579 standard, the account MUST implement access control.
Smart accounts MAY implement a fallback function that forwards the call to a fallback handler.
If the smart account has a fallback handler installed, it:
MUST implement authorization control
Anyone can arbitrarily execute fallback handlers on the Nexus smart account.
None.
Implement authorization control as required by the standard. This could be added when the call could have side effects, i.e. when calltype == CALLTYPE_SINGLE
.
There is indeed no access control within `fallback()` function which violates ERC7579 spec but the impact shown by all issues is insufficient. Need a better impact description/PoC that exceeds violation of ERC7579 to raise the severity of this issue. There will likely be no exploit for staticcall types, given there is not [state change/funds transfer allowed](https://www.rareskills.io/post/solidity-staticcall), so the possible vulnerability would be in the `CALLTYPE_SINGLE`. If no sufficient proof is provided to show a possible exploit, I will likely invalidate these issues.
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.