CKD TOKEN Rug Pull

Reported loss $485K
BNB Chain
Rugpull

What happened

CKD TOKEN (CKD) is a BNB Chain token at 0x583e9b5e…c83881, deployed on 27 September 2023 by 0xd03E23Da…9B0dC1, which received all 210,000,000,000 CKD and is still the owner. The code gives that owner several ways to stop holders from selling: addToBlackList bans any address from sending or receiving, setStage(0) makes every transfer that touches a contract such as the PancakeSwap pair require a whitelisted party, setStage(7700) freezes all transfers, and setTradeBurnRate has no upper bound, so a rate of 100 burns an entire sale and anything higher makes it revert. The owner can also mint without limit, although the current supply still equals the constructor mint.

On 5 December 2023 CertiK reported a drop of about 99% caused by the deployer and a related EOA selling tokens and removing liquidity for about $539K. The existing record puts the loss at $485,176 across 33 transactions by 0xcfC9d035…A6856a, which the deployer funded with 0.05 BNB for gas, with the proceeds held as BSC-USD at 0xE934b442…535b35 as of 14 December 2023.

How it happened

  1. The constructor creates CKD/USDT pairs on PancakeSwap and on a second router, whitelists the owner and the token contract, and mints 210000000000 * (10 ** 6) raw units (210 billion CKD at 6 decimals) to the deployer.
  2. Every transfer first runs require( !_blackList[from] && !_blackList[to], "user has been banned!"). The owner can set any address with addToBlackList or bathAddToBlackList, blocking it from sending or receiving.
  3. _stage starts at 0. In that stage, while _isCheck is true, a transfer to or from a contract needs _whiteList[from] || _whiteList[to], so ordinary holders can buy or sell through the pair only if the owner has whitelisted the pair. The owner can change the stage with setStage to any number, and 7700 makes every transfer revert with "Emergency Situation".
  4. In any other stage, trades with a contract pay _tradeBurnRate percent to the dead address, starting at 30. setTradeBurnRate and setTransferBurnRate accept any value: at 100 the whole amount is burned and the recipient gets nothing, and above 100 amount.sub(fee) reverts. Whitelisted addresses pay nothing.
  5. mint(uint256 amount) is owner-only and uncapped. The total supply read on 2026-09-30 equals the constructor mint, so it shows no net use of this function.
  6. What happened: CertiK reported on 5 December 2023 that the deployer and a related EOA sold tokens and removed liquidity for about $539K, dropping the price about 99%. The existing record lists 0xf4b1f69a…7bcbcd, 0xec99837b…2abfda and 0xb9b49619…9db07d among the draining transactions and 0x37acc49d…15d06a as the gas funding.

Protocol details

Classification Token
Protocol Type Exit Scam/Rugpull
Affected asset / contract CKD

Build your security review skills

Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.