Summary
100% of all REPORTED Findings have been addressed
- 0Risk Accepted
- 2Acknowledged
- 12Solved
- 14All Findings
- Critical0
- High0
- Medium1
- 1Solved
- Low0
- Informational13
- 11Solved
- 2Ack.
Introduction#
Securitizeengaged Halborn to conduct a security assessment on their RWA Token Solana program beginning on February 10th, 2025, and ending on March 7th, 2025. The security assessment was scoped to the Solana Program provided in rwa-token GitHub repository. Commit hashes and further details can be found in the Scope section of this report.
The RWA Token is a suite of programs designed to issue and manage the lifecycle of real-world asset tokens. It consists of the following programs:
Asset Controller: Manages core asset operations and enforces standardized transfer controls. It mints assets using the Token-2022 Standard (Token Extensions) with the Transfer-Hook and Permanent Delegate extensions. These features allow issuers to maintain control over tokens throughout their lifecycle, enabling actions such as freezing, seizing, and regulating transactions based on identity permissions.
Identity Registry: Provides a flexible identity issuance and tracking system to facilitate on-chain transaction permissioning. It is designed to support various regulatory frameworks by assigning identity levels to users. The issuer defines the meaning of these identity levels based on the specific requirements of their offering.
Policy Engine: Serves as an on-chain policy enforcement mechanism, ensuring transactions comply with identity-based restrictions. It validates transactions via the transfer-hook integrated into the program, enforcing regulatory and issuer-defined policies.
Assessment Summary#
Halborn was provided 18 days for the engagement and assigned two full-time security engineers to review the security of the Solana Programs in scope. The engineers are blockchain and smart contract security experts 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 Programs.
Ensure that smart contract functionality operates as intended.
In summary, Halborn identified some improvements to reduce the likelihood and impact of risks, which were partially addressed by the Securitize team. The main ones are the following:
Add a verification to ensure the signer is an expected and trusted entity.Close all related accounts when the mint is closed or preventing mint closure altogether to maintain proper tracking of associated accounts.Add a check to ensure the authority of the revoke_token_account matches the identity owner or the wallet of the wallet identity.Add a validation to ensure the total amount of the tracker_account for the identity_account to be closed is zero.Ensure the delegation functionality is implemented consistently across all programs or remove it entirely if it is not needed.Require the wallet account to be a signer in the transaction, verifying its legitimacy and ownership.Verify that new counters have unique IDs.Adapt counters removal to remove counters based on IDs instead of vector indices.
Test Approach and Methodology#
Halborn performed a combination of a manual review of the source code and automated security testing to balance efficiency, timeliness, practicality, and accuracy in regard to the scope of the program assessment. While manual testing is recommended to uncover flaws in business logic, processes, and implementation; automated testing techniques help enhance coverage of programs and can quickly identify items that do not follow security best practices.
The following phases and associated tools were used throughout the term of the assessment:
Research into the architecture, purpose, and use of the platform.
Manual program source code review to identify business logic issues.
Mapping out possible attack vectors
Thorough assessment of safety and usage of critical Rust variables and functions in scope that could lead to arithmetic vulnerabilities.
Scanning dependencies for known vulnerabilities (
cargo audit).
Risk Methodology#
4.1 EXPLOITABILITY
Attack Origin (AO):
Attack Cost (AC):
Attack Complexity (AX):
Metrics:
| EXPLOITABILITY METRIC () | METRIC VALUE | NUMERICAL VALUE |
|---|---|---|
| Attack Origin (AO) | Arbitrary (AO:A) | 1 |
| Specific (AO:S) | 0.2 | |
| Attack Cost (AC) | Low (AC:L) | 1 |
| Medium (AC:M) | 0.67 | |
| High (AC:H) | 0.33 | |
| Attack Complexity (AX) | Low (AX:L) | 1 |
| Medium (AX:M) | 0.67 | |
| High (AX:H) | 0.33 |
4.2 IMPACT
Confidentiality (C):
Integrity (I):
Availability (A):
Deposit (D):
Yield (Y):
Metrics:
| IMPACT METRIC () | METRIC VALUE | NUMERICAL VALUE |
|---|---|---|
| Confidentiality (C) | None (C:N) | 0 |
| Low (C:L) | 0.25 | |
| Medium (C:M) | 0.5 | |
| High (C:H) | 0.75 | |
| Critical (C:C) | 1 | |
| Integrity (I) | None (I:N) | 0 |
| Low (I:L) | 0.25 | |
| Medium (I:M) | 0.5 | |
| High (I:H) | 0.75 | |
| Critical (I:C) | 1 | |
| Availability (A) | None (A:N) | 0 |
| Low (A:L) | 0.25 | |
| Medium (A:M) | 0.5 | |
| High (A:H) | 0.75 | |
| Critical (A:C) | 1 | |
| Deposit (D) | None (D:N) | 0 |
| Low (D:L) | 0.25 | |
| Medium (D:M) | 0.5 | |
| High (D:H) | 0.75 | |
| Critical (D:C) | 1 | |
| Yield (Y) | None (Y:N) | 0 |
| Low (Y:L) | 0.25 | |
| Medium (Y:M) | 0.5 | |
| High (Y:H) | 0.75 | |
| Critical (Y:C) | 1 |
4.3 SEVERITY COEFFICIENT
Reversibility (R):
Scope (S):
Metrics:
| SEVERITY COEFFICIENT () | COEFFICIENT VALUE | NUMERICAL VALUE |
|---|---|---|
| Reversibility () | None (R:N) | 1 |
| Partial (R:P) | 0.5 | |
| Full (R:F) | 0.25 | |
| Scope () | Changed (S:C) | 1.25 |
| Unchanged (S:U) | 1 |
| Critical | High | Medium | Low | Informational |
| 9 - 10 | 7 - 8.9 | 4.5 - 6.9 | 2 - 4.4 | 0 - 1.9 |
Scope#
Assessment Summary & Findings Overview#
# | Title | Severity | Score | Status |
|---|---|---|---|---|
| Asset Controller may be created by an unauthorized entity | Medium | 6.7 | Solved03/02/2025 | |
| Residual accounts left after mint closure | Informational | 1.6 | Solved03/02/2025 | |
| Lack of validation in token revocation can lead to data inconsistencies | Informational | 1.5 | Solved03/06/2025 | |
| Potential permanent tokens locked due to missing tracker total amount validation | Informational | 1.4 | Solved03/03/2025 | |
| Delegation implementation may lead to inconsistencies | Informational | 1.3 | Solved03/02/2025 | |
| Possibility to add counters with duplicate IDs may lead to inconsistencies | Informational | 1.1 | Solved03/05/2025 | |
| Lack of wallet validation when attaching may lead in Denial Of Service | Informational | 1.1 | Acknowledged03/09/2025 | |
| Possibility to remove incorrect counters | Informational | 1.1 | Solved03/05/2025 | |
| Lack of verification of the new delegate of the identity registry | Informational | 0.7 | Solved03/02/2025 | |
| Incorrect reallocation wastes resources and increases account rent | Informational | 0.3 | Solved03/02/2025 | |
| New lock values check missing | Informational | 0.3 | Acknowledged03/06/2025 | |
| Superfluos requested accounts | Informational | 0.0 | Solved03/09/2025 | |
| Lack of checked arithmetical operation enforcement | Informational | 0.0 | Solved03/06/2025 | |
| Program may panic due to index out of bounds | Informational | 0.0 | Solved03/06/2025 |
Findings & Tech Details#
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
8. Automated Testing#
Disclaimer#
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.
