AORcoin Rug Pull
What happened
AORcoin (AOR) is a BNB Chain token at 0x8e404e8c…8f363a, deployed on 24 June 2023 by 0xf0396dA5…Dd8380, which still holds the owner role. Its code gives the owner several ways to trap holders: updateTrade adds any address to a blocklist that stops it from sending tokens, the buy, sell and transfer fees and the post-buy sell lock can be set with no upper limit, and a built-in decay that shrinks every ordinary holder's balance each period runs at a rate the owner can change. Sales also depend on an external bot-checking contract that the owner can replace.
CertiK reported on 22 July 2023 that about $51,000 in BSC-USD was removed from the AOR liquidity pool by the externally owned account 0xf600d.... De.Fi's REKT database lists the event as a rug pull, with the liquidity removed in a single transaction, 0x867e4d19…fc834d, by 0xf600d4d9…69eb87, for a loss of $51,693.
How it happened
- The constructor credits all 10,000,000,000 AOR to the deployer, exempts the deployer and four hard-coded fee wallets from fees, and creates the BSC-USD pair.
updateTrade(addr, false)isonlyOwnerand addsaddrto_tradeSet._transferthen reverts withrequire(!_tradeSet.contains(from),"from address is blocked"), so a listed holder cannot sell or transfer, and a listed address cannot receive tokens from the pair.setSellRate,setBuyRateandsetTransferRatetake anyuint8value. At 100 the whole amount goes to the fee wallets; above 100,amount*(100-feeRate)underflows and the transfer reverts.setLockTimecan raise the required wait after a buy (require(time-accountInfo[from].buyTime >= config.lockTime, "sell locked")) to about 136 years.- Non-exempt balances decay every
burnPeriod(900 seconds by default) by the factorburnRate/ 1e8; on the next transfer the difference is taken from the holder, half toaddress(0)and a quarter each toaddressAandaddressB.setBurnRatehas no bounds, so a rate of 0 would reduce ordinary holders' balances to zero after one period. - Sales revert when the external
_ibot.isBotAddress(from)returns true, buys by contracts or by addresses other thantx.originare burned, andsetAddressIBotlets the owner swap in a different bot contract. - CertiK reported that about $51,000 in BSC-USD was removed from the pool by 0xf600d...; De.Fi lists removal transaction 0x867e4d19…fc834d.
Protocol details
Evidence
- report @CertiKAlert incident report twitter.com
- report CertiK Alert: large liquidity removal on AORcoin (AOR) twitter.com
- transaction AORcoin contract creation transaction bscscan.com
- transaction bscscan.com transaction 0x867e…834d bscscan.com
- address AORcoin (AOR) verified contract code on BscScan bscscan.com
- address bscscan.com address 0xf600…eb87 bscscan.com
- analysis Sourcify match for 0x8e404e8cace57ddb2e18978fdcc44753338f363a 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.