40,000 USDC
View results
Submission Details
Severity: high
Valid

Unresponsive Arbiter can lock funds in Escrow forever

Summary

Given that arbitrer is an immutable variable, in case of a dispute, unresponsiveness of the arbiter account can trap the funds in the Escrow contract.

Vulnerability Details

If a dispute arises but the arbiter does not resolve it, funds can remain locked in the contract. If the arbiter lost his wallet or is permanently incapacitated due to any reason, and thus cannot resolve the dispute, the funds are lost for ever.

Proof-of-Concept

  • Escrow instantiated, funds are now in escrow.

  • Either of the parties triggers a dispute

  • The arbiter loses wallet and cannot resolve dispute (or lost wallet, is out of reach etc.).

  • Funds locked in Escrow and Parties cannot do anything

Impact

Medium

Tools Used

Manual review.

Recommendations

The following mitigations are recommended:

  • Instead of having one arbitrator, let there by an array of arbiters submitted upon construction. Anyone of these addresses can therefore resolve a dispute, thereby making the chance of funds getting locked almost non existent (unless all of them become unavailable).

  • Allow buyer and seller to change the arbitrator. Add a new function which sets the arbiter address if the permission bool from both buyer and seller is true.

  • Only allow multisig Arbiter addresses

Support

FAQs

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