DOXED Rug Pull
What happened
DOXED (DOX, BNB Smart Chain, contract 0xEDA3eB7A…CEe84e) is a reflection-fee token whose owner can flag any address as a bot, set the per-transaction limit and the trading cooldown to values that stop all non-exempt trades, and set the buy/sell tax with no cap. The automatic liquidity function sends the resulting LP tokens to owner(). On 2023-02-05 CertiK Alert reported the price down more than 99% after a wallet linked to the project, starting 0x591d..., removed liquidity and sold about $30,000 (89 BNB). De.Fi's REKT database lists the loss as $30,000.
Addresses and transactions listed by De.Fi:
- Token contract: 0xEDA3eB7A…CEe84e
- Liquidity removal: 0xc88c2ce6…be4b40
How it happened
- The constructor creates the DOX/WBNB pair and sends the whole supply to the owner:
_rOwned[owner()] = _rTotal;. It exempts the owner, the dev, marketing and giveback wallets from fees with_isExcludedFromFee[owner()] = true;. Those exempt addresses also skip the transaction limit and cooldown, which only apply when!_isExcludedFromFee[from] && !_isExcludedFromFee[to]. - What the code allows:
setAntibotandbulkAntiBotlet the owner set_isBot[account], and_transferstarts withrequire(!_isBot[from] && !_isBot[to], "You are a bot");. These checkfromandto, so a flagged holder cannot sell and a flagged pair would block every buy and sell. - What the code allows:
updatMaxTxAmtsetsmaxTxAmount = amount * 10**_decimals;, and non-exempt transfers needrequire(amount <= maxTxAmount, ...); a value of 0 makes every non-exempt transfer revert.updateCoolDownSettingssetscoolDownTime = _timeInSeconds * 69 seconds;and each non-exempt sell or buy needsrequire(timePassed > coolDownTime, ...)wheretimePassedis measured from_lastTrade, which starts at 0, so a cooldown longer than the current Unix timestamp blocks even a first trade. - What the code allows:
setTaxeshas no cap and checked arithmetic in_getTValues(tAmount-s.tRfi-s.tDev-...) reverts if the total exceeds 100%.updateRouterAndPair,rescueBNBandrescueAnyBEP20Tokensare owner-only, andaddLiquiditypassesowner()as the LP-token recipient.renounceOwnershipexists. No opened transaction shows any of these setters being called. - What happened, per CertiK Alert: on 2023-02-05 it reported the token down more than 99%, with a wallet linked to the project, 0x591d..., removing liquidity and selling about $30,000 (89 BNB). An on-chain read on 2026-09-30 shows the current owner as 0x591d931a…3da311, not the deployer, so ownership had moved to another address.
Protocol details
Evidence
- report @CertiKAlert incident report twitter.com
- report DOXED source on Sourcify repo.sourcify.dev
- report CertiK Alert post on the DOXED liquidity removal twitter.com
- transaction bscscan.com transaction 0xc88c…4b40 bscscan.com
- address DOXED verified source on BscScan bscscan.com
- address bscscan.com address 0xEDA3…e84e bscscan.com
Build your security review skills
Work through hands-on labs covering real exploit mechanics, review techniques, and defensive patterns.