Smart Contract Assessment - Kickoff.fun


Prepared by:

Halborn Logo

HALBORN

Last Updated 02/13/2026

Date of Engagement: February 3rd, 2026 - February 11th, 2026

Summary

100% of all REPORTED Findings have been addressed

All findings

41

Critical

0

High

1

Medium

2

Low

20

Informational

18


1. INTRODUCTION

KickOff.fun engaged Halborn to perform a security assessment of their smart contracts from February 3rd, 2026 to February 11th, 2026. 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 KickOff.fun codebase in scope consists smart contracts that act as a liquidity bootstrapping launchpad that leverages Aerodrome's veAERO governance on the Base network.

2. ASSESSMENT SUMMARY

Halborn was allocated 7 days for this engagement and assigned 2 full-time security engineers to conduct a comprehensive review of the smart contracts within scope. The engineers are experts 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 KickOff.fun team. The main recommendations are:

    • Implement robust autopilot claim validation to prevent double benefits and ensure correct allocation on claim failures.

    • Restrict pool initialization to supported tick ranges to prevent tail-tick setups that bypass price fixing and brick liquidity addition.

    • Add post-swap price verification to ensure the intended price correction is achieved and prevent silent arbitrage failures.

    • Disallow interactions with pre-created slipstream pools to prevent permanent denial-of-service scenarios.

    • Synchronize batch indexing during emergency operations to ensure all NFTs are processed without being skipped.

    • Track and isolate protocol-owned USDC balances to prevent unintended inclusion in final swap calculations.

    • Apply dust deductions only when price correction occurs to prevent unnecessary liquidity reduction.

    • Fix reward accounting during USDC–WETH conversions to prevent balance-donation griefing and reward manipulation.


3. TEST APPROACH AND METHODOLODY

Halborn conducted a combination of manual code review and automated security testing to balance efficiency, timeliness, practicality, and accuracy within the scope of this assessment. While manual testing is crucial for identifying flaws in logic, processes, and implementation, automated testing enhances coverage of smart contracts and quickly detects deviations from established security best practices.

The following phases and associated tools were employed throughout the term of the assessment:

    • Research into the platform's architecture, purpose and use.

    • Manual code review and walkthrough of smart contracts to identify any logical issues.

    • Comprehensive assessment of the safety and usage of critical Solidity variables and functions within scope that could lead to arithmetic-related vulnerabilities.

    • Local testing using custom scripts (Foundry).

    • Fork testing against main networks (Foundry).

    • Static security analysis of scoped contracts, and imported functions (Slither).


4. SCOPE

FILES
(a) Submitted File: kickoff-contracts-f858c9ecab5e4ab3d5d40f177a9f16195863b0f0.zip
(b) Items in scope:
  • /kickoff-contracts-f858c9ecab5e4ab3d5d40f177a9f16195863b0f0/src/interfaces/IAutopilot.sol
  • /kickoff-contracts-f858c9ecab5e4ab3d5d40f177a9f16195863b0f0/src/interfaces/ICLFactory.sol
  • /kickoff-contracts-f858c9ecab5e4ab3d5d40f177a9f16195863b0f0/src/interfaces/ICLPool.sol
↓ Expand ↓
(a) Submitted File: kickoff-contracts-7e7ef2e6729eb2464a5f454927a5559799b35a80.zip
(b) Items in scope:
  • /kickoff-contracts-7e7ef2e6729eb2464a5f454927a5559799b35a80/src/interfaces/IAutopilot.sol
  • /kickoff-contracts-7e7ef2e6729eb2464a5f454927a5559799b35a80/src/interfaces/ICLFactory.sol
  • /kickoff-contracts-7e7ef2e6729eb2464a5f454927a5559799b35a80/src/interfaces/ICLPool.sol
↓ Expand ↓
Remediation Commit ID:
Out-of-Scope: New features/implementations after the remediation commit IDs.

5. Findings Overview

Security analysisRisk levelRemediation
Missing post-swap price verification may allow silent arbitrage failureHighSolved - 02/10/2026
Double Benefit & incorrect allocation via autopilot claim failureMediumRisk Accepted - 02/09/2026
CLPriceArbitrageur Tail Zone - Residual DoS via Attacker LiquidityMediumSolved - 02/13/2026
Pool can be initialized at tail ticks that cannot be covered by tickSpacing=200 positions, permanently bypassing price-fix and bricking liquidity additionLowSolved - 02/10/2026
Permanent Denial of Service (DoS) via Pre-created Slipstream PoolLowSolved - 02/09/2026
Untracked USDC Balance Can Be Incorrectly Included in Final SwapLowRisk Accepted - 02/09/2026
Incorrect reward accounting allows balance-donation griefing during USDC - WETH conversionLowRisk Accepted - 02/10/2026
Ineffective Allowance Reset After Slipstream Position MintLowRisk Accepted - 02/09/2026
Defensive Zero-Amount Check Unreachable in _calculateSqrtPriceX96LowRisk Accepted - 02/09/2026
Unnecessary Balance Delta Check for Non–Fee-on-Transfer Project TokensLowRisk Accepted - 02/09/2026
Liquidity amounts reduced by dust even when price correction is skippedLowSolved - 02/10/2026
Repeated fee claims can permanently lose rounding-dust feesLowRisk Accepted - 02/10/2026
Deadlock in cancelPool via Autopilot DependencyLowRisk Accepted - 02/09/2026
Admin-only rescueTokens allows Arbitrary Withdrawal (Rug Vector)LowNot Applicable - 02/10/2026
Zombie User Lock on Dust TokensLowRisk Accepted - 02/09/2026
Incompatible ERC20 Transfer (No Bool) / ABI DecodeLowSolved - 02/10/2026
No Rescue Mechanism for Locked CL PositionsLowNot Applicable - 02/11/2026
Potential Unbounded Loop in emergencyWithdrawAllNFTsLowSolved - 02/10/2026
Reentrancy Risk in Admin FunctionsLowNot Applicable - 02/10/2026
lockVeAERO() may revert due to missing ownership/operator rights on veNFTLowSolved - 02/10/2026
Edge-case: Incorrect spent-token subtraction can cause liquidity mint to revert LowSolved - 02/11/2026
fixPoolPrice() refund/spend accounting is affected by external donations to CLPriceArbitrageurLowSolved - 02/11/2026
Unvalidated Autopilot Epoch Timestamps (DoS Risk)LowRisk Accepted - 02/11/2026
Missing Input Validation for batchSize in startClaimRewardsFromAutopilotInformationalAcknowledged - 02/09/2026
FinalizeStep Enum and State Variable Defined After UsageInformationalAcknowledged - 02/09/2026
Hardcoded Base Integration Addresses Ignore Factory ConfigurationInformationalAcknowledged - 02/09/2026
AutopilotRewardsClaimed Event Emits Misleading Zero AmountInformationalAcknowledged - 02/09/2026
ERC20.approve(0) pattern may cause token incompatibilityInformationalAcknowledged - 02/10/2026
Missing pool existence check in LPLocker.getLockedLP()InformationalAcknowledged - 02/10/2026
Unused Custom ErrorsInformationalAcknowledged - 02/10/2026
LPLocker Deployer-only setFactory Privilege (Supply Chain)InformationalAcknowledged - 02/10/2026
MEV Theft via Sandwich Attack on Reward ConversionInformationalAcknowledged - 02/10/2026
Batch Index Desynchronization Causes Skipping of NFTs During Emergency OperationsInformationalSolved - 02/09/2026
Unfair Token Distribution via Emergency WithdrawInformationalSolved - 02/10/2026
Unnecessary Locking Deadline Validation in lockVeAEROInformationalAcknowledged - 02/09/2026
wethCollected Storage Variable Used Solely for Event EmissionInformationalAcknowledged - 02/09/2026
Redundant batchInProgress Check in completeAutopilotFinalizationInformationalAcknowledged - 02/09/2026
Unnecessary Storage Reference in retryAutopilotWithdraw LoopInformationalAcknowledged - 02/09/2026
Unused Constant MIN_AUTOPILOT_VOTING_POWERInformationalAcknowledged - 02/09/2026
Fixed DUST_AMOUNT is not token-aware and may be insufficientInformationalAcknowledged - 02/10/2026
WETH donations pollute totalClaimedRewards accounting during finalization InformationalAcknowledged - 02/10/2026

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

Smart Contract Assessment

* Use Google Chrome for best results

** Check "Background Graphics" in the print settings if needed