Summary
100% of all REPORTED Findings have been addressed
- 0Acknowledged
- 2Risk Accepted
- 10Solved
- 12All Findings
- Critical0
- High0
- Medium4
- 4Solved
- Low2
- 2Risk A.
- Informational6
- 6Solved
Introduction#
Forever Money engaged Halborn to perform a security assessment of their smart contracts from December 22nd, 2025 to December 31st, 2025. The assessment scope was limited to the smart contracts provided to Halborn. Commit hashes and additional details are available in the Scope section of this report.
The Forever Money codebase in scope consists of smart contracts for Liquidity Escrow Manager Contracts.
Assessment Summary#
Halborn was allocated 8 days for this engagement and assigned 1 full-time security engineer to conduct a comprehensive review of the smart contracts within scope. The engineer is an expert in blockchain and smart contract security, with advanced skills in penetration testing and smart contract exploitation, as well as extensive knowledge of multiple blockchain protocols.
The objectives of this assessment are to:
Identify potential security vulnerabilities within the smart contracts.
Verify that the smart contract functionality operates as intended.
In summary, Halborn identified several areas for improvement to reduce the likelihood and impact of security risks, which were partially addressed by the Forever Money team. The main recommendations are:
To implement a slippage limiter in the exactInOnPool function.Removing _tokenIds inside the burn function.To manage the claim rewards from in the unstaking function explicitly before withdrawing a position.
Scope#
Findings Overview#
# | Title | Severity | Score | Status |
|---|---|---|---|---|
HAL-01 | Swaps have no on-chain slippage protection | Medium | 5.0 | Solved01/08/2026 |
HAL-02 | Burn operation fails to remove token ID from registry | Medium | 5.0 | Solved12/30/2025 |
HAL-03 | Vesting bypass via spot price manipulation | Medium | 5.0 | Solved01/08/2026 |
HAL-04 | Staking rewards permanently lost during unstake operation | Medium | 5.0 | Solved01/08/2026 |
HAL-05 | Position manager initialization is permissionless | Low | 3.4 | Risk Accepted01/09/2026 |
HAL-06 | Non-atomic initialization of fee splitter creates DoS window | Low | 2.5 | Risk Accepted01/09/2026 |
HAL-07 | View functions revert on empty sets instead of returning empty values | Informational | 1.7 | Solved01/08/2026 |
HAL-08 | Operations on staked positions return unclear errors | Informational | 1.7 | Solved01/08/2026 |
HAL-09 | Invalid escrow type values can permanently lock positions | Informational | 1.5 | Solved01/08/2026 |
HAL-10 | Direct token transfers to LiquidityManager cannot be withdrawn | Informational | 0.8 | Solved01/08/2026 |
HAL-11 | Dangling token approvals in increaseLiquidity | Informational | 0.5 | Solved01/08/2026 |
HAL-12 | Misleading comment regarding bytes32 conversion | Informational | 0.0 | Solved01/08/2026 |
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.
