Cornerchain Rug Pull
What happened
Cornerchain (CNR) is a BNB Smart Chain token built from a generic CoinToken template whose owner can set buy and sell taxes with no ceiling, blacklist any address, and pause all transfers. De.Fi's REKT database lists the project as rug pulled by the NeoFinance team, who made a profit of 196 BNB (De.Fi lists the loss at $51,411). Per the listing, the scammer deployed the token to BSC, minted 10M CNR to their account and created the PancakeSwap pair (transaction 0x76b97203…99a9b1), added liquidity by depositing 300 BNB (transaction 0x2f863764…fb5e8b), and, once people started buying, removed the liquidity for a profit of 196 BNB (transaction 0xb17ce0d9…56ceaf).
The listed scammer address is 0x8f0d9acb…2387e4. The liquidity removal is a pair action outside the token code, so the source does not show who held the LP tokens.
How it happened
What the code allows:
- The constructor mints the whole supply to the deployer and hands ownership to a constructor argument:
_setOwner(_addr[5]);and_mint(msg.sender, initialSupply);. - Taxes are uncapped.
function setSellTax(uint256 dev, uint256 marketing, uint256 liquidity, uint256 charity) public onlyOwnerstores any values, andsetBuyTaxdoes the same. InhandleTax, a sale (to == address(uniswapV2Pair)) computestax += baseUnit * sellTaxes["marketing"];(and the same for dev, liquidity, charity), moves it with_transfer(from, address(this), tax);and then runsamount -= tax;. The seller is debited the tax plus the remaining amount, so the fullamountleaves the seller's balance. At a combined 100% the pair receives zero tokens, and above 100%amount -= taxunderflows and the sale reverts under solc 0.8.10. - The owner can blacklist any address with
function enableBlacklist(address account) public onlyOwner._transferrejects a transfer when any ofrequire(!isBlacklisted(msg.sender), "CoinToken: sender blacklisted");,require(!isBlacklisted(recipient), "CoinToken: recipient blacklisted");orrequire(!isBlacklisted(tx.origin), "CoinToken: sender blacklisted");fails. For a router salemsg.senderis the router,recipientis the pair andtx.originis the holder's wallet, so listing the holder, the router or the pair blocks sales. function pause() public onlyOwnersets the pause flag, andrequire(!paused(), "CoinToken: token transfer while paused");then rejects every transfer for every holder.renounceOwnership()exists and would end these powers; the chain read shows a non-zero owner, and no source says it was called.
, as listed by De.Fi's REKT database: 5. The listed scammer minted 10M CNR, created the pair, deposited 300 BNB of liquidity and, after buyers arrived, removed the liquidity for a profit of 196 BNB. The listing does not say that any tax, blacklist or pause function was used.
Protocol details
Evidence
- transaction bscscan.com transaction 0x2f86…5e8b bscscan.com
- transaction bscscan.com transaction 0x76b9…a9b1 bscscan.com
- transaction bscscan.com transaction 0xb17c…ceaf bscscan.com
- address BscScan verified source for Cornerchain (0xcf030ef1e14a7719aebe2471319b5547b4f22887) bscscan.com
- address bscscan.com address 0x8f0d…87e4 bscscan.com
- analysis Sourcify repository entry for the same contract repo.sourcify.dev
- analysis De.Fi REKT database listing for Cornerchain (CNR) de.fi
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.