Prepared by:
HALBORN
Last Updated 02/17/2026
Date of Engagement: February 5th, 2026 - February 9th, 2026
100% of all REPORTED Findings have been addressed
All findings
9
Critical
0
High
0
Medium
1
Low
1
Informational
7
Xyber engaged Halborn to conduct a security assessment on their xyber-sale program beginning on February 5th, 2026 and ending on February 9th, 2026. The security assessment was scoped to the smart contracts provided in the GitHub repository xyber-ico-solana, commit hashes, and further details can be found in the Scope section of this report.
The Xyber team is releasing a Solana program for conducting an ICO (Initial Coin Offering) of the XYBER token. The program manages the full lifecycle of the token sale, including initialization, round configuration, bucket-based token allocation, SOL and quote asset deposits, deterministic and priceless vesting schedules, token claiming with burn mechanics, and fund withdrawals by the admin.
Halborn was provided 3 business days for the engagement and assigned one full-time security engineer to review the security of the Solana Programs in scope. The engineer is a blockchain and smart contract security expert with advanced smart contract hacking skills, and deep knowledge of multiple blockchain protocols.
The purpose of the assessment is to:
Identify potential security issues within the Solana Program.
Ensure that smart contract functionality operates as intended.
In summary, Halborn identified some improvements to reduce the likelihood and impact of risks, which were addressed by the Xyber team. The main ones were the following:
Validate bucket vesting type before accepting deposits or creating deterministic vesting configs to prevent funds lock
Replace set_inner with individual field assignments in setup_bucket to preserve accounting state on re-initialization
Validate base_period_index bounds in vesting plan setup to prevent panics or silent zero allocations
Implement two-step ownership transfer for the multisig role to prevent irreversible loss of program control
Validate time parameters in round setup to prevent misconfigured rounds
Handle equal claim and burn ratios explicitly in remainder distribution to prevent silent burn bias
Validate base_mint against a hardcoded address to prevent configuration of an incorrect ICO token
Validate price and exponent parameters in quote mint configuration to prevent temporal denial of service
Centralize all PDA seed strings in the constants module to prevent typos and ensure consistency
Halborn performed a combination of manual review and security testing based on scripts to balance efficiency, timeliness, practicality, and accuracy in regard to the scope of this assessment. While manual testing is recommended to uncover flaws in logic, process, and implementation; automated testing techniques help enhance coverage of the code and can quickly identify items that do not follow the security best practices. The following phases and associated tools were used during the assessment:
Research into architecture and purpose.
Differences analysis using GitLens to have a proper view of the differences between the mentioned commits
Graphing out functionality and programs logic/connectivity/functions along with state changes
| EXPLOITABILITY METRIC () | METRIC VALUE | NUMERICAL VALUE |
|---|---|---|
| Attack Origin (AO) | Arbitrary (AO:A) Specific (AO:S) | 1 0.2 |
| Attack Cost (AC) | Low (AC:L) Medium (AC:M) High (AC:H) | 1 0.67 0.33 |
| Attack Complexity (AX) | Low (AX:L) Medium (AX:M) High (AX:H) | 1 0.67 0.33 |
| IMPACT METRIC () | METRIC VALUE | NUMERICAL VALUE |
|---|---|---|
| Confidentiality (C) | None (C:N) Low (C:L) Medium (C:M) High (C:H) Critical (C:C) | 0 0.25 0.5 0.75 1 |
| Integrity (I) | None (I:N) Low (I:L) Medium (I:M) High (I:H) Critical (I:C) | 0 0.25 0.5 0.75 1 |
| Availability (A) | None (A:N) Low (A:L) Medium (A:M) High (A:H) Critical (A:C) | 0 0.25 0.5 0.75 1 |
| Deposit (D) | None (D:N) Low (D:L) Medium (D:M) High (D:H) Critical (D:C) | 0 0.25 0.5 0.75 1 |
| Yield (Y) | None (Y:N) Low (Y:L) Medium (Y:M) High (Y:H) Critical (Y:C) | 0 0.25 0.5 0.75 1 |
| SEVERITY COEFFICIENT () | COEFFICIENT VALUE | NUMERICAL VALUE |
|---|---|---|
| Reversibility () | None (R:N) Partial (R:P) Full (R:F) | 1 0.5 0.25 |
| Scope () | Changed (S:C) Unchanged (S:U) | 1.25 1 |
| Severity | Score Value Range |
|---|---|
| Critical | 9 - 10 |
| High | 7 - 8.9 |
| Medium | 4.5 - 6.9 |
| Low | 2 - 4.4 |
| Informational | 0 - 1.9 |
Critical
0
High
0
Medium
1
Low
1
Informational
7
| Security analysis | Risk level | Remediation Date |
|---|---|---|
| Missing Bucket Vesting Type Validation on Deposit and Deterministic Setup Causes Funds Permanently Locked | Medium | Solved - 02/09/2026 |
| Unvalidated Bucket Data Overwrites Accounting State on Re-initialization | Low | Solved - 02/09/2026 |
| Unvalidated Base Period Index in Vesting Plan Causes Panic or Silent Zero Allocation | Informational | Solved - 02/11/2026 |
| Missing Two-Step Ownership Transfer for Multisig Role Allows Irreversible Loss of Program Control | Informational | Solved - 02/11/2026 |
| Missing Time Parameter Validation in Round Setup Allows Misconfigured Rounds | Informational | Solved - 02/11/2026 |
| Remainder Token Distribution Silently Favors Burn When Ratios Are Equal | Informational | Solved - 02/11/2026 |
| Missing Base Mint Address Validation Allows Configuration of Incorrect ICO Token | Informational | Solved - 02/11/2026 |
| Incorrect Parameters in Quote Mint Configuration Might Lead To Temporal DoS | Informational | Solved - 02/11/2026 |
| Inconsistent Use of Inline PDA Seed Strings Instead of Centralized Constants | Informational | Solved - 02/11/2026 |
//
//
//
//
//
//
//
//
//
Halborn strongly recommends conducting a follow-up assessment of the project either within six months or immediately following any material changes to the codebase, whichever comes first. This approach is crucial for maintaining the project’s integrity and addressing potential vulnerabilities introduced by code modifications.
// Download the full report
Xyber Sale Solana Program
* Use Google Chrome for best results
** Check "Background Graphics" in the print settings if needed