Summary
100% of all REPORTED Findings have been addressed
- 6Not Applicable
- 16Risk Accepted
- 5Solved
- 27All Findings
- Critical0
- High0
- Medium2
- 1N/A
- 1Risk A.
- Low15
- 9Risk A.
- 4N/A
- 2Solved
- Informational10
- 6Risk A.
- 3Solved
- 1N/A
Introduction#
Saucerswap Labs engaged Halborn to perform a security assessment of their smart contracts from May 4th, 2026 to May 18th, 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.
SaucerSwap is a decentralized exchange and DeFi protocol built on Hedera. The audited codebase extends several upstream Uniswap components for the Hedera environment, including a fork of Permit2, a fork of the Universal Router, and a custom UniswapX partial-fill settlement stack. The scoped contracts introduce Hedera-specific support for HTS tokens, native HBAR flows, Permit2 authorization, Universal Router execution, partial-fill limit orders, fee tiers, executor callbacks, and filler validation.
The assessment focused on correctness across these cross-repository boundaries, especially where EVM assumptions interact with Hedera-specific native balance, token association, precompile, wallet-signing, and block-metadata behavior. As an additional scope item, Halborn reviewed the newly introduced Hedera personal-signing path in Permit2 and UniswapX, including compatibility with Hedera Account Service signature verification and coexistence with the existing EIP-712 flow; this additional review was limited to Hedera compatibility and the opt-in personal-signing changes.
Assessment Summary#
Halborn was allocated 10 business 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 EVM smart contracts, DeFi protocols, and Hedera-specific smart contract behavior.
The objectives of this assessment were to:
Identify potential security vulnerabilities within the smart contracts.
Verify that the smart contract functionality operates as intended.
Assess the correctness of the Hedera-specific adaptations, including HTS and HBAR accounting, Permit2 authorization, HAS and wallet-signing behavior, Universal Router execution, and partial-fill settlement logic.
In summary, Halborn identified several areas for improvement to reduce the likelihood and impact of security risks, some of which were addressed by the Saucerswap Labs team. The primary recommendations were:
Replace full-balance native HBAR reads with attributed per-call and per-command accounting so residual router or reactor balances cannot be drained, bridged, or counted as unrelated settlement output.Remove permissionless allowance and full-balance executor reserve patterns, and bind executor-held balances to the settlement leg that created them before allowing Permit2 or router consumption.Use Hedera-compatible priority-fee and auction calculations that do not rely on block.basefee, which is unavailable on Hedera, and prefer timestamp-based logic where block-number cadence differs from Ethereum assumptions.Replace live xSAUCE balance reads for fee-tier discounts with checkpointed, time-weighted, or minimum-holding-duration logic so temporary balances cannot qualify for higher fee tiers within a single transaction.Separate fill-state semantics for taker-only and maker-side fills, and avoid shared principalFilled state from letting dust maker fills permanently block takerOnce orders.
Risk Methodology#
3.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 |
3.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 |
3.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 |
|---|---|---|---|---|
| Priority-fee reactors miscompute scaling on Hedera because block.basefee is unavailable | Medium | 6.3 | Not Applicable05/26/2026 | |
| Shared principalFilled lets a 1-wei maker fill permanently brick a taker order using takerOnce | Medium | 5.4 | Risk Accepted05/26/2026 | |
| Reactor bypasses Permit2 for AMM-output pull, leaving HTS allowance ceiling fragile | Low | 4.2 | Risk Accepted05/27/2026 | |
| HBAR allowance preflight via callStatic returns wrong response code breaking quoter tooling | Low | 3.8 | Risk Accepted05/27/2026 | |
| Dutch decay and exclusivity windows elapse 10x faster on Hedera block cadence | Low | 3.8 | Not Applicable05/27/2026 | |
| Per-market fee override is ignored when market discount tiers are absent | Low | 3.4 | Risk Accepted05/27/2026 | |
| Anyone can delete expired order state and harvest storage refund, erasing cancellation history | Low | 3.1 | Risk Accepted05/27/2026 | |
| Missing recipient validation in claimFees allows operator typo to burn HBAR or zero bookkeeping | Low | 3.1 | Solved05/26/2026 | |
| Best-effort batch flag fails for most commands leaving user ETH stranded on revert | Low | 3.1 | Risk Accepted05/27/2026 | |
| Native HBAR deposits forwarded with wrong input token lock funds in Across bridge | Low | 2.8 | Not Applicable05/27/2026 | |
| Adversarial validation contract can DoS specific fillers and inflate gas costs via uncapped returndata | Low | 2.5 | Not Applicable05/27/2026 | |
| HAS reverts on malformed signatures and invalid accounts cause per-call DoS | Low | 2.5 | Risk Accepted05/27/2026 | |
| Callers can drain or miscredit unattributed HBAR balances | Low | 2.5 | Risk Accepted05/26/2026 | |
| Takers with tight Permit2 allowances repeatedly grief fillers by causing fee-pull settlement reverts | Low | 2.5 | Risk Accepted05/27/2026 | |
| Nested sub-plans can exhaust quoter simulation gas | Low | 2.5 | Not Applicable05/27/2026 | |
| Relayer captures all swap output when signed route uses MSG_SENDER recipient without sender verification | Low | 2.2 | Risk Accepted05/27/2026 | |
| Shared Sequencing Nonce Lets One Filler Invalidate Another Filler's Batch | Low | 2.2 | Solved05/24/2026 | |
| Cancellation callbacks lack explicit reentry protection | Informational | 1.3 | Risk Accepted05/27/2026 | |
| Protocol fee accrual writes no event, making off-chain treasury monitoring brittle and unreliable | Informational | 1.1 | Solved05/27/2026 | |
| Missing Dual-Ledger Documentation Causes Confusing Reverts for Integrators Using HBAR Permits | Informational | 1.1 | Solved05/27/2026 | |
| Permit2 signatures replay across sister ERC-1271 wallets that omit owner-binding | Informational | 1.1 | Risk Accepted05/27/2026 | |
| Deployment workflows expose keys and recovery gaps | Informational | 1.1 | Risk Accepted05/27/2026 | |
| Any caller can drain executor reserves via permissionless Permit2 allowance and full-balance accounting | Informational | 0.8 | Solved05/26/2026 | |
| Malformed inputs produce raw panics and incomplete diagnostics | Informational | 0.8 | Risk Accepted05/27/2026 | |
| Upstream Permit2 lockdown semantics let outstanding signatures re-arm reactor and Universal Router allowances simultaneously | Informational | 0.0 | Risk Accepted05/27/2026 | |
| Key Rotation Leaves a Race Window Where Revoked-Key Permits Remain Redeemable | Informational | 0.0 | Risk Accepted05/27/2026 | |
| Signed route context can mislead hook integrations | Informational | 0.0 | Not Applicable05/27/2026 |
Findings & Tech Details#
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Proof of Concept
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Description
Recommendation
Remediation Comment
Description
Recommendation
Description
Recommendation
References
- Fix Commit: https://github.com/saucerswaplabs/UniswapX/commit/faa8965b6b8c56dbca3550cb7ed601fd770c6610
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Proof of Concept
Recommendation
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
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.
