Summary
100% of all REPORTED Findings have been addressed
- 0Acknowledged
- 0Risk Accepted
- 13Solved
- 13All Findings
- Critical0
- High0
- Medium0
- Low6
- 6Solved
- Informational7
- 7Solved
Introduction#
The security assessment was commissioned by ZKCross, a cross-chain interoperability protocol focused on DeFi infrastructure, to assess the security and robustness of the Rust-based Stellar LockAndRelease smart contract. The assessment was performed by Halborn’s experienced security team, focusing on the code released at commit faa29f7. The review covered all functionality in contracts/lock_release/src/lib.rs between August 25th, 2025, and August 27th, 2025. The primary objective of this engagement’s core purpose was to identify vulnerabilities, ensure protocol reliability and strengthen overall security.
Assessment Summary#
The team at Halborn assigned a full-time security engineer to verify the security of the smart contracts. The security engineer is a blockchain and smart-contract security expert with advanced penetration testing, smart-contract hacking, and deep knowledge of multiple blockchain protocols.
The purpose of this assessment is to:
Ensure that smart contract functions operate as intended
Identify potential security issues with the smart contract
In summary, Halborn identified some improvements to reduce the likelihood and impact of risks, which were addressed and properly solved by the ZKCross team. The main findings were the following:
Reject lock() calls if RevenueSet has not yet been established, or allow the owner to sweep residual fees once a revenue address has been configured.Introduce a pending state with expiry for each lock; admins must release it before expiry, or users can refund.Add a global paused flag, controlled by the owner/admin, to restrict lock/release actions.Enforce percentage in the range 1..=2000, or handle 0 as a special case by skipping min_amount and safely setting fee = 0.
Test Approach and Methodology#
The assessment combined structured manual code review, requirements verification, and automated testing. Key steps included:
- Review of functional and threat modeling documentation (data flows, STRIDE methodology)
- Manual source review for logic errors, state machine soundness, replay/reentrancy surfaces, and access control correctness
- Execution of the project’s public unit and on-chain test suite to validate specification adherence and stress system invariants
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 |
|---|---|---|---|---|
| Protocol Revenue Permanently Lost When Revenue Address Not Set | Low | 3.8 | Solved09/08/2025 | |
| User Funds Stuck Without Recourse When Cross-Chain Transfer Fails | Low | 2.5 | Solved09/15/2025 | |
| Contract Cannot Be Halted During Security Incidents | Low | 2.5 | Solved09/08/2025 | |
| Disabled Lock Feature When Fee Set to Zero | Low | 2.5 | Solved09/08/2025 | |
| USDC Minimum Protection Ineffective on Stellar Network | Low | 2.5 | Solved09/08/2025 | |
| Missing Revenue Tracking | Low | 2.5 | Solved09/08/2025 | |
| Revenue Address Cannot Be Changed If Compromised | Informational | 1.6 | Solved09/08/2025 | |
| Lock-hash lifecycle mis-management allows either replay attacks or rent DoS | Informational | 1.3 | Solved09/08/2025 | |
| External token calls and reentrancy surfaces in lock and release | Informational | 1.0 | Solved09/08/2025 | |
| Indexer Confusion from Redundant Token Parameters | Informational | 0.0 | Solved09/08/2025 | |
| Event Monitoring Blind Spots from Inconsistent Naming | Informational | 0.0 | Solved09/08/2025 | |
| Unnecessary Computation Overhead in Validation Path | Informational | 0.0 | Solved09/08/2025 | |
| Performance Overhead from Unnecessary Memory Cloning | Informational | 0.0 | Solved09/08/2025 |
Findings & Tech Details#
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
Description
Recommendation
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.
