Quantum Audit Logo
Launch App

On-chain security analysis — is it a scam or legit?

Is Apple Safe?

AAPLBBNB Chain
Not verified This record has not gone through deep verification and is not being monitored. The score is a dated snapshot — the token’s risk can change at any time.Own this token? Put it under verification →
Last checked Sep 4, 2026 · 1 audit on record
Critical RiskHow is this score calculated?
SummaryAI Copilot

The audit focused on the SecuritiesToken contract, which serves as the implementation for a BeaconProxy.

Read the full analysis
What raised the score
  • Ownership status UNKNOWN
  • Mintable supply — no cap found, dilution unbounded
  • Proxy contract
  • Complex proxy pattern
  • Top-10 concentration > 70%
  • Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
  • LP top1 unlocked holder = 53.5%
  • LP top3 unlocked holders = 91.9%
  • 2 High finding(s) from audit
  • 2 Medium finding(s) from audit
  • 1 Low finding(s) from audit
Exact factors
  • Ownership status UNKNOWN (owner could not be resolved)
  • Mintable supply — no cap found, dilution unbounded
  • Proxy contract (upgradeable — admin can replace logic)
  • Complex proxy pattern (BEACON)
  • Top-10 concentration > 70% (93.4% total → 87.7% effective; 83.8% in EOAs, 9.6% in contracts — extreme)
  • Liquidity not locked, but no owner/deployer address holds LP — market-depth risk, not rug risk
  • LP top1 unlocked holder = 53.5% (independent LP — depth risk, pool = 86% of DEX liquidity)
  • LP top3 unlocked holders = 91.9% (independent LP — depth risk, pool = 86% of DEX liquidity)
  • 2 High finding(s) from audit
  • 2 Medium finding(s) from audit
  • 1 Low finding(s) from audit

Each factor is an on-chain fact recorded at the time of this analysis. The score is computed from them by a deterministic function, so the same contract returns the same score for anyone who runs the audit. How scores are computed

Security Checklist

as of audit · Sep 43 of 7 checks passed
Contract verifiedVerified
OwnershipUnknown
MintMintable
Liquidity lockNot locked
UpgradeabilityUpgradeable
HoneypotNone found
Buy / sell tax0% / 0%

Holders

as of audit · Sep 4, 2026
9.6%Contracts83.8%Wallets6.6%Everyone else
9.6%83.8%Wallets6.6%
ContractsWalletsEveryone elseBubble area = share of supply
93.4%of supply sits with the top 10 holders
  • Contractstreasury, vesting, bridge, staking9.6%
  • Walletsanonymous holders, free to sell83.8%
  • Everyone elsethe rest of the supply6.6%
Effective concentrationwhat the score reads87.7%
How holder types affect the score

Share held by contracts — treasury, vesting, bridge or staking — is discounted against share held by wallets when the score is computed: a contract cannot decide to sell the way an anonymous holder can, though it can still be drained or voted to sell. Effective concentration is the figure the risk score is actually calculated from.

Holder balances as recorded by the audit of Sep 4, 2026

Liquidity

as of audit · Sep 4$435.4K across 7 pairs
LP tokensNot locked

The LP tokens of the analysed pool are not locked or burned, so whoever holds them can withdraw that liquidity.

Analysed pool$373.6KShare of depth85.8%
Top-1 Unlocked Holder53.5%
Top-3 Unlocked91.9%
Unlocked LP held by
0xf949…02980x556b…d59e0x4a1b…2dc70x94ad…b4330x1fee…ed6f0xac9c…e5ab0xf210…69500xd9a2…040b0xe9ce…c8a70xdd73…ddfd

No privileged address appears among these holders: the unlocked liquidity sits with independent providers, not with the deployer.

Security Findings

2 High2 Medium1 Low1 Info
High

Centralized Control by DEFAULT_ADMIN_ROLE

The DEFAULT_ADMIN_ROLE holds extensive power, including the ability to set token name/symbol/identifier, enable/disable minting/burning, manage all roles (including ISSUER_ROLE), and set the addresses for the ComplianceClient and PauseManagerClient. A compromise of this single role would grant an attacker full control over the token's functionality and potentially its economic parameters.H-01

Issue

The DEFAULT_ADMIN_ROLE holds extensive power, including the ability to set token name/symbol/identifier, enable/disable minting/burning, manage all roles (including ISSUER_ROLE), and set the addresses for the ComplianceClient and PauseManagerClient. A compromise of this single role would grant an attacker full control over the token's functionality and potentially its economic parameters.

Fix

Implement a multi-signature wallet for the DEFAULT_ADMIN_ROLE to distribute control and require multiple approvals for critical operations. This significantly reduces the risk of a single point of failure.

Status

Unresolved

High

Issuer Role Can Authorize Multiplier Updates

The _authorizeMultiplierUpdate() function, which is a prerequisite for changing the _uiMultiplier, is accessible to both DEFAULT_ADMIN_ROLE and ISSUER_ROLE via the onlyAdminOrIssuer modifier. Changes to the _uiMultiplier directly impact the token's value and user balances. Granting this powerful ability to potentially multiple ISSUER_ROLE holders increases the attack surface for economic manipulation or accidental misconfiguration, as the ISSUER_ROLE's primary function is typically related to minting/burning, not economic parameter adjustments.H-02

Issue

The _authorizeMultiplierUpdate() function, which is a prerequisite for changing the _uiMultiplier, is accessible to both DEFAULT_ADMIN_ROLE and ISSUER_ROLE via the onlyAdminOrIssuer modifier. Changes to the _uiMultiplier directly impact the token's value and user balances. Granting this powerful ability to potentially multiple ISSUER_ROLE holders increases the attack surface for economic manipulation or accidental misconfiguration, as the ISSUER_ROLE's primary function is typically related to minting/burning, not economic parameter adjustments.

Fix

Restrict the _authorizeMultiplierUpdate() function to only the DEFAULT_ADMIN_ROLE. This ensures that only the most trusted and secure role can initiate changes to the token's core economic scaling factor.

Status

Unresolved

Medium

Missing Zero Address Check for Admin in Initializer

The initialize function grants the DEFAULT_ADMIN_ROLE to the admin_ address provided. However, there is no check to ensure that admin_ is not address(0). If the contract is initialized with admin_ as address(0), no entity would possess the DEFAULT_ADMIN_ROLE, rendering the contract unmanageable and unable to perform critical administrative functions (e.g., setting compliance, pause manager, or granting other roles).M-01

Issue

The initialize function grants the DEFAULT_ADMIN_ROLE to the admin_ address provided. However, there is no check to ensure that admin_ is not address(0). If the contract is initialized with admin_ as address(0), no entity would possess the DEFAULT_ADMIN_ROLE, rendering the contract unmanageable and unable to perform critical administrative functions (e.g., setting compliance, pause manager, or granting other roles).

Fix

Add a require(admin_ != address(0), "ZeroAddress"); check at the beginning of the __securitiesToken_init function to prevent initialization with a zero address admin.

Status

Unresolved

Medium

Dependency on External Compliance and Pause Manager Contracts

The SecuritiesToken contract relies heavily on external ComplianceClientUpgradeable and PauseManagerClientUpgradeable contracts, whose addresses are set by the DEFAULT_ADMIN_ROLE. The security and trustworthiness of these external contracts are paramount, as a malicious or compromised ComplianceClient could block legitimate transfers or allow non-compliant ones, and a malicious PauseManagerClient could permanently pause the token or pause it at will, effectively freezing all token operations.M-02

Issue

The SecuritiesToken contract relies heavily on external ComplianceClientUpgradeable and PauseManagerClientUpgradeable contracts, whose addresses are set by the DEFAULT_ADMIN_ROLE. The security and trustworthiness of these external contracts are paramount, as a malicious or compromised ComplianceClient could block legitimate transfers or allow non-compliant ones, and a malicious PauseManagerClient could permanently pause the token or pause it at will, effectively freezing all token operations.

Fix

Ensure that the ComplianceClient and PauseManagerClient contracts are thoroughly audited, well-secured, and controlled by trusted entities, ideally through a multi-signature setup. Implement robust monitoring for these external contracts. Consider adding a time-lock or governance mechanism for changing these critical external contract addresses.

Status

Unresolved

Low

Inconsistent Pragma Version

The main SecuritiesToken.sol contract uses pragma solidity ^0.8.20; while the imported ERC8056BaseUpgradeable.sol uses pragma solidity ^0.8.24;. Although both versions are compatible with a compiler version of 0.8.24 (as indicated in the prefill), maintaining a consistent pragma across all contract files is a best practice for clarity and to avoid potential future compiler-related issues or warnings.L-01

Issue

The main SecuritiesToken.sol contract uses pragma solidity ^0.8.20; while the imported ERC8056BaseUpgradeable.sol uses pragma solidity ^0.8.24;. Although both versions are compatible with a compiler version of 0.8.24 (as indicated in the prefill), maintaining a consistent pragma across all contract files is a best practice for clarity and to avoid potential future compiler-related issues or warnings.

Fix

Standardize the pragma version across all contract files to pragma solidity ^0.8.24; or the specific version used for compilation.

Status

Unresolved

Info

Truncated ERC8056BaseUpgradeable Code

The provided source code for the ERC8056BaseUpgradeable contract was truncated. This contract is fundamental to the SecuritiesToken's core token mechanics, particularly its scaled amount (_uiMultiplier) logic. A complete security assessment of the SecuritiesToken's economic model and potential for integer overflows/underflows or rounding errors within the scaling mechanism requires a full review of the ERC8056BaseUpgradeable implementation.I-01

Issue

The provided source code for the ERC8056BaseUpgradeable contract was truncated. This contract is fundamental to the SecuritiesToken's core token mechanics, particularly its scaled amount (_uiMultiplier) logic. A complete security assessment of the SecuritiesToken's economic model and potential for integer overflows/underflows or rounding errors within the scaling mechanism requires a full review of the ERC8056BaseUpgradeable implementation.

Fix

Provide the complete source code for all inherited and imported contracts to enable a comprehensive security audit of the entire system.

Status

Unresolved

Analysis

AI Copilotas of audit · Sep 4
Executive SummaryWhat the contract is and what the review found

The audit focused on the SecuritiesToken contract, which serves as the implementation for a BeaconProxy. The contract implements an upgradeable ERC-20 token with custom scaling (ERC8056BaseUpgradeable), access control, compliance, and pause functionalities. While the contract leverages well-audited OpenZeppelin libraries for upgradeability and access control, several areas of concern were identified, primarily related to centralized administrative power, the broad authority granted to the 'Issuer' role, and dependencies on external contracts. A critical missing zero-address check for the admin during initialization was also noted. The ERC8056BaseUpgradeable code was truncated, limiting a full review of its complex scaling logic.

Technical4/10Medium risk

The technical architecture is sound, utilizing OpenZeppelin's upgradeable contracts and access control patterns (7.1 Architecture, 7.2 Code Security). The contract correctly implements __gap storage for upgradeability and uses onlyInitializing and _disableInitializers() for secure initialization. However, a missing zero-address check for the admin in the initialize function could lead to an unmanageable contract if deployed incorrectly (7.2 Code Security). Additionally, the ERC8056BaseUpgradeable contract's core logic for scaled amounts was truncated, preventing a full assessment of its potential for rounding errors or other vulnerabilities (7.2 Code Security).

Governance1/10High risk

The contract exhibits a high degree of centralization, with the DEFAULT_ADMIN_ROLE possessing extensive control over critical parameters, role management, and external dependencies (7.3 Access Control, 7.8 Operations). A compromise of this single role would grant full control over the token's supply and functionality. Furthermore, the ISSUER_ROLE is empowered to authorize _uiMultiplier updates, which directly impacts the token's economic value and user balances, increasing the risk of economic manipulation if an issuer's key is compromised (7.4 Economic, 7.3 Access Control). The reliance on external ComplianceClient and PauseManagerClient contracts introduces a dependency risk, as their security and trustworthiness directly impact the SecuritiesToken's integrity (7.6 External).

Upgrades1/10High risk

The contract is designed as an upgradeable implementation for a BeaconProxy, correctly utilizing OpenZeppelin's upgradeable patterns (7.7 Upgrades). The __gap storage variable is present, ensuring future storage compatibility. The initializer functions are properly guarded with onlyInitializing and _disableInitializers(), mitigating re-initialization risks. The _setUIMultiplier function includes a reasonable time constraint for future multiplier changes, enhancing upgrade safety (7.7 Upgrades).

Final RecommendationWhat to do about this score

Strengthen access control by implementing a multi-signature wallet for the DEFAULT_ADMIN_ROLE to mitigate the risks associated with centralized control.

Re-evaluate the scope of the ISSUER_ROLE's permissions, specifically regarding the ability to authorize multiplier updates, and consider restricting this sensitive function to the DEFAULT_ADMIN_ROLE only. Implement a zero-address check for the admin_ parameter in the initialize function to prevent accidental deployment into an unmanageable state. Ensure that all external dependencies, such as the ComplianceClient and PauseManagerClient, are thoroughly audited and managed by trusted entities.

Contract & Record

1 audit on record
TypeBeaconProxy
NetworkBNB Chain
Token age1mo
Contract0x431a…9b7a
Deployer0x64fd…8d53
Proxy Upgrade Controls
Proxy TypeBeacon
ImplementationVerified source
Badge for your website
Apple security record badge

Free for any token on the record. It links to this page and always shows the current score and the date it was checked.

Audit History
  1. Aug 30, 2026100Critical

Score changes are recorded as dated snapshots — history is append-only and cannot be edited.

Would You Like a More Detailed Audit of Apple?

Our AI-powered scanner gives you a deeper, real-time smart contract analysis — free, with every scoring factor shown.

Get Detailed Audit Is this your token? Publish your own audit on this page