# Invocation delays are not honoured when protocol unpauses

Taiko Bridge processMessage ignores pause duration when checking invocationDelay, letting a non-preferred executor front-run the preferred executor after unpause and steal the message fee.

- Payout: Contest reward
- Severity: medium
- Program: Taiko
- Credited: t0x1c
- Disclosed: 2024-04-26
- Write-up quality: 6/10
- Original: https://github.com/code-423n4/2024-03-taiko-findings/issues/170
- Library page: https://bugbountylibrary.com/r/c4%3A2024-03-taiko%3AM-12
- Tags: domain:web3 impact:funds-loss kind:contest platform:code4rena sev:medium tech:solidity technique:source-review vuln:business-logic vuln:fee-bypass

**Target:** Bridge.sol processMessage / EssentialContract pause-unpause
**Root cause:** processMessage compares block.timestamp against receivedAt + invocationDelay without accounting for time spent paused, so pause duration counts toward the delay window.
**Steps:**
1. Set invocationDelay=60m, invocationExtraDelay=30m; Bob proves message at t, receivedAt=t, Bob=preferredExecutor.
2. Preferred executor should process at t+60; non-preferred at t+90.
3. Pause protocol at t+55, unpause at t+100.
4. Non-preferred executor calls `processMessage()` immediately after unpause; `block.timestamp >= invocationDelay + receivedAt` passes.
5. Non-preferred executor front-runs Bob and receives `_message.fee` via `msg.sender.sendEther(_message.fee)`.
**How found:** Code reading of processMessage delay logic against pause/unpause semantics; noticed block.timestamp-based delay ignores paused duration, then constructed a timeline showing preferred-executor advantage lost.
**Exploitation:** After unpause, attacker (non-preferred executor) calls processMessage before the preferred executor; the delay check passes because paused time counted, so attacker collects the message fee.
**Insight:** When a protocol has pause/unpause, audit every block.timestamp-based deadline/window for whether paused time should count; time-locked advantages (preferred executor, cooldowns, cliffs) silently expire during pause.
