Internet Token INT Hack
What happened
On September 21, 2026, an attacker exploited Internet Token (INT) on Base. The flaw was in the LiquidityUnifier contract, which holds INT's MINTER_ROLE. A fake Uniswap V3 pool callback let the attacker mint about 925.4 million INT from nothing. The attacker sold about 161 million of them into the official INT/WETH pool for about 5.85 WETH, around $16K, and kept about 764 million INT. RektRadar reported a live loss of about $265K. That figure appears to also count the retained INT at its pre-dump price, so it is not the WETH actually drained.
swapV3(token, pool) accepted a pool address supplied by the caller. It only checked that the address held code, was not on an exclusion list, and returned INT and the passed token from token0()/token1(). It did not check a factory or registry. The swap callback's only check was that msg.sender equaled the stored current pool, which here was the attacker's fake pool. The contract's one supply guard, validateSupply, was bypassed by a round-trip through the Convertor contract.
- Exploit transaction:
0xed62bb27bd1058d3d7cc93d55421d6d0001ced8cb4529b02773f5126a4edb08b - Victim contract (
LiquidityUnifier):0x837dbabc4f5fa78baf177597edbda09645822032 - Attacker (existing record):
0x5f7ce6395818857ac20730dc990f614356d1ec68
How it happened
- The attacker deployed a fake pool contract whose
token0()/token1()returnedINTand a second token, then calledLiquidityUnifier.swapV3()with the fake pool. swapV3accepted the fake pool as the current pool and called itsswap(). The fake pool called back intouniswapV3SwapCallback, which minted about 925.4 millionINTbecause the callback came from the stored current pool.- Still inside the fake pool's
swap(), the attacker usedConvertor.convert(INT, X)to burn the freshly mintedINT. Total supply was back to where it started, so thevalidateSupplycheck after the swap passed. - Once
swapV3returned, the attacker calledConvertor.convert(X, INT)to re-mint theINToutside the guard. - The attacker dumped about 161.3 million
INTinto the official INT/WETH Uniswap V3 pool for about 5.847 WETH and kept about 764.1 millionINT.
Protocol details
Evidence
- report Defimon Alerts: @internet_token - Loss ~764M INT + 5.85 WETH (2026-09-21) x.com
- code Add PoC: Internet Token (INT) permissionless swapV3 arbitrary mint (DeFiHackLabs PR #1271) github.com
- analysis DeFiLlama defillama.com
- analysis Web3 Daily Exploits — 21 Sep 2026: INT Base Arbitrary Mint ~$265K (RektRadar) rektradar.xyz
Understand the attack patterns
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.