The fallback
function in ModuleManager
allows fallback handlers to be called with staticcall
, which violates EIP-7579.
The README states that Nexus is compliant with ERC-7579:
Nexus is a suite of contracts for Modular Smart Accounts compliant with ERC-7579 and ERC-4337
According to EIP-7579, fallback handlers must be invoked using call
:
If the smart account has a fallback handler installed, it:
MUST implement authorization control
MUST use
call
to invoke the fallback handler
However, the fallback
function in ModuleManager
allows fallback handlers to be invoked using staticcall
instead:
This is a violation of EIP-7579. External integrations that rely on fallback handlers could call Nexus
accounts assuming that a call
would be executed, but a staticcall
is performed instead. This could cause the call to the fallback handler to incorrectly revert if the function called performs state changes.
Allowing fallback handlers to be called with staticcall
violates EIP-7579, breaking composability with external integrations.
Consider only allowing fallback handlers to be called with a regular call
.
Invalid, although ERC7579 is violated, staticcall is a desired supported fallback call type as seen in the [documentation](https://github.com/bcnmy/nexus/wiki/Execution-Framework#key-concepts), and there will be no exploit possible
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.