Kontos security record

Base, Ethereumkontos.ioGitHub

As of 3 Nov 2026, Kontos has 1 audit report on Trustblock, by CertiK, dated 12 Dec 2023. That report lists no open critical findings.

Critical findings
No open critical findings
In 1 report.
Open the latest report
Your label, live
Get the label for your site

Record last updated . It holds audits, findings and contracts up to Nov 2026, and incidents up to Oct 2026. Trustblock does not review code.

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
KontosSecurity firm: CertiKDate: Scope: Files named in the reportNo open critical findingsOpen · skynet.certik.com

Findings28

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

SeverityOpenAcknowledgedFixed
Critical000
High020
Medium702
Low1007
MediumLack of Reentrancy Protection from Low Level CallKontos · CertiK · 12 Dec 2023Fixed

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.

Open the report
MediumNo-op of Multiple Proof TasksKontos · CertiK · 12 Dec 2023Fixed

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.

Open the report
LowInefficient Memory ParameterKontos · CertiK · 12 Dec 2023Fixed

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`.

Open the report
LowMissing Check if Account ExistsKontos · CertiK · 12 Dec 2023Fixed

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.

Open the report
LowMissing Check in `preValidateUserOp()`Kontos · CertiK · 12 Dec 2023Fixed

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.

Open the report
LowMissing Zero Address ValidationKontos · CertiK · 12 Dec 2023Fixed

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

Open the report
LowThe `supportsInterface()` Function is InconsistenKontos · CertiK · 12 Dec 2023Fixed

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.

Open the report
LowUnnecessary Use of SafeMathKontos · CertiK · 12 Dec 2023Fixed

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.

Open the report
LowversionIds[index]` Is Not Updated`Kontos · CertiK · 12 Dec 2023Fixed

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.

Open the report

Contracts

No deployed address is recorded for these audits.

The reports name a repository or files. Open a report to see its scope.

The repositories and files the reports name

Show this on your site

Is this your project? Show this record on your own website. The label states what the record holds, links to this page and updates by itself. It is free and needs no sign-in.

Content

Facts

Automatic: the three strongest facts of this project’s own record (its last audit and two more), highlighted. They update with the record. Picking a fact turns Automatic off.

Fixed as
Language

Style

Layout
Theme
Accent
Corners

Format

Size
Date
Embed as
HTML
<head>
<script src="https://widget.trustblock.run/project-widget.min.js" defer></script>
</head>
<body>
<div
data-tb-project-widget
data-tb-project-slug="kontos"
></div>
</body>

Paste the code where the label should appear. It uses no API credit and updates by itself.

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