APPLE Rug Pull
What happened
APPLE (APPLE, BNB Smart Chain, contract 0x8F81bbC8…619369) has a fixed supply of 600 tokens that the constructor credits entirely to the deployer, 0xE4C1eEbB…cd0639. Its owner can blacklist any address, which blocks that address from sending or receiving, and the contract blacklists the token's WBNB pair at deployment so only the USDT pair can trade. On 2023-03-19 CertiK Alert reported a large liquidity removal on the token, with the price down about 95% and the deployer removing about $30k from the liquidity pool. De.Fi's REKT database lists the loss as $30,000.
Addresses and transactions listed by De.Fi:
- Deployer: 0xe4c1eebb…cd0639
- Example liquidity removal: 0x54650d53…9b79a8
How it happened
- The constructor creates two Pancake pairs and sets the rules:
uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), USDT);and a second pair against WBNB, then_balances[mainAddres] = 600 * 10**18;,whiteLists[mainAddres] = true;,whiteLists[uniswapV2Pair] = true;,whiteLists[pointAddress] = true;andblackLists[uniswapV2PairBNB] = true;.mainAddresis the deployer address. - Every transfer first runs
require(!blackLists[from], ...)andrequire(!blackLists[to], ...). Because these check thefromandtoarguments, a transfer to or from the blacklisted WBNB pair always reverts, and a blacklisted holder cannot sell (fromis the holder) or receive. - What the code allows: the owner can call
setBlacklistMul(orsetBlackListsMul) on any addresses, including the USDT pair, andsetWhitelistMulto exempt addresses. A non-whitelisted sender cannot move more than 99.99% of its balance in one transfer (amount > balanceOf(from).mul(9999).div(10000)reverts). Non-whitelisted buys lose 1% and sells lose 2% topointAddress; the sender is debited the fullsrcAmountand the receiver gets the reduced amount. There is no mint function, andrenounceOwnershipexists. No opened transaction shows the blacklist being used. - The token contract does not control the liquidity. The LP tokens belong to whichever wallet added the liquidity, and removing it goes through the router rather than through a function of this token.
- What happened, per CertiK Alert: on 2023-03-19 it reported a large liquidity removal on this contract with the price down about 95% and the deployer removing about $30k from the LP.
Protocol details
Evidence
- report @certikalert incident report twitter.com
- report APPLE source on Sourcify repo.sourcify.dev
- report CertiK Alert post on the APPLE liquidity removal twitter.com
- transaction bscscan.com transaction 0x5465…79a8 bscscan.com
- address APPLE (CUPIDToken) verified source on BscScan bscscan.com
- address bscscan.com address 0xe4c1…0639 bscscan.com
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.