AntFleet

Anatomy · b6cf244f-0

verify-trade.sh prints “verified” without checking provider/sender match — README claim is misleading

mediumdocs-gap
repo a16d2030·PR #5·reviewed 1 week ago

The vulnerable code

bankr-signals/scripts/verify-trade.sh:40-75

Code snippet unavailable.

The reasoning

Opus

verify-trade.sh prints “verified” without checking provider/sender match — README claim is misleading

mediumdocs-gaphigh
  • bankr-signals/scripts/verify-trade.sh:40-75
  • bankr-signals/SKILL.md:78-90
The README claims verify-trade.sh checks sender ↔ provider, token/direction, and timestamp. The script only checks the TX exists and status==0x1; it never receives, let alone validates, the provider address, token symbol, direction, or signal timestamp. auto-copy.sh therefore blindly trusts a provider-supplied TX hash that the provider didn't actually send — anyone could publish someone else's TX as their own 'signal'. The documentation actively misrepresents the security model.

Recommendation

Either implement the documented checks (accept --provider/--token/--action arguments and compare against the receipt's `from` and decoded input) or rewrite the README to describe the actual (weaker) verification. Until then this is a falsehood that undermines the entire 'you can't fake your track record' claim.

GPT-5

verify-trade.sh does not perform the documented checks (provider, token/direction, timestamp)

mediumdocs-gaphigh
  • bankr-signals/scripts/verify-trade.sh:42-55
  • bankr-signals/references/signal-format.md:63-67
  • bankr-signals/SKILL.md:126-135
Implementation only checks that the transaction exists and succeeded, and prints from/to and some numeric fields. It does not validate sender against provider, correlate token/direction, or compare timestamps, despite documentation promising those checks.

Recommendation

- Extend verify-trade.sh to accept optional flags, e.g., --provider ADDRESS, --action BUY|SELL, --token SYMBOL, --timestamp TS, and perform these validations. At a minimum, compare .result.from to --provider and ensure block timestamp is within a threshold of the provided timestamp (requires fetching block by number). - Update auto-copy.sh to pass --provider and expected fields when verifying. - If token/direction verification cannot be trustlessly derived, document the limitation explicitly and remove the claim from docs.

The agreement

Both frontier models flagged this within the same line range. AntFleet's unanimous gate fired — the finding posted on the PR.

Closure

Tweet thread template

tweet 1 of 8188 / 280

Two frontier models reviewed PR #5 on a16d2030. Both found this bug: medium docs-gap: verify-trade.sh prints “verified” without checking provider/sender match — README claim is misleading

tweet 2 of 8129 / 280

The vulnerable code (bankr-signals/scripts/verify-trade.sh:40-75): (full snippet at https://www.antfleet.dev/anatomy/b6cf244f-0)

tweet 3 of 8280 / 280

What Opus saw: "The README claims verify-trade.sh checks sender ↔ provider, token/direction, and timestamp. The script only checks the TX exists and status==0x1; it never receives, let alone validates, the provider address, token symbol, direction, or signal timestamp. auto-cop…

tweet 4 of 8274 / 280

What GPT-5 saw: "Implementation only checks that the transaction exists and succeeded, and prints from/to and some numeric fields. It does not validate sender against provider, correlate token/direction, or compare timestamps, despite documentation promising those checks."

tweet 5 of 897 / 280

Both flagged the same line range. AntFleet's unanimous gate fired — the finding posted on the PR.

tweet 6 of 893 / 280

The fix landed in commit pending: (view diff at https://www.antfleet.dev/anatomy/b6cf244f-0)

tweet 7 of 881 / 280

AntFleet reviews every PR with two frontier models. Only unanimous findings post.

tweet 8 of 877 / 280

Full anatomy + reasoning + diffs: https://www.antfleet.dev/anatomy/b6cf244f-0

Paste into X composer one tweet at a time. X has no multi-tweet intent API.

medium docs-gap: verify-trade.sh prints “verified” without checking provider… — AntFleet anatomy