SCAT Rug Pull
What happened
SPACE CAT (SCAT) is a BEP-20 reflection token deployed on BNB Chain on 26 September 2022 at 0x22a681b2…ca859A, trading against USDT on PancakeSwap. Its owner can block any address from sending tokens with setBlackHolder, freeze balances with setLockedBalance, set the per-transaction limit to zero, and raise the tax or liquidity fee with no upper bound through setTaxFeePercent and setLiquidityFeePercent, which skip the 25% cap enforced by setFee. On 10 November 2022 CertiK reported an exit scam on this contract, with the price down about 95.61% and about $133K taken.
De.Fi's REKT database puts the loss at 26,081 USD and says an EOA received 100,000,000,000 SCAT, the whole supply, from the deployer, drained the PancakeSwap pool and moved the funds through TransitSwap; it lists 0xc96d3505…43e8f6 and 0xb0f6da67…70b4a4 as the addresses involved.
How it happened
- The constructor credits the whole 100,000,000,000 SCAT supply to the deployer, sets it as
_owner, excludes it from fees and creates a SCAT/USDT pair on PancakeSwap. setBlackHolder(address holder, bool banned)isonlyOwner, and_transferrunsrequire(!blackHolder[from], "Black list address"), so a listed holder cannot sell or move tokens.setLockedBalancelets the owner assign a locked amount to any address, andsetLockedParamscan move_lockedEndTimeinto the future. While that time has not passed,_lockedBalanceCheckreturns false for every listed address and the transfer reverts with "locked".setMaxTxPercentstores its argument times 10^18 as_maxTxAmountwith no lower bound. Every transfer not involving the owner must satisfyamount <= _maxTxAmountandamount > 0, so a value of zero stops all such transfers.setFeechecks that the five fees total at most 25%, butsetTaxFeePercentandsetLiquidityFeePercentset_taxFeeand_liquidityFeedirectly with no check. Only senders on_isExcludedFromFeeskip fees, so the owner can make holders' sales lose any share of their tokens, or revert entirely once the fees exceed 100% andtAmount.sub(tFee).sub(allFee)underflows.resetPoollets the owner withdraw any BNB or tokens held by the token contract. CertiK and De.Fi report that value was taken from the pool; the opened sources do not say which of these functions, if any, was used.
Protocol details
Evidence
- report CertiK Alert: exit scam on project Space Cat (SCAT) twitter.com
- transaction SCAT contract creation transaction bscscan.com
- transaction bscscan.com transaction 0x6e78…1af1 bscscan.com
- transaction bscscan.com transaction 0x932f…c68d bscscan.com
- transaction bscscan.com transaction 0x95ce…bf4b bscscan.com
- address CoinToken (SPACE CAT, SCAT) verified source code bscscan.com
- address bscscan.com address 0xb0f6…b4a4 bscscan.com
- address bscscan.com address 0xc96d…e8f6 bscscan.com
- analysis Sourcify match for 0x22a681b2b57050Ab42cb4a426d56A733c6ca859A 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.