Skip to content
$1,000,000 in security audit grants are live now, Apply here →

Security review · May 2026

Canary Chain Configuration Verification

for USDT0

Guardian's review of Canary Chain Configuration Verification for USDT0, published May 2026. The report records 4 findings, including 4 informational.

Published
Review window
April 20 to May 5, 2026
Language
TypeScript
Chains
Ethereum, Arbitrum, Ink, Hyperliquid, Polygon, Monad, Solana, Stellar
Sector
Stablecoins
  • 0 Critical
  • 0 High
  • 0 Medium
  • 0 Low
  • 4 Informational

4 acknowledged

Scope

Findings 4

  1. I-01 Informational XAUT0 BSC-Conflux canary configs omitted Warning Acknowledged
    Location
    canary-2.json

    Description

    canary-2.json does not include the XAUT0 LayerZero ULN config updates for the live BSC <-> Conflux peer pair. The Safe transactions for BSC and Conflux exist and replay successfully, but the decoded canary-2-xaut0 payload has no row for BSC source EID 30102 to Conflux destination EID 30212, and no row for Conflux source EID 30212 to BSC destination EID 30102.

    This is not an unsupported route. Live peer checks returned true for BSC XAUT0 recognizing Conflux and for Conflux XAUT0 recognizing BSC. After replaying all submitted Safe calldata on local forks, the BSC and Conflux fork tests both failed with assertion failed: 2 != 3. The failure happened after the expected confirmations matched, so the stale value is the required DVN count. BSC -> Conflux and Conflux -> BSC remain at two required DVNs while the other canary-updated XAUT0 routes move to three required DVNs.

    If the batch is approved as-is, the XAUT0 BSC <-> Conflux peer pair will keep weaker pre-canary ULN requirements while the rest of the XAUT0 mesh is updated to include the canary DVN. That leaves one live peer pair inconsistent with the intended post-canary security model.

    Recommendation

    Add Safe calldata that updates both missing XAUT0 ULN configs before approving or executing the batch: BSC source EID 30102 to Conflux destination EID 30212, and Conflux source EID 30212 to BSC destination EID 30102.

  2. I-02 Informational Hyperliquid TOKEN Safe owner mismatch Warning Acknowledged
    Location
    -

    Description

    The Hyperliquid TOKEN verifier rerun reached the real governance checks and failed only the Safe owner-set check. The TOKEN proxy owner and ProxyAdmin owner both point to the expected Safe, 0xb64a89ad247a2d691a728bb6822a85eedd7fc541, and the Safe threshold matches the expected value of 3. However, getOwners() does not match the verifier's expected signer set.

    The expected owner set includes 0x1a6362ad64ccff5902d46d875b36e8798267d154, but that address is missing from the live Hyperliquid TOKEN Safe. The live Safe instead includes 0x00f6d2b4b69ce697f913da16a9d73283dc4c78f2, which is not part of the verifier's expected set for this check.

    TOKEN/hyperliquid
    Safe: 0xb64a89ad247a2d691a728bb6822a85eedd7fc541
    Failed check: safe_owners
    Missing owner: 0x1a6362ad64ccff5902d46d875b36e8798267d154
    Extra owner:   0x00f6d2b4b69ce697f913da16a9d73283dc4c78f2
    

    Recommendation

    Confirm which signer set is intended for the Hyperliquid TOKEN Safe.

  3. I-03 Informational TON remains a documented two-DVN Solana pathway outside the Canary rollout Warning Acknowledged
    Location
    -

    Description

    The local LayerZero config explicitly defines the Solana to TON XAUT0 connection with only two required DVNs: LayerZero Labs and USDT0. The live Solana state matches that documented configuration. This is not a live/config mismatch and it is not a missing-wiring issue: TON is already wired/configured with peer, nonce state, send/receive libraries, send/receive ULN configs, executor config, and enforced options.

    The gap is that the current signer scope is described as a Canary DVN add for bringing Solana pathways online, but the scoped Squads bundle only upgrades Stable, BSC and Monad to the three-DVN set. TON remains a supported Solana pathway in layerzero-xaut0.config.ts, but proposals #47, #50 and #54-#66 do not target TON and therefore leave it on the documented two-DVN LayerZero + USDT0 configuration.

    Recommendation

    Clarify the intended TON policy before signers treat this bundle as complete Canary coverage for Solana-supported pathways. If TON should receive the same Canary quorum as Stable, BSC and Monad, add explicit Solana proposals to update the TON send ULN and receive ULN required DVNs and verify executor/enforced-options coverage. If TON is intentionally excluded, document that exclusion in the signer scope and local config comments so the two-DVN TON pathway is not mistaken for an omitted part of the Canary rollout.

  4. I-04 Informational Monad enforced options use generic gas instead of the XAUT config Warning Acknowledged
    Location
    layerzero-xaut0.config.ts

    Description

    The XAUT config defines MONAD_ENFORCED_OPTIONS with 240000 gas for send, sendAndCall lzReceive, and sendAndCall compose execution. The Solana to Monad connection uses those Monad-specific enforced options in the connection tuple.

    Scoped Squads proposal #66 does not apply those values. It decodes to the generic EVM options used by Stable and BSC: send lzReceive gas 200000, sendAndCall lzReceive gas 100000 and sendAndCall compose gas 100000. The transaction simulation passes because the program accepts the values, but the resulting Solana XAUT0 Monad peer would not match the gas settings defined by layerzero-xaut0.config.ts.

    Consequently, approving #66 as-is would configure the Monad route with lower enforced execution gas than the XAUT config specifies. If Monad requires the higher gas values encoded in MONAD_ENFORCED_OPTIONS, Solana-originated XAUT0 messages to Monad can be underfunded for destination execution.

    Recommendation

    Replace proposal #66 with a SetEnforcedOptions transaction that matches MONAD_ENFORCED_OPTIONS or update layerzero-xaut0.config.ts and the signer scope if the generic values are intentional for Solana to Monad. Re-run the Squads decode, exact simulation and post-safe-txs model after the replacement.

More from USDT0

All 20 reports
  1. Stellar Deployment

    2 findings 2 findings: 2 informational
  2. Corn Network Delisting

    1 finding 1 finding: 1 low
  3. Solana Transaction Verification

    4 findings 4 findings: 1 medium, 3 informational
  4. XAUT0 Wiring

    4 findings 4 findings: 2 low, 2 informational

Put your code through the same review.

This review started with a conversation about scope. Tell us what you are building and we will plan yours with you.

Get a quote