DeFi Safe Rug Pull
What happened
DeFi Safe (dSafe) is a BEP-20 token on BNB Smart Chain, deployed on 2022-11-01 by 0xdd20cfFf…4645e1, which also holds the owner role. Its constructor sends the entire supply to the deployer, and the owner can blacklist any holder so that their transfers and sales revert, change the buy and sell limits and fees, and switch trading on or off. On 2022-11-07 CertiK Alert reported an exit scam on the token, saying the price had dropped more than 99%, the contract creator blacklisted holder EOAs and then removed liquidity for about $127k.
De.Fi's REKT database lists the loss as $127,426 and says the deployer removed 127,421 BUSD from the PancakeSwap pool in one transaction, 0x7e2654c9…6db17f, about a week after launch, and that the funds were then spread across several EOA addresses.
How it happened
Steps 1 to 4 describe what the verified code allows; steps 5 and 6 are what was reported.
- The constructor gives the whole supply to the deployer, who is also the
Ownableowner:_rOwned[_msgSender()] = _rTotal;. The deployer therefore controls the initial liquidity it adds and holds the resulting LP position. - The owner can stop any holder from sending tokens.
_transferbegins withrequire(!_isBlacklist[from], "BEP20: transfer from blacklisted address");, andaddToBlacklist(address account) external onlyOwnersets the flag. The check is onfrom, which is the holder in bothtransferandtransferFrom, so a blacklisted holder cannot sell through the router. Only the owner cannot be blacklisted:require(account != owner(), "BEP20: can not blacklist owner");. - The owner can also tighten limits on everyone else. Non-excluded sellers must pass
require(amount <= _sMaxTxAmount, "Transfer amount exceeds the max sell amount.");, andsetSellMaxTxAmount(uint256 sMaxTxAmount) external onlyOwnerhas no lower bound.setSellFee(uint256 sellTaxFee, uint256 sellVaultFee, uint256 sellLiquidityFee) external onlyOwnerlikewise has no upper bound, andsetTradingOpen(bool _status)can pause trading for non-excluded addresses. - Nothing in the token locks or burns the liquidity. LP tokens for the pair belong to whoever added the liquidity, and removing it is an ordinary router call outside this contract.
renounceOwnership()exists but is optional, and the on-chain read of 2026-09-30 still shows the deployer asowner. - Reported: CertiK Alert's post of 2022-11-07 says the contract creator blacklisted holder EOAs and then removed liquidity for about $127k, with the token down more than 99%.
- Reported: De.Fi's listing says the liquidity removal was a single transaction that returned 127,421 BUSD to the deployer, which then distributed the proceeds across several EOAs.
Protocol details
Evidence
- report CertiKAlert post on DeFi Safe (dSafe) exit scam, 2022-11-07 twitter.com
- transaction bscscan.com transaction 0x7e26…b17f bscscan.com
- address dSafe.sol verified source, BscScan bscscan.com
- address bscscan.com address 0xdd20…45e1 bscscan.com
- analysis dSafe.sol, Sourcify exact match repo.sourcify.dev
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.