# An already executed InTxTracker can still be added

ZetaChain's AddToInTxTracker never checks if an inbound tx was already executed, letting anyone re-add executed trackers that observers keep re-voting, causing network congestion/DoS.

- Payout: Contest reward
- Severity: medium
- Program: ZetaChain
- Credited: zhaojie
- Disclosed: 2024-09-06
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2023-11-zetachain-findings/issues/218
- Library page: https://bugbountylibrary.com/r/c4%3A2023-11-zetachain%3AM-29
- Tags: domain:web3 impact:dos kind:contest platform:code4rena sev:medium tech:go technique:source-review vuln:business-logic vuln:dos

**Target:** Cosmos SDK module msg server (AddToInTxTracker / VoteOnObservedInboundTx)
**Root cause:** AddToInTxTracker stores an InTxTracker without verifying the inbound tx was already processed; failed/duplicate trackers are never removed, so observers keep fetching and re-voting on them.
**Steps:**
1. Call `MsgAddToInTxTracker` with a TxHash of an already-executed inbound tx (proof verifies since it's a real tx).
2. Tracker is stored via `k.SetInTxTracker` with no executed-check.
3. Observer picks it up via `GetInboundTrackersForChain`, parses tx, sends `MsgVoteOnObservedInboundTx`.
4. Vote fails because `msg.Digest` already voted; no CCTX created, so `RemoveInTxTrackerIfExists` never runs.
5. Repeat en masse with many executed tx hashes to congest the network.
**How found:** Code review of AddToInTxTracker noting the missing executed-check, combined with tracing VoteOnObservedInboundTx where tracker removal only happens on successful CCTX creation.
**Exploitation:** Attacker submits many AddToInTxTracker messages referencing already-executed inbound txs; observers repeatedly fetch and attempt votes that cannot pass, never clearing the trackers, degrading network throughput.
**Insight:** In permissionless validation designs, check whether dedup/cleanup only runs on the success path; entries that fail validation but persist become a free amplification vector for observers.
