Worked example · 2017-11
Tether treasury hack — Bitcoin (Omni Layer) — 2017-11-19
Summary
Tether (USDT) was originally issued on the Bitcoin blockchain via the Omni Layer protocol, a metadata layer built on top of Bitcoin transactions. The Tether treasury wallet on the Omni Layer held signing authority to issue and redeem USDT tokens. On 2017-11-19, an attacker gained unauthorized access to the signing infrastructure for this treasury wallet and issued a transaction transferring 30,950,010 USDT (approximately $31M at the time) to an unauthorized Bitcoin address controlled by the attacker.
The attacker attempted to launder the stolen USDT by depositing it to centralized exchanges (including Poloniex and Bittrex) and converting it to Bitcoin. Tether responded within hours by:
- Publishing a new version of the Omni Core client (0.2.99) that included an emergency fork blacklisting the attacker's address, preventing further movement of the stolen USDT on the Omni Layer.
- Coordinating with exchanges to freeze the attacker's deposit addresses, preventing conversion to Bitcoin.
- Announcing a token swap from the old USDT contract to a new USDT contract on the Omni Layer, effectively reissuing the legitimate supply and leaving the attacker's tokens valueless.
The incident precipitated Tether's migration from the Bitcoin Omni Layer to Ethereum as ERC-20 tokens (completed in 2018-2019). The ERC-20 implementation included a blacklist function that allowed Tether to freeze specific addresses — a capability that the Omni Layer's Bitcoin-transaction-based architecture did not natively support. The blacklisting capability, initially controversial in decentralization-focused circles, became the canonical stablecoin-issuer security primitive and is now standard across USDC (Circle), BUSD (Paxos), TUSD, and other fiat-backed stablecoins.
Timeline (UTC)
| When | Event | OAK ref |
|---|---|---|
| pre-2017-11-19 | USDT issued on Bitcoin Omni Layer; single-signing-authority treasury wallet; no on-chain freeze capability | (standing T11.001 surface) |
| 2017-11-19 | Attacker compromises Tether's signing infrastructure; issues 30,950,010 USDT to unauthorized Bitcoin address | T11.001 (signing-infrastructure compromise) |
| 2017-11-19 T+hours | Tether publishes emergency Omni Core client (v0.2.99) with attacker-address blacklist hard-coded; exchange coordination begins | (defender response) |
| 2017-11-20 | Attacker attempts to deposit stolen USDT to Poloniex/Bittrex; exchanges freeze attacker deposit addresses | T7.001 (exchange-routed laundering — blocked) |
| 2017-11-21 to 2017-12 | Tether initiates token swap: old USDT → new USDT on Omni Layer; attacker's tokens rendered valueless | (remediation via reissuance) |
| 2018-2019 | Tether migrates primary issuance from Omni Layer to Ethereum ERC-20; ERC-20 contract includes blacklist function |
(architectural remediation) |
Realised extraction
Approximately $31M in USDT; effectively zero realised by the attacker due to rapid blacklisting and exchange-side freezing.
T1.002 cross-standard classification
The Tether treasury wallet on the Omni Layer held an analogue of the "permanent delegate" authority that OAK-T1.002 addresses in the Solana Token-2022 context: a single signing key that could authorize any transfer from the treasury. The compromise of that key is structurally identical to a Permanent Delegate key compromise in Token-2022. The case is classified under T1.002 (cross-standard ancestor) to anchor the single-signing-authority-as-permanent-delegate lineage: Tether Omni 2017 → Token-2022 PermanentDelegate 2024-2025.
Public references
- Tether, "Tether Critical Announcement," November 19, 2017
- Tether, "Tether Statement on Security Incident," November 20, 2017
- Omni Core v0.2.99 release notes (emergency fork with blacklist)
- Poloniex / Bittrex incident coordination statements (November 2017)