Prepared by:
HALBORN
Last Updated Unknown date
Date of Engagement: October 7th, 2024 - November 8th, 2024
100% of all REPORTED Findings have been addressed
All findings
28
Critical
3
High
3
Medium
6
Low
5
Informational
11
Lucid Labs engaged Halborn to conduct a security assessment on their smart contracts revisions beginning on October 7th, 2024 and ending on November 8th, 2024. The security assessment was scoped to the smart contracts provided to the Halborn team.
Commit hashes and further details can be found in the Scope section of this report.
The team at Halborn was provided 5 weeks for the engagement and assigned a full-time security engineer to evaluate the security of the smart contract.
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 contracts.
In summary, Halborn identified some improvements to reduce the likelihood and impact of risks, which were partially addressed by the Lucid Labs team. The main ones were the following:
Implement a working mechanism about quadratic implementation and governor strategy.
Add access controls for asset controller.
Remove the division by zero probability.
Implement a check in burnAndBridgeMulti to ensure all provided adapter addresses are unique.
Create another FlexVotingClient to apply quadratic transformation to individual votes before aggregation.
Implement Alpha Finance's formula for pricing LP tokens.
Halborn performed a combination of manual and automated security testing to balance efficiency, timeliness, practicality, and accuracy regarding the scope of this assessment. While manual testing is recommended to uncover flaws in logic, process, and implementation; automated testing techniques help enhance code coverage and 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.
Smart contract manual code review and walkthrough.
Graphing out functionality and contract logic/connectivity/functions. (solgraph,draw.io)
Manual assessment of use and safety for the critical Solidity variables and functions in scope to identify any arithmetic related vulnerability classes.
Manual testing by custom scripts.
Static Analysis of security for scoped contract, and imported functions. (Slither)
Testnet deployment. ( Hardhat,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
3
High
3
Medium
6
Low
5
Informational
11
| Security analysis | Risk level | Remediation Date |
|---|---|---|
| Quadratic Voting Strategy Incompatible with Quorum Calculation in LucidGovernor | Critical | Solved - 12/02/2024 |
| Lack of Access Control in receiveMessage in AssetController Contract | Critical | Solved - 10/22/2024 |
| Division by Zero in Quadratic Vote Weight Calculation | Critical | Solved - 11/28/2024 |
| Bypass of Bridge Limits in burnAndBridgeMulti Function | High | Solved - 10/22/2024 |
| Mathematical Incompatibility Between FlexVotingClient and QuadraticVoteStrategy | High | Solved - 12/04/2024 |
| LP Token Price Manipulation Through Reserve | High | Solved - 12/05/2024 |
| Front-Running Vulnerability in Two-Step Deployment and Configuration Process | Medium | Solved - 11/04/2024 |
| Unhandled Exceptions in CCIP Message Processing Can Lead to Cross-Chain Communication Failure | Medium | Risk Accepted - 11/09/2024 |
| UniswapV3 Oracle Vulnerability on L2 Networks Due to Sequencer Downtime | Medium | Solved - 10/28/2024 |
| Excess Fees Retention in AssetController | Medium | Solved - 10/22/2024 |
| Missing Sequencer Uptime Check in BondChainlinkOracle for L2 Deployments | Medium | Solved - 10/23/2024 |
| Uninitialized EIP712 Functionality in VotingControllerUpgradeable __EIP712_init | Medium | Solved - 10/29/2024 |
| Incorrect Gas Refund Calculation Due To EIP-150 Rule In Voting Functions | Low | Solved - 12/04/2024 |
| Improper Initialization of Timelock Delay in receiveMessage Function | Low | Solved - 11/20/2024 |
| Unsafe EIP712 Message Hashing in Cross-Chain Voting Mechanism | Low | Solved - 11/20/2024 |
| CREATE3 Factory Is Not Compatible With ZKSYNC Era | Low | Risk Accepted - 11/23/2024 |
| Failed ETH Transfers Not Handled in RefundGas Function | Low | Solved - 10/29/2024 |
| Useless Token Execution Functions Present in AxelarExecutable Contract | Informational | Solved - 11/19/2024 |
| Unlocked Pragma Compiler | Informational | Solved - 11/21/2024 |
| Useless Interface Import in WormholeAdapter Contract | Informational | Solved - 11/19/2024 |
| Suboptimal Memory Usage in BondChainlinkOracle._getTwoFeedPrice Function | Informational | Solved - 12/04/2024 |
| Missing Zero Amount Check in Cross-Chain Bridge Functions | Informational | Solved - 11/19/2024 |
| Inconsistent Amount Handling After Fee Deduction in Multi-Bridge Transfer | Informational | Solved - 11/20/2024 |
| Inefficient Storage Access Pattern in Message Reception Handling | Informational | Solved - 11/20/2024 |
| Missing Duration Validation Enables Zero Division in Base Asset Bridge | Informational | Solved - 11/20/2024 |
| Insufficient Delegation Control in Connext Cross-Chain Transfers | Informational | Solved - 11/21/2024 |
| Gas Inefficient Role Check Implementation | Informational | Solved - 11/20/2024 |
| Owner Can Renounce Ownership | Informational | Acknowledged - 11/19/2024 |
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
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
Contracts V1
* Use Google Chrome for best results
** Check "Background Graphics" in the print settings if needed