XShares security record

Arbitrum, Ethereumxshares.io

As of 25 Oct 2026, XShares has 1 audit report on Trustblock, by CertiK, dated 5 Sep 2023. That report lists no open critical findings.

Critical findings
No open critical findings
In that report, 1 critical finding was reported. It is marked fixed by the firm that reported it. See the findings
Open the latest report
Your label, live
Get the label for your site

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

Audits1

Newest first

AuditSecurity firmDateScopeCritical findingsReport
XsharesSecurity firm: CertiKDate: Scope: Files named in the report1 critical finding, fixedOpen · skynet.certik.com

Findings9

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

SeverityOpenAcknowledgedFixed
Critical001
High030
Medium010
Low031
HighCentralization Risks in XShares.solXshares · CertiK · 5 Sep 2023Acknowledged

In the contract `XSharesSharesV1` the role `_owner` has authority over the functions shown in the diagram below. Any compromise to the `_owner` account may allow the hacker to take advantage of this authority and modify important configurations of the contract, such as the fee amount and fee destination. ![](https://accelerator-tasks-prod.acc.corp.certik.com/11ee-47d7-7f21db10-a013-a5292976de41/diagrams/centralization_XShares-XSharesSharesV1-_owner.svg)

Open the report
HighCentralized Control of Contract UpgradeXshares · CertiK · 5 Sep 2023Acknowledged

The “XSharesSharesV2” contract inherits upgradeable contracts, indicating that it’s part of an upgradeable system. Upgradeable contracts often pair with a proxy contract responsible for managing contract upgrades. The `admin` of the proxy has the authority to update the implementation contract (i.e., the XSharesSharesV2 contract). Any compromise of the admin account could allow a hacker to exploit this authority, potentially altering the implementation contract pointed to by the proxy, and thus executing malicious functionality within the implementation contract.

Open the report
HighNo Upper Limit in **setProtocolFeePercent** and *Xshares · CertiK · 5 Sep 2023Acknowledged

There are no upper boundaries for **setProtocolFeePercent** and **setSubjectFeePercent** function which is used to modify the protocol fee and subject fee. It is possible to set the total fee rate up to any arbitrary amount.

Open the report
MediumThe regular user's share can become unsellable.Xshares · CertiK · 5 Sep 2023Acknowledged

The contract requires the "sharesSubject" to have at least 1 share after the registration. The last share of the "sharesSubject" will become unsellable. It's possible for a regular user's share to become unsellable, and the user will lose its assets. ```sol require(supply > amount, "Cannot sell the last share"); ```

Open the report
LowMissing Emit EventsXshares · CertiK · 5 Sep 2023Acknowledged

The smart contract contains one or more state changes related to arithmetic operations that do not emit events to communicate the changes outside the blockchain, which can lead to difficulties in tracking or verifying these changes and may affect the contract's transparency and auditability. ```solidity=147 protocolFeePercent = _feePercent; ``` --- ```solidity=151 subjectFeePercent = _feePercent; ```

Open the report
LowThird-Party DependenciesXshares · CertiK · 5 Sep 2023Acknowledged

The "register" function allows an EOA or smart contract to register a "sharesSubject." When selling or buying shares, the "sharesSubject" address needs to receive native tokens. If the "sharesSubject" is malicious or has incorrectly implemented the payment receive feature, it can cause the "XSharesSharesV2" to malfunction. The implementation of all the "sharesSubject" instances is out of the scope of the audit.

Open the report
LowUnprotected InitializerXshares · CertiK · 5 Sep 2023Acknowledged

One or more logic contracts do not protect their initializers. An attacker can call the initializer and assume ownership of the logic contract, whereby she can perform privileged operations that trick unsuspecting users into believing that she is the owner of the upgradeable contract. ```solidity=6 contract XSharesSharesV2 is OwnableUpgradeable { ``` - `XSharesSharesV2` is an upgradeable contract that does not protect its initializer. ```solidity=23 function initialize() public initializer { ``` - `initialize` is an unprotected initializer function.

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="xshares"
></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