Kontos

CertiKFiles named in the report

CertiK reviewed Kontos on 12 Dec 2023: 28 findings, 0 critical; 9 marked fixed, 2 acknowledged, 17 open.

No open critical findings
Open the reportOpen Kontos’s security record

Report hosted on skynet.certik.com.

Trustblock does not review code.

Findings28

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High020
Medium702
Low1007
MediumLack of Reentrancy Protection from Low Level CallFixed

The `EntryPoint` contract contains multiple low level calls with no reentrancy protection and unclear replay protection. As such, reentrancy could be possible. As an example, the `distributeRewards()` performs a low level call in line 278, which could result in malicious actors receiving more rewards than what they are eligible for if reentrancy occurs.

MediumNo-op of Multiple Proof TasksFixed

In the `handleProofTask()` function, proof types of `NEW_REGULAR_ACCOUNT`, `NEW_MULTI_SIG_ACCOUNT`, and `OPERATION_TASK` are no-ops, indicating incompleteness of function logic.

LowInefficient Memory ParameterFixed

One or more parameters with `memory` data location are never modified in their functions and those functions are never called internally within the contract. Thus, their data location can be changed to `calldata` to avoid the gas consumption copying from calldata to memory. ```solidity=47 function getManagedContractsByString(string memory index) public view returns (address){ ``` `getManagedContractsByString` has memory location parameters: `index`.

LowMissing Check if Account ExistsFixed

The `handleProofTask()` function does not check if there is a valid account for the `proof.payer`. If the account does not exist, then the `EntryPoint` contract could end up being the payer for reward distribution instead. Additionally, there is no requirement that the `proof.payer` account has sufficient asset balance for the reward distribution.

LowMissing Check in `preValidateUserOp()`Fixed

The `preValidateUserOp()` function does not check that the user account has enough `requiredAssets` balance for prepayment. Without enough balance, the user should not be able to trigger the execution of its UserOp. Additionally, the `fundInfo` in the `UserOperation` is never used or checked in the `EntryPoint` contract.

LowMissing Zero Address ValidationFixed

Addresses are not validated before assignment or external calls, potentially allowing the use of zero addresses and leading to unexpected behavior or vulnerabilities.

LowThe `supportsInterface()` Function is InconsistenFixed

The `supportsInterface()` function always returns `false`, indicating a lack of support of any interface. However, the contract does support multiple interfaces, including but is not limited to IERC721Receiver, IERC1155Receiver, IProxy, etc.

LowUnnecessary Use of SafeMathFixed

The `SafeMath` library is used unnecessarily. With Solidity compiler versions 0.8.0 or newer, arithmetic operations will automatically revert in case of integer overflow or underflow.

LowversionIds[index]` Is Not Updated`Fixed

The following code does not increment `versionIds[index]`. ```solidity=111 versionIds[index] = versionIds[index]++; ``` Based on Solidity documentation (https://docs.soliditylang.org/en/latest/types.html#compound-and-increment-decrement-operators), a++ and a-- are equivalent to a += 1 / a -= 1 but the expression itself still has the previous value of a. In contrast, --a and ++a have the same effect on a but return the value after the change.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (7)

  • contracts/aa/contracts/EntryPoint.sol
  • contracts/aa/contracts/SmartAccountFactory.sol
  • contracts/aa/contracts/SmartAccount.sol
  • contracts/aa/contracts/UpgradeGateKeeper.sol
  • contracts/light/contracts/connector/erc20/FTConnector.sol
  • contracts/aa/contracts/DeployFactory.sol
  • contracts/aa/contracts/SmartAccountBeacon.sol

Part of Kontos’s security record

Kontos
Audits1 audit by 1 firmLast audit Dec 2023, by CertiK.
Critical findingsNo open critical findingsIn 1 report.
Open Kontos’s security record

Security firm

CertiK

1,044 projects reviewed · 1,375 reports · latest May 2025

See CertiK’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us