Indorse

QuillAuditsFiles named in the report

Audit · firm’s term: audit report

QuillAudits reviewed Indorse 2.0 Ecosystem (Indorse) on 1 Sep 2023: 18 findings, 0 critical; 10 marked fixed, 8 open.

No open critical findings
Open the reportOpen Indorse 2.0 Ecosystem’s security record

Report hosted on quillaudits.com.

Trustblock does not review code.

Findings18

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

SeverityOpenAcknowledgedFixed
Critical000
High100
Medium000
Low7010
HighMissing unit testsOpen

It is highly recommended to have above 95% of code functionality tested before going into production so as to catch bugs that could be introduced from user input as well as return values from function calls.

LowArray operation optimizationOpen

In a bid to save gas, calldata is preferred over memory, especially in user-supplied arrays that are looped over. Since the array content is not modified, the function parameters can be declared as calldata instead of memory.

LowArray update patternOpen

The array is totally replaced without noting that the owner array is completely rewritten with every setOwners() call and not appended. [low]

Lowenable() and disable() in validators do not emit eventsOpen

The ECDSAValidator does not emit an event for disabling validators. Monitoring processes would be easier to perform if logs were generated for account deletion.

LowError handlingOpen

Custom errors can be used to reduce gas costs for returning long strings. They are usually cheaper than string reverts.

LowLogic in validateSignature() can be reused within validateUserOp()Open

The function validateSignature() tries to recover data using the ECDSA scheme for hashed data and user-inputted data as well. The same happens in validateUserOp within the SessionKeyValidator, MultiECDSAValidator and ECDSAValidator. The repeated code can be reduced and

LowNaming conventionOpen

There are multiple mentions of zerodev.kernel in the codebase. Understandably, this is a fork of the zerodev project but these portions of the codebase can be refactored as there are no hardcoded calculations making strict use of the storagePosition formed by hashing the string “zerodev.kernel”.

LowRepeated addresses can cost extra gas when iterating over owners arrayOpen

When setOwners in MultiECDSAKernelFactory is called, it passes an array of addresses but does not check whether the addresses passed are unique. Non-unique addresses can unnecessarily increase the length of the array thereby increasing the number of times the loop has to run.

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 (16)

  • src/validator/ECDSAValidator.sol
  • src/factory/KernelFactory.sol
  • src/factory/EIP1967Proxy.sol
  • src/executor/KillSwitchAction.sol
  • src/validator/ERC165SessionKeyValidator.sol
  • src/validator/SessionKeyOwnedValidator.sol
  • src/factory/MultiECDSAKernelFactory.sol
  • src/validator/KillSwitchValidator.sol
  • src/factory/ECDSAKernelFactory.sol
  • BatchActions.sol
  • src/executor/BatchActions.sol
  • src/validator/MultiECDSAValidator.sol
  • Kernel.sol
  • src/Kernel.sol
  • KillSwitchValidator.sol
  • ECDSAValidator.sol

Part of Indorse 2.0 Ecosystem’s security record

Indorse 2.0 Ecosystem
Audits1 audit by 1 firmLast audit Sep 2023, by QuillAudits.
Critical findingsNo open critical findingsIn 1 report.
Open Indorse 2.0 Ecosystem’s security record

Security firm

QuillAudits

350 projects reviewed · 459 reports · latest Apr 2025

See QuillAudits’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