OZolio

QuillAuditsFiles named in the report

Audit · firm’s term: audit report

QuillAudits reviewed Ozolio on 10 Feb 2025: 4 findings, 0 critical; all marked fixed.

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

Report hosted on quillaudits.com.

Trustblock does not review code.

Findings4

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

SeverityOpenAcknowledgedFixed
Critical000
High002
Medium001
Low001
HighSome funds are stuck due to division before multiplicationFixed

The wallets tokenAllocation "_T" is first divided before being multiplied, this will lead to the allocation being rounded down before being multiplied

HighThe nonce increment mechanism is improperly implementedFixed

The nonce increment mechanism is improperly implemented, resulting in nonces never being incremented. This completely breaks the replay protection mechanism of the meta-transaction system.The vulnerability stems from the misuse of the post-increment operator (++). In Solidity, when using post-increment, the following sequence occurs: The current value is returned The value is incremented The returned value (pre-increment) is assigned back to the variable Therefore: If nonce starts at 0 nonces[userAddress]++ returns 0 and increments to 1 nonces[userAddress] = then assigns 0 back The nonce effectively never changes

MediumUses Ownable2StepUpgradeable instead of Ownable UpgradeableFixed

One issue is that the contract does not utilize the __Ownable2StepUpgradeable_init() function, designed to facilitate a two-step ownership transfer process. Without this mechanism, ownership transfers occur immediately, exposing the contract to potential risks. The two-step process enhances security by requiring a confirmation step before ownership is fully transferred, thereby reducing the likelihood of unauthorized access or control over the contract.

LowEnhance Contract Robustness and SecurityFixed

Add the sanity checks and best practices that make the contract more robust SafeERC20: Replaced direct token.transfer() with token.safeTransfer() to prevent issues with tokens that don't return true on successful transfers.Non-Negative N Check: Added a require(N >= 0, ...) check before converting N to a uint256 in claimableAmount() to prevent unexpected behavior if the vesting calculation results in a negative claimable amount.

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

  • BasicMetaTransaction.sol
  • VestingOzolio.sol
  • OwnedUpgradeabilityProxy.sol
  • Ozolio.sol

Part of Ozolio ’s security record

Ozolio
Audits1 audit by 1 firmLast audit Feb 2025, by QuillAudits.
Critical findingsNo open critical findingsIn 1 report.
Open Ozolio ’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