專案簡介
The target of this audit is the private code repository of Normal Account Contracts of MegaETH. The Normal Account Contracts of MegaETH is a smart account infrastructure for EOAs leveraging EIP-7702 delegation. Its core objective is to upgrade standard EOAs into fully programmable smart accounts without deploying individual proxy contracts per user. Through EIP-7702’s code delegation mechanism, an EOA can dynamically bind to predefined account logic while retaining its original address. The system supports multi-key authorization (secp256k1, P-256, WebAuthn, external signers), fine-grained spending limits, customizable execution guards to constrain transaction behavior, a new gas-payment system for flexible fee sponsorship, and cross-chain settlement capabilities that let a single account securely and efficiently interact across multiple chains
Please refer to the report for the detailed audit scope.
Our audit methodology employs automated vulnerability scans, manual verification, and business logic analysis to uncover potential security issues coupled with gas and code quality optimization recommendations.
In summary, we have found that the codebase contains 3 high-risk issues that require prompt attention. In addition, we have identified other non-critical issues as well as recommendations and notes that should be considered. The Normal Account Contracts team has addressed these issues promptly. It is important to note that our audit covers only the final reported versions of the codebase. Any subsequent updates would require a re-evaluation.
關鍵發現
我們在該智能合約中共發現 10 個潛在問題,另有 7 條建議與 3 條說明,明細如下:
| ID | Severity | Description | Status |
|---|---|---|---|
| 1 | High | Lack of validations for the address i.funder |
Fixed |
| 2 | High | Potential lock of funds due to the use of non-ERC20 standard tokens | Fixed |
| 3 | High | The improper construction of replaySafeDigest |
Fixed |
| 4 | Medium | Pre-execution side effects persist when business call fails | Confirmed |
| 5 | Medium | Lack of the fee validation in the function executeSend() |
Fixed |
| 6 | Medium | Potential replay attacks due to the incorrect multichain flow | Fixed |
| 7 | Low | Potential loss of gas fee due to malicious intents | Fixed |
| 8 | Low | Lack of signature validity checks before invoking the function ISettler.send() |
Fixed |
| 9 | Low | The improper design of the function isValidSignatureWithKeyHash() |
Fixed |
| 10 | Low | The execution design of the function initConfig() |
Fixed |
| 11 | - | Remove redundant code | Fixed |
| 12 | - | Revise the error name VerificationError |
Fixed |
| 13 | - | Add non-zero checks in the contract IthacaAccount constructor |
Fixed |
| 14 | - | Add the non-reentrant guard to the withdrawTokens() and executePreCalls() functions |
Fixed |
| 15 | - | Revise the inconsistent approval amount | Fixed |
| 16 | - | Override the function setPeer() in the contract LayerZeroSettler |
Fixed |
| 17 | - | Add non-zero checks in the contracts SimpleSettler and LayerZeroSettler |
Fixed |
| 18 | - | Ensure proper selection of relayers | - |
| 19 | - | Proper intent construction | - |
| 20 | - | Ensure proper LayerZero configurations | - |
更多細節見審計報告。