code4rena-2023-01-biconomy-l05
[L-05] Front running attacks by the onlyOwner
Summary
front running을 이용하여 권한을 변경해 콜을 실패시킬 수 있다. 권한자 변경 시 timelock을 이용하여 버퍼를 넣을 것을 제안했다.
Keyword
front running, timelock
Vulnerability
contracts/smart-contract-wallet/paymasters/verifying/singleton/VerifyingSingletonPaymaster.sol:
65: function setSigner( address _newVerifyingSigner) external onlyOwner{
66: require(_newVerifyingSigner != address(0), "VerifyingPaymaster: new signer can not be zero address");
67: verifyingSigner = _newVerifyingSigner;
68: }setSigner 함수를 통해 verifyingSigner 를 설정할 수 있다.
만약 verifyingSigner를 사용하는 함수를 실행했는데, front running을 통해 setSigner를 우선 처리해 verifyingSigner를 변경하면 이 함수는 실패하게 된다.
따라서, 바로 verifyingSigner를 변경하도록 하지 말고 timelock을 이용하라고 제안했다.
Impact
front running을 통해 verifyingSigner를 변경하면 verifyingSigner를 이용하려 한 콜이 실패할 수 있다.
Mitigation
timelock을 이용하여 verifyingSigner를 변경하도록 한다.
tags: bughunting, smart contract, biconomy, account abstraction, erc4337, timelock, frontrunning, wallet, severity low