Beginner FriendlyFoundry
100 EXP
View results
Submission Details
Severity: low
Invalid

MEV reordering attack possible if owner is not EOA

Summary

As setPassword is setting new value, multiple transactions from different users performing this action may be reordered on validator side.

This only relates to precondition that owner is contract that can be interacted by multiple persons in a same time (e.g. list of authorized users).

Vulnerability Details

If this contract is expected to be owned by some other contract, and multiple users will be changing the password, e.g. as agents, transactions order is not guaranteed, meaning that e.g. for this case:

agentA.call(proxy.setPassword(passwordA))
agentB.call(proxy.setPassword(passwordB))

ordering may be messed up, possibly causing - depending on MEV, gas price and other details - the contract to have passwordA as final state.

Multiple real-world cases are applicable here, e.g. arent registry-based ACLs, permits with signatures and others

Impact

If owner is expected to be EOA or specifically designed contract, then informational
If owner is expected to be generic contract, then medium

Tools Used

Forge

Recommendations

Use nonce as a second argument to avoid reordering

Updates

Lead Judging Commences

inallhonesty Lead Judge
about 2 years ago
inallhonesty Lead Judge about 2 years ago
Submission Judgement Published
Invalidated
Reason: Other

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.