validateUserOp()
in nexus accounts do not revert when the validator specified is not installed, violating the EIP-4337 specification.
According to EIP-4337, validateUserOp()
must revert if it encounters any error apart from a signature mismatch (ie. PackedUserOperation.signature
is not a valid signature of userOpHash
):
If the account does not support signature aggregation, it MUST validate the signature is a valid signature of the
userOpHash
, and SHOULD return SIG_VALIDATION_FAILED (and not revert) on signature mismatch. Any other error MUST revert.
However, if the validator specified in PackedUserOperation.nonce
is not installed in the smart account, Nexus.validateUserOp()
returns SIG_VALIDATION_FAILED
instead of reverting:
This is a violation of the EIP-4337 specification - validator
not being installed is not a mismatch between userOpHash
and the signature provided, so the function should revert.
Violation of the EIP-4337 specification could break composability with the EntryPoint
contract and cause integration issues.
Instead of returning VALIDATION_FAILED
, the function should revert:
The argument for medium severity here is the potential inconsistencies with external integrations when validations does not revert during execution called from the entrypoint contract. Similar to issue #200, the impact is arguable, so would leave open for arguments during appeals period.
The argument for medium severity here is the potential inconsistencies with external integrations when validations does not revert during execution called from the entrypoint contract. Similar to issue #200, the impact is arguable, so would leave open for arguments during appeals period.
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.