CKD TOKEN Rug Pull
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
- 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. - Every transfer first runs
require( !_blackList[from] && !_blackList[to], "user has been banned!"). The owner can set any address withaddToBlackListorbathAddToBlackList, blocking it from sending or receiving. _stagestarts at 0. In that stage, while_isCheckis 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 withsetStageto any number, and 7700 makes every transfer revert with "Emergency Situation".- In any other stage, trades with a contract pay
_tradeBurnRatepercent to the dead address, starting at 30.setTradeBurnRateandsetTransferBurnRateaccept any value: at 100 the whole amount is burned and the recipient gets nothing, and above 100amount.sub(fee)reverts. Whitelisted addresses pay nothing. 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.- 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
Evidence
- report @CertiKAlert incident report twitter.com
- report CertiK Alert: slippage on CKD token twitter.com
- transaction CKD contract creation transaction bscscan.com
- transaction bscscan.com transaction 0x37ac…d06a bscscan.com
- transaction bscscan.com transaction 0xb9b4…b07d bscscan.com
- transaction bscscan.com transaction 0xec99…bfda bscscan.com
- transaction bscscan.com transaction 0xf4b1…cbcd bscscan.com
- address CKD TOKEN (CKD) verified contract code on BscScan bscscan.com
- address bscscan.com address 0xE934…5b35 bscscan.com
- address bscscan.com address 0xcfC9…856a bscscan.com
- address bscscan.com address 0xd03E…0dC1 bscscan.com
- analysis Sourcify match for 0x583e9b5ebB7B67157f7817CE3d57A2604fc83881 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.