Summary
100% of all REPORTED Findings have been addressed
- 8Acknowledged
- 2Risk Accepted
- 4Solved
- 14All Findings
- Critical0
- High0
- Medium0
- Low3
- 2Risk A.
- 1Solved
- Informational11
- 8Ack.
- 3Solved
Introduction#
SaucerSwap Labs engaged Halborn to perform a smart contract security assessment of the V3 Limit Order Reactor from October 15th, 2026 to October 15th, 2026. The review focused on the commit that makes SIG_MODE_DELEGATED (0x02) vault authorization fail-closed and also reports issues observed in surrounding unchanged code. The Scope section lists the reviewed files, commits, exclusions, and assessment limits.
The V3 Limit Order Reactor is a UniswapX-derived settlement contract deployed on Hedera by SaucerSwap Labs. It processes partial-fill limit orders signed by swappers and executed by fillers through Permit2 allowances. The commit under review introduces fail-closed authorization for the delegated signature mode: IDelegatorVault.authorizeOrder now returns a bytes4 magic value, PartialFillLimitOrderReactor::_authorizeDelegated checks both contract existence and that return value before spending any allowance, and Vault.authorizeOrder returns the selector. The surrounding code reviewed includes the Vault and VaultManager contracts, the V3-style oracle integration for price bounds, and the broader partial-fill reactor settlement path.
Assessment Summary#
Halborn was allocated 1 business day for this engagement and assigned 1 full-time security engineer to conduct a comprehensive review of the source code 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 were to:
Verify that the
SIG_MODE_DELEGATEDfail-closed check correctly gates vault authorization and cannot be bypassed by a non-vault contract.Identify security issues in the delegated authorization path, the
Vault,VaultManager, and surrounding reactor code.Assess the correctness of the bytecode deployed on Hedera mainnet against the audited source.
Review Permit2 allowance exposure for the deployed reactor.
In summary, Halborn identified several areas for improvement to reduce the likelihood and impact of security risks, which were partially addressed by the SaucerSwap Labs team. The primary recommendations were:
Bind delegated authorization to a trusted vault registry so that only VaultManager-created clones can authorize 0x02 orders, eliminating the echo-fallback bypass regardless of the accepted return value.Deprecate the mainnet reactor and migrate allowances to a corrected deployment, given that the deployed bytecode matches the pre-commit revision and retains the original fail-open behavior.Authenticate the vault oracle pool in VaultManager.createVault against the SaucerSwap V2 factory and require enough observation history for the TWAP window, so that the vault creator cannot choose the price source.Correct revert classification and NatSpec so that vault policy failures surface to callers with accurate selectors and the IDelegatorVault documentation reflects the actual consent property.Deploy the fixed reactor, the new Vault implementation and a new VaultManager together, and do not point a manager built with the earlier Vault implementation at the fixed reactor, because its vaults cannot return the required authorization value.
Test Approach and Methodology#
Halborn used manual line-by-line review of the commit diff and its callers, automated static analysis with Slither, Aderyn, and Semgrep, Foundry test execution including attack reproductions, runtime bytecode comparison against the deployed Hedera mainnet reactor, and a Permit2 event scan. Manual review examined the SIG_MODE_DELEGATED authorization path introduced by the commit, the IDelegatorVault interface and its interaction with PartialFillLimitOrderReactor, the Vault and VaultManager contracts, the V3 Dutch and partial-fill reactor paths, revert classification logic, NatSpec accuracy, and the Hedera-specific deployment context. The assessment included:
Manual line-by-line review of the commit diff, its callers, and the surrounding unchanged authorization and settlement code.
Foundry test execution, including a baseline run of 674 passing tests and targeted reproductions of the echo-fallback drain, ERC-1271 parity, and skip classification issues.
Static analysis with Slither, Aderyn, and Semgrep, with all results triaged against the codebase.
Runtime bytecode comparison of the deployed Hedera mainnet reactor (account
0.0.10815913) against both the pre-commit and post-commit builds via the public mirror node.Permit2 event scan for allowances to the deployed reactor address.
Material limits: Findings outside the commit diff did not receive the same depth of review as in-scope changes; the testnet reactor was not measured.
Risk Methodology#
4.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 |
4.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 |
4.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 |
|---|---|---|---|---|
| Delegated Authorization Accepts A Constant Word That Request-Echoing Fallbacks Return | Low | 2.5 | Risk Accepted10/18/2026 | |
| Deployed Mainnet Reactor Retains The Fail-Open Delegated Authorization Path | Low | 2.5 | Risk Accepted10/18/2026 | |
| Vault TWAP Oracle Pool Is Not Authenticated Or Checked For Observation History | Low | 2.5 | Solved10/18/2026 | |
| Vault Withdrawal Slippage Bounds Use Computed Amounts For Fee-Bearing Tokens | Informational | 1.7 | Acknowledged10/18/2026 | |
| LP Withdrawals Depend On The Vault Admin Receiving The Withdraw Fee | Informational | 1.6 | Solved10/26/2026 | |
| A Dust Settlement Consumes A Single-Use Taker Order | Informational | 1.3 | Acknowledged10/18/2026 | |
| Vault Deposits Revert While One Inventory Reserve Is Zero | Informational | 0.8 | Acknowledged10/18/2026 | |
| Vault Cannot Revoke Its Standing Permit2 Allowance To The Reactor | Informational | 0.8 | Acknowledged10/18/2026 | |
| Some Delegated Authorization Rejections Produce Empty Revert Data | Informational | 0.5 | Solved10/18/2026 | |
| VaultManager Reactor Rotation Has No Hook-Compatibility Check | Informational | 0.5 | Acknowledged10/18/2026 | |
| V3 Dutch Cosigner Sets Decay Start And Exclusivity Outside Swapper-Signed Bounds | Informational | 0.5 | Acknowledged10/18/2026 | |
| Vault Delegatee Authorization Has No Cumulative Exposure Budget Or Expiry | Informational | 0.3 | Acknowledged10/18/2026 | |
| Vault Delegatee Verification Accepts Only secp256k1 Signatures | Informational | 0.1 | Acknowledged10/18/2026 | |
| Expired-Order Cleanup Accepts A Delegated Mode Byte Without A Signature | Informational | 0.0 | Solved10/18/2026 |
Findings & Tech Details#
Description
Recommendation
Remediation Comment
Description
Recommendation
Remediation Comment
Description
Recommendation
Description
Recommendation
Remediation Comment
Description
Recommendation
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
Recommendation
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.
