Web Rug Pull
What happened
Web (WEB) is a BNB Chain token at 0xC6E8b0A6…7604d6, deployed on 23 November 2023 by 0xc9975826…0b8f25, whose verified code stores no balances: balanceOf and every transfer are forwarded to a separate accounting contract that the owner points to with setAccountingAddress, and that contract's rules are not part of the verified source. It alone decides what each address holds and whether a transfer succeeds, so the token can show a fixed 1,000,000 WEB supply while the hidden contract credits any balance or refuses any sale. PeckShield reported on 24 November 2023 that 0xc997...8f25 swapped 100,100,100,100,100,100,100.1001 WEB, about 10^14 times the stated supply, for 921.36 WBNB (about $218K), dropping the price 100%.
The existing record describes the drain as a liquidity removal of 921.35 WBNB (about $217,791) with a net loss of $178,964, lists 0x18c903c1…b6c142 as the liquidity-adding transaction and 0xfb905622…a42260 as the drain, and says the funds were then spread across several addresses.
How it happened
- The constructor sets
_totalSupply = 1000000 * 10 ** 9and emits aTransferfrom the zero address to the deployer, but writes no balance anywhere in the token contract. balanceOfreturnsAccounting(accounting).balanceOf(who).transferandtransferFromemit aTransferevent first and then returnAccounting(accounting).doTransfer(msg.sender, from, to, amount), passing the caller so the accounting contract can tell a router or pair apart from a wallet. Afalsereturn does not revert.- The owner sets
accountingwithsetAccountingAddress, and can replace it at any time untilrenounceOwnership, which leaves the address fixed. The owner reads as the zero address today. - Because every balance and every transfer rule lives in the unverified accounting contract, holders cannot tell from the verified code whether they will be able to sell or whether other addresses hold far more than the stated supply.
- What happened: PeckShield reported that 0xc997...8f25, the deployer, swapped 100,100,100,100,100,100,100.1001 WEB for 921.36 WBNB. That amount is about 10^14 times the 1,000,000 WEB
totalSupply, a balance only the accounting contract could have recorded.
Protocol details
Evidence
- report PeckShieldAlert: Web $WEB has dropped -100% twitter.com
- transaction WEB contract creation transaction bscscan.com
- transaction BscScan transaction 0xfb905622...2260 (record's drain transaction) bscscan.com
- transaction bscscan.com transaction 0x18c9…c142 bscscan.com
- address Web (WEB) verified contract code on BscScan bscscan.com
- address bscscan.com address 0xc997…8f25 bscscan.com
- analysis Sourcify match for 0xC6E8b0A6249e51B5b55B85Af847EF884517604d6 on BNB Chain repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.