Assessment reports>LightWallet>Threat Models>execute

Function: execute(address dest, uint256 value, byte[] func)

Executes a transaction (called directly by entryPoint).

Inputs

  • dest

    • Control: Fully controlled by the user.

    • Constraints: N/A.

    • Impact: The address of the target contract to call.

  • value

    • Control: Fully controlled by the user.

    • Constraints: N/A.

    • Impact: The amount of Wei (ETH) to send along with the call.

  • func

    • Control: Fully controlled by the user.

    • Constraints: N/A.

    • Impact: The calldata to send to the target contract.

Branches and code coverage (including function calls)

Intended branches

  • Tests that the account can run execute correctly.

Negative behavior

  • Tests that the account reverts when running execute from a non-entryPoint.

Function call analysis

  • execute -> _call(address target, uint256 value, bytes memory data) -> target.call{value: value}(data)

    • What is controllable? target, value, and data.

    • If return value controllable, how is it used and how can it go wrong? N/A.

    • What happens if it reverts, reenters, or does other unusual control flow? If there is a reentry attempt, the function will revert because the execute method is called from a non-entryPoint.

Zellic © 2024Back to top ↑