Prepared by:
HALBORN
Last Updated 10/02/2025
Date of Engagement: September 15th, 2025 - September 23rd, 2025
100% of all REPORTED Findings have been addressed
All findings
11
Critical
0
High
0
Medium
2
Low
7
Informational
2
TeaFi engaged Halborn to conduct a security assessment on their smart contracts beginning on September 15th, 2025 and ending on September 23th, 2025. The scope of this assessment was limited to the smart contracts provided to the Halborn team. Commit hashes and additional details are documented in the Scope section of this report.
SteamFi Pre-Vaults manage user staking positions with modular StakingStrategy and RewardStrategy contracts, allowing flexible protocol integrations and reward logic. The system supports native/ERC-20 assets, on-behalf operations via EIP-712, and robust lifecycle management (stake → unstake → withdraw) with cooldowns, granular pause controls, and security safeguards.
Halborn was provided 7 days for the engagement and assigned 1 full-time security engineer to review the security of the smart contracts in scope. The engineer is a blockchain and smart contract security expert with advanced penetration testing and smart contract hacking skills, and deep knowledge of multiple blockchain protocols.
The purpose of the assessment is to:
Identify potential security issues within the smart contracts.
Ensure that smart contract functionality operates as intended.
In summary, during the assessment Halborn identified several areas for improvement to reduce both the likelihood and impact of potential risks, which were mostly addressed by the TeaFi team. The primary suggestions include:
Decoupling the reward claiming mechanism from the withdrawal process to prevent permanent reward forfeiture.
Modify the reward calculation logic to account for the full period, ensuring users receive rewards until positions are actually withdrawn.
Update _receiveAssets() to refund excess ETH to msg.sender instead of from.
Implement a mechanism to track and close underlying protocol positions upon user withdrawal.
Replace manual price updates with automated oracle feeds to eliminate admin-triggered frontrunning opportunities.
Halborn performed a combination of manual code review and automated security testing to balance efficiency, timeliness, practicality, and accuracy in regard to the scope of this assessment. While manual testing is essential to uncover flaws in logic, process, and implementation, automated testing techniques enhance coverage of smart contracts and can quickly identify issues that do not follow security best practices.
The following phases and associated tools were used throughout the assessment:
Research into the architecture, purpose, and use of the platform.
Manual code review and walkthrough of the smart contracts to identify potential logic issues.
Manual testing of all core functions, including supply, withdraw, repay, and borrow, to validate expected behavior and identify edge-case vulnerabilities.
Local testing to simulate contract interactions and validate functional and security assumptions.
Local deployment and testing with Foundry.
| 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
2
Low
7
Informational
2
| Security analysis | Risk level | Remediation Date |
|---|---|---|
| Reward Forfeiture Due to Improper Vault Strategy Integration | Medium | Solved - 09/22/2025 |
| Stale Price Oracle Vulnerability in Reward Distribution | Medium | Risk Accepted - 09/30/2025 |
| User Withdrawals Leave Underlying Strategy Positions Open | Low | Risk Accepted - 09/30/2025 |
| Missing Weight Sum Validation in Reward Distribution | Low | Solved - 09/22/2025 |
| Fee-on-Transfer Token Incompatibility in Staking Vault Contract | Low | Solved - 09/22/2025 |
| Artificial APY Limitation Restricting Protocol Flexibility | Low | Solved - 09/22/2025 |
| No Check for Duplicate Reward Assets in addRewardAsset() | Low | Solved - 09/23/2025 |
| Excess ETH Refund Can Be Redirected to Arbitrary User in SteamFiVault.sol::_receiveAssets() | Low | Solved - 09/25/2025 |
| Decimal Precision Misconfiguration in Price Parameters | Low | Solved - 09/23/2025 |
| Redundant ETH Refund Check in _receiveAssets() | Informational | Solved - 09/23/2025 |
| Centralization Risk | Informational | Solved - 09/23/2025 |
//
//
//
//
//
//
//
//
//
//
//
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
Steam-Fi Pre-Vault
* Use Google Chrome for best results
** Check "Background Graphics" in the print settings if needed