Agent Wormhole

Agent Wormhole

runningoffcode

Artifacts
wormhole-x402, mcp-trade-guard, agent-wormhole, dashboard
Final artifact verified
[email protected]
Review window
2026-09-21 → 2026-09-25
Engagement
Whitebox review | 83 findings | 7 rounds of remediation verification
Findings summaryAll resolved | 0 open
84Findings
84
All Findings
83
Resolved
1
Withdrawn
0
Open
3Critical
3 resolved | Unauthorised execution on the Arc rail
28High
28 resolved | Batch-array smuggling past the trade guard
33Medium
33 resolved | Quote-text injection scanner evasion
19Low
18 resolved | 1 withdrawn | Address handling & rate-limit hardening

Assessment coverage

Categories follow the CertiK Skynet six-category shape. What was in scope for a whitebox code review is assessed; everything else is marked not assessed rather than scored.

Code Security

83 of 83 findings resolved, every fix proven by execution.

Operational Resilience

Median time to first fix under 4 hours across 7 rounds. One class needed 6 releases.

Fundamental Health

Threat model, coverage limits and known evasion rates published in the README, not buried.

Governance Strengthnot assessed

No token or on-chain governance in scope.

Market Stabilitynot assessed

No token in scope.

Community Trustnot assessed

Outside a code review.

Coverage & rigor

1,207
Production symbols adjudicated
100% of 1,708 across 260 files
1.19M
Property-fuzz cases executed
seeded & reproducible
423
Exploitation variants run
against the real, unmodified code
148
Harnesses written
across 8 campaign directories

Fuzz cases by campaign

1,190,703 total
Request digest653,525 55%
Quote text360,586 30%
EVM78,055 7%
Solana58,717 5%
Delivery & MCP39,820 3%

Share of every seeded property-fuzz case, by campaign.

Exploitation environments

  • Shipped listen() HTTP verifier, run as its own process
  • Real Next dashboard in Docker against a real Postgres
  • Real mcp-trade-guard proxy against a recording broker mock
  • Real MCP stdio server driven over pipes
  • Anvil fork of Arc mainnet at block 21,990,872

Findings

SeverityCountResolvedWithdrawnOpen
CRITICAL3300
HIGH282800
MEDIUM333300
LOW191810
Found during remediation1100
Total848310

Selected findings

5 of 84 shown
AW-01Arc rail authorizationResolved

A funded mainnet signer could be directed by any GitHub account. The payment-policy engine itself was correct (every ARC-000 to ARC-007 rule enforced under test), but task creation was the real authorization boundary, and signup was open, so the engine enforced a policy the attacker had written. Proven end-to-end on an anvil fork of Arc mainnet through the real OAuth path; no traffic sent to any host the project operates.

AW-02Batch-array bypass of the trade guardResolved

A JSON-RPC batch array skipped the guard entirely, because the guard was written against a single JSON-RPC object.

AW-03Caller-chosen quantity in the trade guardResolved

The spend cap was checked against a number the caller supplied rather than one derived from the order.

AW-09Dashboard server actions skip admission checksResolved

The metered product was served through Next server actions that omitted the admission checks their API twins enforced, so the same operations were reachable without the gate the API applied.

AW-17Tenant-writable global registryResolved

A registry intended as shared read state was writable by any tenant, letting one tenant alter state other tenants relied on.

Remediation timeline

Round 1
0.9.2 + dashboard

67 closed, 10 open, 5 partial, 1 withdrawn

Claimed83 of 83 closed

Round 2
0.9.3

15 closed, 1 was our false positive

Claimed16 closed

Round 3
0.9.4

Confirmed, 0 of 38 separators evade

Claimedwhitespace evasion closed

Round 4
0.9.5

Confirmed, address recovery not defeatable

Claimeddestination carve-out closed

Round 5
0.9.6

Placements closed, class open one step over

Claimedseparator placement closed

Round 6
0.9.7

Runs closed, class open one step over

Claimedseparator runs closed

Round 7
0.9.9

Confirmed, class closed at the root

Claimedfragmentation closed

Verification method

Every claim in this scorecard is backed by an executed test, not a code reading.

Findings proven by running an exploit or a harness84 / 84
Every assertion paired with a control that fails when the harness is miswiredyes
Fixes re-tested against the published artifact, not the client reportyes
Independent reproduction of every client-stated metricyes
False-positive sweep on the final build210 honest strings, 0 refused
Regression sweep against everything closed in earlier rounds0 regressions
Deliberate attempts to defeat the final control14 attempted, 0 succeeded

Scope & limitations

Reviewed: a whitebox review of the published packages and their source (wormhole-x402, mcp-trade-guard, agent-wormhole) and the payment and ledger code paths of the dashboard. This covered the x402 guard, the trade guard and the Arc execution rail. 84 files, 13,074 SLOC.

Out of scope: this was a source-code review, not a general infrastructure or live-penetration test. Code paths, files and components not named above, and anything added after the review window, were not assessed. Further review is available as a separate engagement.

A security review reduces risk and does not eliminate it. This scorecard describes the artifacts named above at the versions named above, and says nothing about any later version.