Platform: Code4rena
Start Date: 04/01/2023
Pot Size: $60,500 USDC
Total HM: 15
Participants: 105
Period: 5 days
Judge: gzeon
Total Solo HM: 1
Id: 200
League: ETH
Rank: 57/105
Findings: 1
Award: $78.26
🌟 Selected for report: 0
🚀 Solo Findings: 0
🌟 Selected for report: immeas
Also found by: 0xDave, 0xbepresent, HE1M, Kutu, betweenETHlines, hansfriese, hihen, peanuts, prc, wait
78.2598 USDC - $78.26
https://github.com/code-423n4/2023-01-biconomy/blob/53c8c3823175aeb26dee5529eeefa81240a406ba/scw-contracts/contracts/smart-contract-wallet/SmartAccount.sol#L460 https://github.com/code-423n4/2023-01-biconomy/blob/53c8c3823175aeb26dee5529eeefa81240a406ba/scw-contracts/contracts/smart-contract-wallet/SmartAccount.sol#L465
The SmartAccount.sol::execute()
and SmartAccount.sol::executeBatch()
does not allow the access from the EntryPoint. The line 461 and 466 calls the _requireFromEntryPointOrOwner
function which indicates that the function could be called by the EntryPoint or the owner.
Those functions are important for the smart account management so it important for the protocol to call them from the EntryPoint.
As you can see in the code, the onlyOwner
modifier is called before the _requireFromEntryPointOrOwner
function so the EntryPoint can not call those functions.
File: SmartAccount.sol 460: function execute(address dest, uint value, bytes calldata func) external onlyOwner{ 461: _requireFromEntryPointOrOwner(); 462: _call(dest, value, func); 463: } 464: 465: function executeBatch(address[] calldata dest, bytes[] calldata func) external onlyOwner{ 466: _requireFromEntryPointOrOwner(); 467: require(dest.length == func.length, "wrong array lengths"); 468: for (uint i = 0; i < dest.length;) { 469: _call(dest[i], 0, func[i]); 470: unchecked { 471: ++i; 472: } 473: } 474: }
VsCode
Removes the onlyOwner
modifier and the _requireFromEntryPointOrOwner()
function will check if the sender is the Owner or the EntryPoint.
#0 - c4-judge
2023-01-18T00:37:44Z
gzeon-c4 marked the issue as duplicate of #390
#1 - c4-sponsor
2023-01-26T06:53:59Z
livingrockrises marked the issue as sponsor confirmed
#2 - c4-judge
2023-02-10T12:21:36Z
gzeon-c4 marked the issue as satisfactory