uups-checker 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitmodules +6 -0
- package/AIFI_AUDIT.md +220 -0
- package/ALL_AUDITS_SUMMARY.md +366 -0
- package/ALPHA_PROXY_CRITICAL_FINDING.md +136 -0
- package/ALPHA_PROXY_FINAL_ANALYSIS.md +213 -0
- package/ALPHA_PROXY_FINAL_VERDICT.md +233 -0
- package/ALPHA_PROXY_SELFDESTRUCT_EXPLOIT.md +161 -0
- package/ARIA-foundry-test.txt +9 -0
- package/ARIA-mythril-analysis.txt +20 -0
- package/ARIA-slither-analysis.txt +38 -0
- package/ARIA_AI_SECURITY_AUDIT.md +290 -0
- package/ARIA_VERIFIED_AUDIT.md +259 -0
- package/ARIA_VERIFIED_slither.txt +76 -0
- package/ARIVA_source.txt +1 -0
- package/ARK_AUDIT.md +349 -0
- package/BANANA_AUDIT.md +365 -0
- package/BAS_AUDIT.md +451 -0
- package/BAS_TOKEN_AUDIT.md +235 -0
- package/BCE_EXPLOIT_ANALYSIS.md +165 -0
- package/BEEFY_BNB_CHAIN_ANALYSIS.md +488 -0
- package/BEEFY_MONAD_ANALYSIS.md +239 -0
- package/BEEFY_STAKING_ANALYSIS.md +136 -0
- package/BEEFY_XVS_WBNB_ACTUAL_FINDINGS.md +223 -0
- package/BEEFY_XVS_WBNB_CRITICAL_FINDINGS.md +269 -0
- package/BLOCKSEC_ATTACK_KNOWLEDGE_BASE.md +771 -0
- package/BRISE_ANALYSIS.txt +31 -0
- package/BRISE_BSC_DAPPS.txt +68 -0
- package/BRISE_EXPLOITS_FOUND.md +98 -0
- package/BRISE_REAL_EXPLOITS.md +115 -0
- package/BRISE_WHITEHAT_REPORT.md +162 -0
- package/BRISEstake_Analysis.txt +95 -0
- package/BSCSLOCKTOKEN_CRITICAL_FINDING.md +240 -0
- package/BSW_BISWAP_SECURITY_AUDIT.md +330 -0
- package/BTCST_FINAL_VERDICT.md +319 -0
- package/BTCST_MINING_REBASE_ANALYSIS.md +229 -0
- package/BTCST_ROUNDING_DEEP_DIVE.md +293 -0
- package/BTCST_ROUNDING_FINAL_VERDICT.md +9 -0
- package/BTCST_SECURITY_ANALYSIS.md +391 -0
- package/BTR_AUDIT.md +210 -0
- package/BeamBridge-analysis.md +226 -0
- package/BeamToken-analysis.md +201 -0
- package/BitgertSwap_Investigation.txt +107 -0
- package/CEEK_STAKING_ANALYSIS.md +0 -0
- package/CHAINBASE_AUDIT.md +422 -0
- package/COMPLETE_AUDIT_SUMMARY.md +342 -0
- package/CORRECTED_ANALYSIS.txt +115 -0
- package/DBXEN_COMPARISON_SUMMARY.md +232 -0
- package/DBXEN_EXPLOIT_ANALYSIS.md +530 -0
- package/DOPFairLaunch_raw.json +29 -0
- package/DOPFairLaunch_source.txt +0 -0
- package/DOP_BRIDGE_FINAL_ANALYSIS.txt +86 -0
- package/DOP_BUSD_LP_ANALYSIS.txt +44 -0
- package/DOP_FAIRLAUNCH_ANALYSIS.txt +61 -0
- package/DOP_FAIRLAUNCH_FINAL_VERDICT.txt +113 -0
- package/DOP_STAKING_CONTRACT_ANALYSIS.txt +67 -0
- package/DSYNC_ECOSYSTEM_ANALYSIS.md +221 -0
- package/DSyncStaking-exploit-analysis.md +153 -0
- package/DSyncVault-analysis.md +120 -0
- package/DUSD_PROXY_AUDIT.md +407 -0
- package/DXSALE_LOCK_AUDIT.md +0 -0
- package/DXSaleLock_bytecode.txt +1 -0
- package/ECHIDNA_QUICK_START.md +101 -0
- package/ELEPHANT_ECOSYSTEM_AUDIT_PLAN.md +159 -0
- package/ELEPHANT_ECOSYSTEM_COMPREHENSIVE_AUDIT.md +427 -0
- package/ELEPHANT_SECURITY_ANALYSIS.md +209 -0
- package/ELEPHANT_VULNERABILITIES_EXPLAINED.md +455 -0
- package/EXPLOIT_FIX.md +300 -0
- package/EXPLOIT_INSTRUCTIONS.md +273 -0
- package/EXPLOIT_SUMMARY.md +285 -0
- package/EXPLOIT_SUMMARY.txt +175 -0
- package/FALCON_FINANCE_AUDIT.md +258 -0
- package/FANDOM_AUDIT.md +359 -0
- package/FEE_ON_TRANSFER_ANALYSIS.md +228 -0
- package/FINAL_AUDIT_REPORT.md +0 -0
- package/FOLIO_PROXY_AUDIT.md +299 -0
- package/FOT_EXPLOIT_RESULTS.txt +110 -0
- package/FOT_TOKENS_AUDITED.md +103 -0
- package/HEGIC-mythril-analysis.txt +39 -0
- package/HEGIC_COMPLETE_ANALYSIS.md +343 -0
- package/HOTCROSS_SWAP_EXPLOIT_ANALYSIS.md +123 -0
- package/ICECREAMSWAP_EXPLOITS.md +259 -0
- package/IMMUNEFI_REPORT.md +314 -0
- package/KCCPAD_EXPLOIT_GUIDE.md +285 -0
- package/KEL_CEL_EXPLOIT_ANALYSIS.md +0 -0
- package/KOGE_AUDIT.md +328 -0
- package/LENDFLARE_ANALYSIS.md +239 -0
- package/LENDFLARE_ECHIDNA_GUIDE.md +356 -0
- package/LENDFLARE_EXPLOIT_INSTRUCTIONS.md +297 -0
- package/LENDFLARE_EXPLOIT_SUMMARY.md +292 -0
- package/LENDFLARE_FLASHLOAN_GUIDE.md +383 -0
- package/LENDFLARE_FUZZING_RESULTS.md +252 -0
- package/LENDFLARE_HONEYPOT_BYPASS_ANALYSIS.md +420 -0
- package/LENDFLARE_MANUAL_FUZZING.md +324 -0
- package/LENDFLARE_MYTHRIL_ANALYSIS.md +339 -0
- package/LENDFLARE_V3_BYPASS.md +296 -0
- package/LFTDECOMPILE.txt +14478 -0
- package/LFT_ACCOUNTING_ANALYSIS.md +0 -0
- package/LFT_ACCOUNTING_BUG_ANALYSIS.md +426 -0
- package/LFT_BACKDOOR_DEEP_DIVE.md +0 -0
- package/LFT_CRITICAL_EXPLOIT_CONFIRMED.md +428 -0
- package/LFT_EXPLOIT_VISUAL.md +253 -0
- package/LFT_QUICK_SUMMARY.md +124 -0
- package/LFT_REVERSE_EXPLOIT_ANALYSIS.md +521 -0
- package/MGO_AUDIT_REPORT.md +420 -0
- package/MYTHRIL_FINAL_REPORT.md +306 -0
- package/MYTHRIL_SLITHER_SUMMARY.md +244 -0
- package/NETX_MIGRATION_AUDIT.md +0 -0
- package/NPM_PUBLISH_GUIDE.md +0 -0
- package/NRV_CRITICAL_EXPLOIT.txt +143 -0
- package/NetX_Analysis.txt +76 -0
- package/NetX_Migration_bytecode.txt +1 -0
- package/NetX_Migration_source.txt +0 -0
- package/NetX_Token_source.txt +0 -0
- package/NetxWhitehatRescue +22 -0
- package/OILER_ATTACK_VISUAL.md +351 -0
- package/OILER_BLOCKSEC_TEST_RESULTS.md +421 -0
- package/OILER_DEEP_ANALYSIS.md +212 -0
- package/OILER_FINAL_EXPLOIT_REPORT.md +241 -0
- package/OILER_FINAL_VERDICT.md +339 -0
- package/OILER_REENTRANCY_EXPLAINED.md +638 -0
- package/OILER_REENTRANCY_FINAL_SUMMARY.md +391 -0
- package/OILER_REENTRANCY_REALITY_CHECK.md +393 -0
- package/OILER_REENTRANCY_STEP_BY_STEP.md +597 -0
- package/OILER_STAKING_MAINNET_ANALYSIS.md +366 -0
- package/OILER_STAKING_SECURITY_ANALYSIS.md +409 -0
- package/PANCAKESWAP_UNDERFLOW_HUNTING.md +317 -0
- package/POLS_MULTICHAIN_AUDIT.md +0 -0
- package/POSI_STAKING_AUDIT.md +0 -0
- package/PROXY2_SECURITY_ANALYSIS.md +0 -0
- package/Proxy2TACS +29748 -0
- package/QUICK_START.md +240 -0
- package/RAMP_SECURITY_ANALYSIS.md +0 -0
- package/README.md +238 -0
- package/REAUDIT_MASTER_LIST.txt +15 -0
- package/RING_analysis.txt +212 -0
- package/RPC +4 -0
- package/RULES.txt +20 -0
- package/SIREN_AUDIT.md +186 -0
- package/SYNC_EXPLOIT_README.md +0 -0
- package/SYNC_TOKEN_EXPLOIT_REPORT.md +224 -0
- package/TLM_raw.html +0 -0
- package/TLM_raw.txt +0 -0
- package/TLM_response.json +1 -0
- package/TRADOOR_AUDIT.md +253 -0
- package/TRUNK_AUDIT.md +285 -0
- package/UNIBASE_AUDIT.md +241 -0
- package/UNLOCK_ANALYSIS.md +0 -0
- package/UNLOCK_EXPLOIT.md +49 -0
- package/UNLOCK_EXPLOIT_ANALYSIS.md +0 -0
- package/UPS +232 -0
- package/UUPSCHECKER +208 -0
- package/VAULT_PROXY_AUDIT.md +457 -0
- package/VAULT_PROXY_FINAL_VERDICT.md +0 -0
- package/VERIFIED_EXPLOITS_FINAL.txt +146 -0
- package/WKEYDAO2_AUDIT.md +245 -0
- package/WSG_AUDIT.md +0 -0
- package/XFI_DEEP_ANALYSIS.md +327 -0
- package/YOOSHI_EXPLOIT_GUIDE.md +119 -0
- package/YSDAO_EXPLOIT_GUIDE.md +0 -0
- package/agent-4-bundle.md +22490 -0
- package/alpha-proxy-echidna.txt +1 -0
- package/alpha-proxy-fuzz-results.txt +81 -0
- package/alpha-proxy-mythril.txt +2 -0
- package/analyze-btcst-farm.js +54 -0
- package/analyze-dxsale-lock.js +75 -0
- package/analyze-elephant.js +69 -0
- package/analyze-fara-rewards.js +109 -0
- package/analyze-fara-storage.js +83 -0
- package/analyze-lft-transaction.js +158 -0
- package/analyze-lock-bytecode.js +59 -0
- package/analyze-shegic.js +0 -0
- package/analyze-staking-abi.js +0 -0
- package/analyze-sxp.js +57 -0
- package/analyze-tlm.js +76 -0
- package/analyze-trumpet.js +98 -0
- package/analyze-unlimited-nft.js +108 -0
- package/analyze_elephant.sh +27 -0
- package/analyze_vault.sh +32 -0
- package/aria-bytecode.txt +1 -0
- package/aria_response.json +1 -0
- package/ark_temp/README.md +66 -0
- package/ark_temp/lib/forge-std/.gitattributes +1 -0
- package/ark_temp/lib/forge-std/.github/CODEOWNERS +1 -0
- package/ark_temp/lib/forge-std/.github/dependabot.yml +6 -0
- package/ark_temp/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/ark_temp/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/ark_temp/lib/forge-std/CONTRIBUTING.md +193 -0
- package/ark_temp/lib/forge-std/LICENSE-APACHE +203 -0
- package/ark_temp/lib/forge-std/LICENSE-MIT +25 -0
- package/ark_temp/lib/forge-std/README.md +314 -0
- package/ark_temp/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/ark_temp/lib/forge-std/package.json +16 -0
- package/ark_temp/lib/forge-std/scripts/vm.py +636 -0
- package/audits/AiFi-security-audit-20260326.md +499 -0
- package/audits/BasedAI-Brains-security-audit-20260324.md +651 -0
- package/audits/BinanceAlphaWallet-pashov-ai-audit-report-20260324-170000.md +362 -0
- package/audits/DGToken-security-audit-20260324.md +376 -0
- package/audits/DSyncStaking-audit-part1.md +161 -0
- package/audits/DSyncStaking-security-audit-20260324.md +547 -0
- package/audits/DecompiledERC20-security-audit-20260325.md +397 -0
- package/audits/DegenVC-security-audit-20260324.md +585 -0
- package/audits/DelreyInu-security-audit-20260324.md +463 -0
- package/audits/DestraNetwork-security-audit-20260324.md +705 -0
- package/audits/DomiToken-security-audit-20260324.md +514 -0
- package/audits/LendFlareToken-security-audit-20260325.md +197 -0
- package/audits/LockReleaseTokenPool-security-audit-20260324.md +482 -0
- package/audits/MOG-pashov-ai-audit-report-20260324-164900.md +229 -0
- package/audits/PAALAI-security-audit-20260324.md +475 -0
- package/audits/PAR-security-audit-20260325.md +311 -0
- package/audits/PepeCoinStaking-security-audit-20260324.md +358 -0
- package/audits/StakingPool-security-audit-20260324.md +517 -0
- package/audits/SyncToken-security-audit-20260324.md +778 -0
- package/audits/UndeadToken-decompiled-security-audit-20260324.md +485 -0
- package/audits/UnknownToken-decompiled-security-audit-20260324.md +647 -0
- package/audits/XFIStaking-security-audit-20260324.md +682 -0
- package/audits/Xfinance-security-audit-20260324.md +463 -0
- package/audits/basedAIFarm-security-audit-20260324.md +330 -0
- package/audits/pepeCoin-security-audit-20260324.md +462 -0
- package/bin/ups +232 -0
- package/binance-wallet-exploit/.env.example +2 -0
- package/binance-wallet-exploit/EXECUTIVE_SUMMARY.md +272 -0
- package/binance-wallet-exploit/EXPLOIT_SUMMARY.md +104 -0
- package/binance-wallet-exploit/FINAL_ANALYSIS.md +326 -0
- package/binance-wallet-exploit/FLASHLOAN_ATTACK.md +292 -0
- package/binance-wallet-exploit/HONEYPOT_REPORT.md +526 -0
- package/binance-wallet-exploit/INVESTIGATION_COMPLETE.md +362 -0
- package/binance-wallet-exploit/LENDFLARE_EXPLOIT.md +219 -0
- package/binance-wallet-exploit/LENDFLARE_FINAL_ATTACK.md +307 -0
- package/binance-wallet-exploit/LENDFLARE_REAL_EXPLOIT.md +286 -0
- package/binance-wallet-exploit/LENDFLARE_RUGPULL.md +269 -0
- package/binance-wallet-exploit/LFT_ANALYSIS.md +206 -0
- package/binance-wallet-exploit/QUICK_START.md +75 -0
- package/binance-wallet-exploit/README.md +195 -0
- package/binance-wallet-exploit/REAL_TX_EXPLOIT_ANALYSIS.md +271 -0
- package/binance-wallet-exploit/REMIX_INSTRUCTIONS.md +223 -0
- package/binance-wallet-exploit/TEST_RESULTS.md +203 -0
- package/binance-wallet-exploit/cache/solidity-files-cache.json +1 -0
- package/binance-wallet-exploit/cache/test-failures +1 -0
- package/binance-wallet-exploit/lib/forge-std/.gitattributes +1 -0
- package/binance-wallet-exploit/lib/forge-std/.github/CODEOWNERS +1 -0
- package/binance-wallet-exploit/lib/forge-std/.github/dependabot.yml +6 -0
- package/binance-wallet-exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/binance-wallet-exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/binance-wallet-exploit/lib/forge-std/CONTRIBUTING.md +193 -0
- package/binance-wallet-exploit/lib/forge-std/LICENSE-APACHE +203 -0
- package/binance-wallet-exploit/lib/forge-std/LICENSE-MIT +25 -0
- package/binance-wallet-exploit/lib/forge-std/README.md +314 -0
- package/binance-wallet-exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/binance-wallet-exploit/lib/forge-std/package.json +16 -0
- package/binance-wallet-exploit/lib/forge-std/scripts/vm.py +636 -0
- package/binance-wallet-exploit/out/build-info/1e9aa7e86cf56962.json +1 -0
- package/binance-wallet-exploit/out/build-info/6f56f10e9d7b56eb.json +1 -0
- package/binance-wallet-exploit/out/build-info/7edba961ff697a24.json +1 -0
- package/binance-wallet-exploit/out/build-info/8c27fe3efea2f2e7.json +1 -0
- package/binance-wallet-exploit/out/build-info/978b680daffec63a.json +1 -0
- package/binance-wallet-exploit/out/build-info/9806b900b5672d0c.json +1 -0
- package/binance-wallet-exploit/out/build-info/b4b9ff36e9b3fc27.json +1 -0
- package/binance-wallet-exploit/out/build-info/b6f4df9ae05c0812.json +1 -0
- package/binance-wallet-exploit/out/build-info/c88dbc86551f7b5c.json +1 -0
- package/binance-wallet-exploit/out/build-info/e9657504010623db.json +1 -0
- package/cache/fuzz/failures/ARIAVerifiedFuzzTest/testFuzz_ApprovalRaceCondition +1 -0
- package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_DirectTransferExploit +1 -0
- package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_LargeSwapDrain +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_ApprovalExploit +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_BalanceManipulation +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_RateManipulation +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_StorageManipulation +1 -0
- package/cache/fuzz/failures/PARFuzzTest/testFuzz_OverflowTransfer +1 -0
- package/cache/fuzz/failures/PARFuzzTest/testFuzz_Transfer +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_FrontrunAddfunds +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RewardOverflow +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RoundingExploit +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_WithdrawLimit +1 -0
- package/cache/solidity-files-cache.json +1 -0
- package/cache/test-failures +1 -0
- package/calculate-elephant-flashloan.js +195 -0
- package/check-address-approval.js +112 -0
- package/check-alpha-proxy.js +42 -0
- package/check-arbitrage.js +155 -0
- package/check-aria-token.js +47 -0
- package/check-ark.sh +20 -0
- package/check-btcst-mining.js +75 -0
- package/check-btcst-pools.js +163 -0
- package/check-btcst.js +88 -0
- package/check-caller.js +26 -0
- package/check-ceek-lp.js +73 -0
- package/check-ceek.js +47 -0
- package/check-dxsale-address.js +35 -0
- package/check-fara-exploit-timing.js +56 -0
- package/check-fara-real-exploit.js +73 -0
- package/check-flashloan-limits.js +129 -0
- package/check-kel-cel-pool.js +91 -0
- package/check-lax-staking.js +41 -0
- package/check-lendflare.js +165 -0
- package/check-lft-accounting.js +109 -0
- package/check-lft-roles.js +165 -0
- package/check-lock-time.js +47 -0
- package/check-min-stake.js +73 -0
- package/check-mystery-contract.js +52 -0
- package/check-next-token.js +50 -0
- package/check-nora-lock.js +67 -0
- package/check-oiler-approvals.js +116 -0
- package/check-oiler-proxy.js +73 -0
- package/check-oiler-staking.js +117 -0
- package/check-proxy-simple.js +71 -0
- package/check-recent-stakes.js +54 -0
- package/check-shegic-holdings.js +67 -0
- package/check-snowcrash-ecosystem.js +83 -0
- package/check-sync-lp.js +97 -0
- package/check-sync-stake.js +42 -0
- package/check-tlm.js +37 -0
- package/check-token-pools.js +146 -0
- package/check-trunk-depeg.js +181 -0
- package/check-tusd-decimals.js +58 -0
- package/check-user-storage-deep.js +81 -0
- package/check-welephant-pools.js +130 -0
- package/check-xfi-pool.js +75 -0
- package/check-zypher.js +32 -0
- package/check_proxy.sh +36 -0
- package/compare-tlm-chains.js +90 -0
- package/contract_0x05f2.html +6025 -0
- package/contract_0x3720.html +6361 -0
- package/contract_0x928e.html +5606 -0
- package/contract_0xc42d.html +5304 -0
- package/contract_page.html +5789 -0
- package/decode-stake-tx.js +50 -0
- package/deep-analyze-lock.js +82 -0
- package/dune_uups_proxy_query.sql +42 -0
- package/dune_uups_vulnerable_query.sql +0 -0
- package/echidna/alpha-proxy.yaml +14 -0
- package/echidna/elephant.yaml +7 -0
- package/echidna/lendflare.yaml +42 -0
- package/echidna.config.yaml +12 -0
- package/elephant_raw.json +1 -0
- package/eps_raw.json +1 -0
- package/exploit/.github/workflows/test.yml +38 -0
- package/exploit/.gitmodules +3 -0
- package/exploit/README.md +66 -0
- package/exploit/foundry.lock +8 -0
- package/exploit/lib/forge-std/.gitattributes +1 -0
- package/exploit/lib/forge-std/.github/CODEOWNERS +1 -0
- package/exploit/lib/forge-std/.github/dependabot.yml +6 -0
- package/exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/exploit/lib/forge-std/CONTRIBUTING.md +193 -0
- package/exploit/lib/forge-std/LICENSE-APACHE +203 -0
- package/exploit/lib/forge-std/LICENSE-MIT +25 -0
- package/exploit/lib/forge-std/README.md +314 -0
- package/exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/exploit/lib/forge-std/package.json +16 -0
- package/exploit/lib/forge-std/scripts/vm.py +636 -0
- package/exploit_analysis.txt +51 -0
- package/extract_contract.py +21 -0
- package/extract_elephant_contracts.py +24 -0
- package/fara-staking-bytecode.txt +1 -0
- package/fara-staking-raw.txt +1 -0
- package/fetch-aria.js +46 -0
- package/fetch-contract.js +50 -0
- package/fetch-shegic-source.js +86 -0
- package/fetch-snowcrash.js +44 -0
- package/fetch-staking-source.js +53 -0
- package/fetch-tlm.js +60 -0
- package/fetch_elephant_source.py +32 -0
- package/find-ceek-staking.js +21 -0
- package/find-exploit-tx.js +88 -0
- package/find-oiler-holders.js +100 -0
- package/find-tlm-holder.js +36 -0
- package/find-vulnerable-fund.js +94 -0
- package/foundry.lock +8 -0
- package/fuzz-all.sh +53 -0
- package/get-aria-contract.py +40 -0
- package/get-lft-holders.js +89 -0
- package/get-tlm-source.sh +8 -0
- package/harvest_txs.json +1 -0
- package/lft-bytecode-raw.txt +1 -0
- package/lft-bytecode.json +1 -0
- package/lft-impl.bin +1 -0
- package/lft-implementation-bytecode.txt +1 -0
- package/lib/forge-std/.gitattributes +1 -0
- package/lib/forge-std/.github/CODEOWNERS +1 -0
- package/lib/forge-std/.github/dependabot.yml +6 -0
- package/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/lib/forge-std/CONTRIBUTING.md +193 -0
- package/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/forge-std/README.md +314 -0
- package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/lib/forge-std/package.json +16 -0
- package/lib/forge-std/scripts/vm.py +636 -0
- package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/lib/openzeppelin-contracts/.codecov.yml +12 -0
- package/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/lib/openzeppelin-contracts/.eslintrc +20 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +49 -0
- package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +21 -0
- package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +55 -0
- package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/lib/openzeppelin-contracts/.github/workflows/checks.yml +118 -0
- package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +68 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +214 -0
- package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +34 -0
- package/lib/openzeppelin-contracts/.gitmodules +7 -0
- package/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/lib/openzeppelin-contracts/.prettierrc +15 -0
- package/lib/openzeppelin-contracts/.solcover.js +13 -0
- package/lib/openzeppelin-contracts/CHANGELOG.md +972 -0
- package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/lib/openzeppelin-contracts/GUIDELINES.md +148 -0
- package/lib/openzeppelin-contracts/LICENSE +22 -0
- package/lib/openzeppelin-contracts/README.md +107 -0
- package/lib/openzeppelin-contracts/RELEASING.md +45 -0
- package/lib/openzeppelin-contracts/SECURITY.md +42 -0
- package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/README.md +17 -0
- package/lib/openzeppelin-contracts/certora/Makefile +54 -0
- package/lib/openzeppelin-contracts/certora/README.md +60 -0
- package/lib/openzeppelin-contracts/certora/diff/access_manager_AccessManager.sol.patch +97 -0
- package/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/run.js +160 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +119 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +464 -0
- package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +300 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20.spec +352 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +55 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +198 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC721.spec +679 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +333 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +246 -0
- package/lib/openzeppelin-contracts/certora/specs/Initializable.spec +165 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable.spec +77 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
- package/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
- package/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +274 -0
- package/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +8 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +17 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs.json +86 -0
- package/lib/openzeppelin-contracts/contracts/access/README.adoc +43 -0
- package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
- package/lib/openzeppelin-contracts/contracts/governance/README.adoc +167 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +82 -0
- package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +12 -0
- package/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +41 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/lib/openzeppelin-contracts/contracts/utils/README.adoc +88 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
- package/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +23 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +204 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +48 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +11 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +19 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +145 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +240 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +185 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
- package/lib/openzeppelin-contracts/docs/templates/contract.hbs +111 -0
- package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/lib/openzeppelin-contracts/docs/templates/properties.js +64 -0
- package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +24 -0
- package/lib/openzeppelin-contracts/hardhat/env-contract.js +25 -0
- package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/lib/openzeppelin-contracts/hardhat.config.js +131 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +92 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +3 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/openzeppelin-contracts/lib/forge-std/README.md +250 -0
- package/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
- package/lib/openzeppelin-contracts/logo.svg +15 -0
- package/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/lib/openzeppelin-contracts/package-lock.json +16544 -0
- package/lib/openzeppelin-contracts/package.json +96 -0
- package/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/lib/openzeppelin-contracts/renovate.json +4 -0
- package/lib/openzeppelin-contracts/requirements.txt +1 -0
- package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +20 -0
- package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +243 -0
- package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +38 -0
- package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +54 -0
- package/lib/openzeppelin-contracts/scripts/gen-nav.js +41 -0
- package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/lib/openzeppelin-contracts/scripts/generate/run.js +49 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +247 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +17 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +146 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +283 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +250 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +126 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +78 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
- package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/helpers.js +37 -0
- package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
- package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +84 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +5 -0
- package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +47 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +360 -0
- package/lib/openzeppelin-contracts/slither.config.json +5 -0
- package/lib/openzeppelin-contracts/solhint.config.js +20 -0
- package/mythril-lft-output.txt +1 -0
- package/mythril-lft-symbolic.txt +18 -0
- package/mythril-lft.sh +20 -0
- package/mythril-symbolic-output.txt +1 -0
- package/mythril-symbolic.sh +42 -0
- package/out/build-info/0026b78428192979.json +1 -0
- package/out/build-info/03c4fc3b88486eba.json +1 -0
- package/out/build-info/0540afa9b9a5c5a6.json +1 -0
- package/out/build-info/081932f505bc08b9.json +1 -0
- package/out/build-info/0da104ba0d6642d5.json +1 -0
- package/out/build-info/197281971dbb5f23.json +1 -0
- package/out/build-info/197e7e332832a232.json +1 -0
- package/out/build-info/1a1cab9136eb5f94.json +1 -0
- package/out/build-info/1b320204eb162aa2.json +1 -0
- package/out/build-info/1e03f94398052674.json +1 -0
- package/out/build-info/22ac085949602937.json +1 -0
- package/out/build-info/234ef37453a9fa64.json +1 -0
- package/out/build-info/2447db7b1878fa8e.json +1 -0
- package/out/build-info/25568daeb484f5ff.json +1 -0
- package/out/build-info/27465853244c49ce.json +1 -0
- package/out/build-info/2c57a9e0f087453b.json +1 -0
- package/out/build-info/3c62ae7de8da68c4.json +1 -0
- package/out/build-info/3e771ae109e97bb3.json +1 -0
- package/out/build-info/460499bc0a3465c4.json +1 -0
- package/out/build-info/47ce37e50a4f115e.json +1 -0
- package/out/build-info/4fcce5c63cf427d6.json +1 -0
- package/out/build-info/4fd0a53fe63fddbb.json +1 -0
- package/out/build-info/50f1247db9d769cc.json +1 -0
- package/out/build-info/5317d0181a7a5e02.json +1 -0
- package/out/build-info/594df509275ceb5b.json +1 -0
- package/out/build-info/61983ac3f6141719.json +1 -0
- package/out/build-info/638c4548307122fe.json +1 -0
- package/out/build-info/67c2c43bdb7c0ded.json +1 -0
- package/out/build-info/777f42643aad37b7.json +1 -0
- package/out/build-info/7d7856f19e845354.json +1 -0
- package/out/build-info/83976260b6f71e94.json +1 -0
- package/out/build-info/83c23882000b963d.json +1 -0
- package/out/build-info/84b2cce8f70b36be.json +1 -0
- package/out/build-info/8bc13d31d7c3206a.json +1 -0
- package/out/build-info/8e183bd4d9d8cf88.json +1 -0
- package/out/build-info/94bfe1e7cafa8ff5.json +1 -0
- package/out/build-info/99ec7d5e8d8ff360.json +1 -0
- package/out/build-info/9ac044b29daa7d5e.json +1 -0
- package/out/build-info/9b203227ff5d2e63.json +1 -0
- package/out/build-info/9d18c5872c4282dd.json +1 -0
- package/out/build-info/9f77f04f33baf9a3.json +1 -0
- package/out/build-info/a6e1caf974787982.json +1 -0
- package/out/build-info/a94b6348867a62d6.json +1 -0
- package/out/build-info/ad93721947a8b195.json +1 -0
- package/out/build-info/b42daddb5aa4b19f.json +1 -0
- package/out/build-info/bf13512ae899f7e8.json +1 -0
- package/out/build-info/c39f86c20a548c4a.json +1 -0
- package/out/build-info/cb12bb975a2f4e65.json +1 -0
- package/out/build-info/d0c6788fadc2aa60.json +1 -0
- package/out/build-info/d2726bf94ed5b845.json +1 -0
- package/out/build-info/d4eb00da50cce5cb.json +1 -0
- package/out/build-info/db931924a3bc8bdd.json +1 -0
- package/out/build-info/e1a503d49bc77401.json +1 -0
- package/out/build-info/efe5396f8892ce77.json +1 -0
- package/out/build-info/f536d90ced745969.json +1 -0
- package/out/build-info/fed38823c7019b82.json +1 -0
- package/package.json +51 -0
- package/page.html +5384 -0
- package/pancakeswap-simple-tvl.sql +15 -0
- package/pancakeswap-top-pools.sql +29 -0
- package/pancakeswap-tvl-optimized.sql +57 -0
- package/pancakeswap-tvl-query.sql +60 -0
- package/pancakeswap-underflow-hunting.sql +51 -0
- package/pancakeswap-vulnerability-queries.sql +200 -0
- package/posi_page.html +6369 -0
- package/posi_response.json +29 -0
- package/proxy_page.html +500 -0
- package/run_mythril_elephant.sh +18 -0
- package/sHEGIC-bytecode.bin +6 -0
- package/sHEGIC-mythril-analysis.txt +1 -0
- package/sHEGIC-mythril-full.txt +134 -0
- package/sHEGIC_ANALYSIS.md +135 -0
- package/sHEGIC_EXPLOIT_ANALYSIS.md +317 -0
- package/sHEGIC_MYTHRIL_ANALYSIS.md +361 -0
- package/scrape-snowcrash.js +28 -0
- package/scripts/yooshi_drain.sh +154 -0
- package/shi_raw.json +1 -0
- package/temp.json +1 -0
- package/temp_harvest.json +1 -0
- package/temp_pika.json +1 -0
- package/temp_posi.json +1 -0
- package/temp_response.json +1 -0
- package/test-lft-hidden-balance.js +108 -0
- package/test-xfi-exploit.js +140 -0
- package/trunk-liquidity-rescue.js +164 -0
- package/vBABY_page.html +6153 -0
- package/vBABY_response.json +29 -0
- package/wsg_response.json +1 -0
- package/yooldo_page.html +10371 -0
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
# UNDEAD Token (Decompiled) Security Audit Report
|
|
2
|
+
|
|
3
|
+
**Contract**: UNDEAD Token (Undead Blocks)
|
|
4
|
+
**Type**: ERC20 Token with Anti-Shark, Whitelist/Blacklist
|
|
5
|
+
**Compiler**: Solidity 0.8.4
|
|
6
|
+
**Decompiled**: March 23, 2026
|
|
7
|
+
**Audit Date**: March 24, 2026
|
|
8
|
+
**Auditor**: Kiro AI Security Analysis
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Executive Summary
|
|
13
|
+
|
|
14
|
+
**Risk Level**: 🔴 **CRITICAL** (Anti-Shark Mechanism Completely Broken)
|
|
15
|
+
|
|
16
|
+
**FOCUS: USER-EXPLOITABLE VULNERABILITIES ONLY**
|
|
17
|
+
|
|
18
|
+
UNDEAD Token has a **CRITICAL BUG** where the anti-shark mechanism is completely non-functional. The contract stores anti-shark configuration (limit amount, start/end times, activation flag) but **NEVER CHECKS** these values during transfers. This means users can bypass the intended transfer limits entirely.
|
|
19
|
+
|
|
20
|
+
**Key Finding**:
|
|
21
|
+
1. 🔴 **CRITICAL USER EXPLOIT**: Anti-shark limit is never enforced - users can transfer unlimited amounts during "protected" period
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Contract Overview
|
|
26
|
+
|
|
27
|
+
**Token Details**:
|
|
28
|
+
- **Name**: UNDEAD
|
|
29
|
+
- **Symbol**: Undead Blocks
|
|
30
|
+
- **Decimals**: 18
|
|
31
|
+
- **Initial Supply**: 0x19d971e4fe8401e74000000 (~30 billion tokens)
|
|
32
|
+
- **Features**: Anti-shark mechanism, whitelist mode, blacklist
|
|
33
|
+
|
|
34
|
+
**Intended Anti-Shark Mechanism**:
|
|
35
|
+
- Admin sets `_setAntiSharkAmount` (transfer limit)
|
|
36
|
+
- Admin activates anti-shark with start/end times
|
|
37
|
+
- During active period, transfers should be limited to `_setAntiSharkAmount`
|
|
38
|
+
- Whitelisted addresses should bypass limit
|
|
39
|
+
|
|
40
|
+
**What Actually Happens**:
|
|
41
|
+
- Anti-shark configuration is stored but **NEVER CHECKED**
|
|
42
|
+
- Users can transfer unlimited amounts regardless of anti-shark settings
|
|
43
|
+
- The entire anti-shark system is decorative only
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## 🔴 CRITICAL USER-EXPLOITABLE VULNERABILITY
|
|
48
|
+
|
|
49
|
+
### CRITICAL #1: Anti-Shark Mechanism Never Enforced
|
|
50
|
+
|
|
51
|
+
**Severity**: CRITICAL
|
|
52
|
+
**Exploitability**: TRIVIAL (any user can exploit)
|
|
53
|
+
**Impact**: Complete bypass of transfer limits
|
|
54
|
+
|
|
55
|
+
**The Bug**:
|
|
56
|
+
|
|
57
|
+
The transfer function `0xf22` handles all transfers but **NEVER CHECKS** anti-shark limits:
|
|
58
|
+
|
|
59
|
+
```solidity
|
|
60
|
+
function 0xf22(uint256 varg0, address varg1, address varg2) private {
|
|
61
|
+
if (varg1) {
|
|
62
|
+
// Check whitelist mode
|
|
63
|
+
if (_isWhitelistMode) {
|
|
64
|
+
require(_isWhitelist[varg2] || _isWhitelist[varg1], Error('Reason:01'));
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Check blacklist
|
|
68
|
+
require(!_isBlacklist[varg2] && !_isBlacklist[varg1], Error('Reason:02'));
|
|
69
|
+
|
|
70
|
+
require(varg2, Error('ERC20: transfer from the zero address'));
|
|
71
|
+
require(varg1, Error('ERC20: transfer to the zero address'));
|
|
72
|
+
require(_balanceOf[varg2] >= varg0, Error('ERC20: transfer amount exceeds balance'));
|
|
73
|
+
|
|
74
|
+
_balanceOf[varg2] = _balanceOf[varg2] - varg0;
|
|
75
|
+
_balanceOf[varg1] = _balanceOf[varg1] + varg0;
|
|
76
|
+
|
|
77
|
+
emit Transfer(varg2, varg1, varg0);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
// ... burn logic
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**What's Missing**:
|
|
85
|
+
```solidity
|
|
86
|
+
// ❌ MISSING: Anti-shark check should be here
|
|
87
|
+
if (_deActivateAntiShark) {
|
|
88
|
+
if (block.timestamp >= stor_fb && block.timestamp <= stor_fc) {
|
|
89
|
+
if (!_isWhitelist[varg2] && !_isWhitelist[varg1]) {
|
|
90
|
+
require(varg0 <= _setAntiSharkAmount, "Anti-shark: amount exceeds limit");
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**The Contract Has**:
|
|
97
|
+
- ✅ `_setAntiSharkAmount` storage variable (set via `setAntiSharkAmount()`)
|
|
98
|
+
- ✅ `stor_fb` and `stor_fc` (start/end times, set via `activateAntiShark()`)
|
|
99
|
+
- ✅ `_deActivateAntiShark` flag (set via `activateAntiShark()` / `deActivateAntiShark()`)
|
|
100
|
+
- ✅ `_isWhitelist` mapping (set via `setWhitelist()`)
|
|
101
|
+
- ❌ **NO CHECK** in transfer function
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## USER EXPLOIT: Bypass Anti-Shark Limits
|
|
106
|
+
|
|
107
|
+
**Attack Scenario**:
|
|
108
|
+
|
|
109
|
+
```solidity
|
|
110
|
+
// Setup: Admin activates anti-shark
|
|
111
|
+
// _setAntiSharkAmount = 10,000 tokens (limit per transfer)
|
|
112
|
+
// stor_fb = block.timestamp (start now)
|
|
113
|
+
// stor_fc = block.timestamp + 300 (end in 5 minutes)
|
|
114
|
+
// _deActivateAntiShark = true (active)
|
|
115
|
+
|
|
116
|
+
// Attacker (regular user, not whitelisted):
|
|
117
|
+
// Should only be able to transfer 10,000 tokens per transaction
|
|
118
|
+
// But the check is missing!
|
|
119
|
+
|
|
120
|
+
// Exploit:
|
|
121
|
+
transfer(victim, 1000000000 * 1e18); // Transfer 1 billion tokens
|
|
122
|
+
// ✅ SUCCEEDS - No anti-shark check!
|
|
123
|
+
|
|
124
|
+
// Or split into multiple transactions:
|
|
125
|
+
transfer(exchange, 100000000 * 1e18); // 100M tokens
|
|
126
|
+
transfer(exchange, 100000000 * 1e18); // 100M tokens
|
|
127
|
+
transfer(exchange, 100000000 * 1e18); // 100M tokens
|
|
128
|
+
// All succeed, no limits enforced
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**Impact**:
|
|
132
|
+
- **COMPLETE BYPASS**: Anti-shark mechanism is useless
|
|
133
|
+
- **EARLY DUMPING**: Users can dump unlimited tokens during "protected" period
|
|
134
|
+
- **MARKET MANIPULATION**: Large holders can crash price immediately
|
|
135
|
+
- **FALSE SECURITY**: Project claims anti-shark protection but has none
|
|
136
|
+
- **INVESTOR DECEPTION**: Users think they're protected but aren't
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Why This is Critical
|
|
141
|
+
|
|
142
|
+
**From User Perspective**:
|
|
143
|
+
1. **Early Investors Get Rekt**: Anti-shark is supposed to prevent early dumps
|
|
144
|
+
2. **No Protection**: Large holders can dump everything immediately
|
|
145
|
+
3. **Price Crash**: No limit on sell pressure during critical early period
|
|
146
|
+
4. **False Advertising**: Project advertises anti-shark but it doesn't work
|
|
147
|
+
|
|
148
|
+
**From Attacker Perspective**:
|
|
149
|
+
1. **TRIVIAL EXPLOIT**: Just call `transfer()` with any amount
|
|
150
|
+
2. **NO SPECIAL ACCESS NEEDED**: Any user can exploit
|
|
151
|
+
3. **NO DETECTION**: Looks like normal transfer
|
|
152
|
+
4. **IMMEDIATE**: Can dump entire balance in one transaction
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Code Analysis - What Should Happen vs What Actually Happens
|
|
157
|
+
|
|
158
|
+
### What Admin Thinks They're Doing:
|
|
159
|
+
|
|
160
|
+
```solidity
|
|
161
|
+
// Step 1: Set anti-shark limit to 10,000 tokens
|
|
162
|
+
setAntiSharkAmount(30000); // Sets _setAntiSharkAmount = 30000/3 = 10,000
|
|
163
|
+
|
|
164
|
+
// Step 2: Activate anti-shark for 5 minutes
|
|
165
|
+
activateAntiShark(0, 0); // Sets stor_fb = now, stor_fc = now + 300
|
|
166
|
+
|
|
167
|
+
// Step 3: Whitelist trusted addresses
|
|
168
|
+
setWhitelist(teamWallet, true);
|
|
169
|
+
setWhitelist(stakingContract, true);
|
|
170
|
+
|
|
171
|
+
// Expected behavior:
|
|
172
|
+
// - Non-whitelisted users can only transfer 10,000 tokens per tx
|
|
173
|
+
// - Whitelisted users can transfer unlimited
|
|
174
|
+
// - After 5 minutes, limit is removed
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### What Actually Happens:
|
|
178
|
+
|
|
179
|
+
```solidity
|
|
180
|
+
// Step 1: setAntiSharkAmount(30000)
|
|
181
|
+
// ✅ Sets _setAntiSharkAmount = 10,000
|
|
182
|
+
// ✅ Emits EConfigLimitAmount(30000)
|
|
183
|
+
|
|
184
|
+
// Step 2: activateAntiShark(0, 0)
|
|
185
|
+
// ✅ Sets stor_fb = block.timestamp
|
|
186
|
+
// ✅ Sets stor_fc = block.timestamp + 300
|
|
187
|
+
// ✅ Sets _deActivateAntiShark = true
|
|
188
|
+
// ✅ Emits EActivate()
|
|
189
|
+
|
|
190
|
+
// Step 3: setWhitelist(teamWallet, true)
|
|
191
|
+
// ✅ Sets _isWhitelist[teamWallet] = true
|
|
192
|
+
// ✅ Emits EWhitelist(teamWallet, true)
|
|
193
|
+
|
|
194
|
+
// Step 4: User calls transfer(exchange, 1000000000 * 1e18)
|
|
195
|
+
// ❌ NO CHECK for _setAntiSharkAmount
|
|
196
|
+
// ❌ NO CHECK for stor_fb/stor_fc time window
|
|
197
|
+
// ❌ NO CHECK for _deActivateAntiShark flag
|
|
198
|
+
// ❌ NO CHECK for _isWhitelist
|
|
199
|
+
// ✅ Transfer succeeds with unlimited amount!
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## Comparison: Working vs Broken Implementation
|
|
205
|
+
|
|
206
|
+
### How It Should Work (Correct Implementation):
|
|
207
|
+
|
|
208
|
+
```solidity
|
|
209
|
+
function _transfer(address from, address to, uint256 amount) internal {
|
|
210
|
+
// Whitelist mode check
|
|
211
|
+
if (_isWhitelistMode) {
|
|
212
|
+
require(_isWhitelist[from] || _isWhitelist[to], "Not whitelisted");
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Blacklist check
|
|
216
|
+
require(!_isBlacklist[from] && !_isBlacklist[to], "Blacklisted");
|
|
217
|
+
|
|
218
|
+
// ✅ ANTI-SHARK CHECK (MISSING IN UNDEAD TOKEN)
|
|
219
|
+
if (_deActivateAntiShark) {
|
|
220
|
+
if (block.timestamp >= stor_fb && block.timestamp <= stor_fc) {
|
|
221
|
+
if (!_isWhitelist[from] && !_isWhitelist[to]) {
|
|
222
|
+
require(amount <= _setAntiSharkAmount, "Exceeds anti-shark limit");
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Standard ERC20 transfer logic
|
|
228
|
+
require(from != address(0), "Transfer from zero address");
|
|
229
|
+
require(to != address(0), "Transfer to zero address");
|
|
230
|
+
require(_balanceOf[from] >= amount, "Insufficient balance");
|
|
231
|
+
|
|
232
|
+
_balanceOf[from] -= amount;
|
|
233
|
+
_balanceOf[to] += amount;
|
|
234
|
+
|
|
235
|
+
emit Transfer(from, to, amount);
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### How It Actually Works (Broken Implementation):
|
|
240
|
+
|
|
241
|
+
```solidity
|
|
242
|
+
function 0xf22(uint256 varg0, address varg1, address varg2) private {
|
|
243
|
+
if (varg1) {
|
|
244
|
+
// Whitelist mode check
|
|
245
|
+
if (_isWhitelistMode) {
|
|
246
|
+
require(_isWhitelist[varg2] || _isWhitelist[varg1], "Reason:01");
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
// Blacklist check
|
|
250
|
+
require(!_isBlacklist[varg2] && !_isBlacklist[varg1], "Reason:02");
|
|
251
|
+
|
|
252
|
+
// ❌ ANTI-SHARK CHECK COMPLETELY MISSING
|
|
253
|
+
|
|
254
|
+
// Standard ERC20 transfer logic
|
|
255
|
+
require(varg2, "Transfer from zero address");
|
|
256
|
+
require(varg1, "Transfer to zero address");
|
|
257
|
+
require(_balanceOf[varg2] >= varg0, "Insufficient balance");
|
|
258
|
+
|
|
259
|
+
_balanceOf[varg2] -= varg0;
|
|
260
|
+
_balanceOf[varg1] += varg0;
|
|
261
|
+
|
|
262
|
+
emit Transfer(varg2, varg1, varg0);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
// ... burn logic
|
|
266
|
+
}
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Real-World Impact
|
|
272
|
+
|
|
273
|
+
**Scenario: Token Launch**
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Day 0, 00:00 - Token launches
|
|
277
|
+
- Admin activates anti-shark: 10,000 token limit per transfer
|
|
278
|
+
- Goal: Prevent early whales from dumping
|
|
279
|
+
- Expected: Smooth price discovery over 5 minutes
|
|
280
|
+
|
|
281
|
+
Day 0, 00:01 - Whale dumps
|
|
282
|
+
- Whale has 100M tokens
|
|
283
|
+
- Whale calls: transfer(exchange, 100000000 * 1e18)
|
|
284
|
+
- Expected: Transaction reverts (exceeds 10,000 limit)
|
|
285
|
+
- Actual: ✅ Transaction succeeds (no limit enforced)
|
|
286
|
+
- Price crashes 90% in seconds
|
|
287
|
+
|
|
288
|
+
Day 0, 00:02 - Panic selling
|
|
289
|
+
- Other holders see price crash
|
|
290
|
+
- Everyone tries to sell
|
|
291
|
+
- No anti-shark protection for anyone
|
|
292
|
+
- Token is dead
|
|
293
|
+
|
|
294
|
+
Day 0, 00:05 - Anti-shark period ends
|
|
295
|
+
- Doesn't matter, token already crashed
|
|
296
|
+
- Anti-shark was useless the entire time
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
## Other Findings (Non-Exploitable by Users)
|
|
302
|
+
|
|
303
|
+
### ✅ NO OTHER USER-EXPLOITABLE BUGS FOUND
|
|
304
|
+
|
|
305
|
+
I reviewed the entire contract for user-exploitable vulnerabilities:
|
|
306
|
+
|
|
307
|
+
- ✅ `transfer()` - Properly checks balances (except anti-shark)
|
|
308
|
+
- ✅ `transferFrom()` - Properly checks allowances and balances
|
|
309
|
+
- ✅ `approve()` - Standard implementation, no exploits
|
|
310
|
+
- ✅ No reentrancy vulnerabilities
|
|
311
|
+
- ✅ No integer overflow/underflow (Solidity 0.8.4 has built-in checks)
|
|
312
|
+
- ✅ No unchecked external calls that users can exploit
|
|
313
|
+
- ✅ Burn function works correctly (transfer to zero address)
|
|
314
|
+
- ✅ Whitelist/blacklist checks work correctly
|
|
315
|
+
|
|
316
|
+
**The ONLY user-exploitable bug is the missing anti-shark check.**
|
|
317
|
+
|
|
318
|
+
---
|
|
319
|
+
|
|
320
|
+
## Admin-Side Issues (Not User-Exploitable)
|
|
321
|
+
|
|
322
|
+
These are centralization risks but NOT exploitable by regular users:
|
|
323
|
+
|
|
324
|
+
- ⚠️ Admin can blacklist anyone
|
|
325
|
+
- ⚠️ Admin can enable whitelist mode (freeze non-whitelisted users)
|
|
326
|
+
- ⚠️ Admin can change anti-shark settings
|
|
327
|
+
- ⚠️ Owner can transfer ownership
|
|
328
|
+
- ⚠️ Role-based access control (admin roles)
|
|
329
|
+
|
|
330
|
+
**You said you don't care about admin-side issues, so I'm not detailing these.**
|
|
331
|
+
|
|
332
|
+
---
|
|
333
|
+
|
|
334
|
+
## Proof of Concept
|
|
335
|
+
|
|
336
|
+
### Exploit Code:
|
|
337
|
+
|
|
338
|
+
```solidity
|
|
339
|
+
// SPDX-License-Identifier: MIT
|
|
340
|
+
pragma solidity ^0.8.4;
|
|
341
|
+
|
|
342
|
+
interface IUndeadToken {
|
|
343
|
+
function transfer(address to, uint256 amount) external returns (bool);
|
|
344
|
+
function balanceOf(address account) external view returns (uint256);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
contract UndeadAntiSharkBypass {
|
|
348
|
+
IUndeadToken public token;
|
|
349
|
+
|
|
350
|
+
constructor(address _token) {
|
|
351
|
+
token = IUndeadToken(_token);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
function exploit() external {
|
|
355
|
+
// Get attacker's balance
|
|
356
|
+
uint256 balance = token.balanceOf(msg.sender);
|
|
357
|
+
|
|
358
|
+
// Transfer entire balance in one transaction
|
|
359
|
+
// This should fail if anti-shark is active with limit
|
|
360
|
+
// But it succeeds because anti-shark check is missing
|
|
361
|
+
require(token.transfer(address(this), balance), "Transfer failed");
|
|
362
|
+
|
|
363
|
+
// Success! Bypassed anti-shark limit
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Or just call transfer directly:
|
|
367
|
+
function directExploit(address to, uint256 amount) external {
|
|
368
|
+
// No need for contract, just call transfer with any amount
|
|
369
|
+
token.transfer(to, amount);
|
|
370
|
+
// Succeeds regardless of anti-shark settings
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
### Test Scenario:
|
|
376
|
+
|
|
377
|
+
```javascript
|
|
378
|
+
// Setup
|
|
379
|
+
const token = await UndeadToken.deploy();
|
|
380
|
+
await token.__UndeadToken_init();
|
|
381
|
+
|
|
382
|
+
// Admin activates anti-shark with 10,000 token limit
|
|
383
|
+
await token.setAntiSharkAmount(30000); // Sets limit to 10,000
|
|
384
|
+
await token.activateAntiShark(0, 0); // Activate for 5 minutes
|
|
385
|
+
|
|
386
|
+
// Attacker has 100M tokens
|
|
387
|
+
const attackerBalance = await token.balanceOf(attacker.address);
|
|
388
|
+
console.log("Attacker balance:", attackerBalance); // 100,000,000 tokens
|
|
389
|
+
|
|
390
|
+
// Attacker tries to transfer 100M tokens (should fail)
|
|
391
|
+
await token.connect(attacker).transfer(exchange.address, attackerBalance);
|
|
392
|
+
|
|
393
|
+
// Expected: Transaction reverts with "Exceeds anti-shark limit"
|
|
394
|
+
// Actual: ✅ Transaction succeeds!
|
|
395
|
+
|
|
396
|
+
console.log("Exploit successful! Transferred unlimited tokens during anti-shark period");
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
---
|
|
400
|
+
|
|
401
|
+
## Recommendations
|
|
402
|
+
|
|
403
|
+
### CRITICAL - Fix Anti-Shark Mechanism
|
|
404
|
+
|
|
405
|
+
**Add the missing check to the transfer function**:
|
|
406
|
+
|
|
407
|
+
```solidity
|
|
408
|
+
function _transfer(address from, address to, uint256 amount) internal {
|
|
409
|
+
// Existing checks
|
|
410
|
+
if (_isWhitelistMode) {
|
|
411
|
+
require(_isWhitelist[from] || _isWhitelist[to], "Not whitelisted");
|
|
412
|
+
}
|
|
413
|
+
require(!_isBlacklist[from] && !_isBlacklist[to], "Blacklisted");
|
|
414
|
+
|
|
415
|
+
// ✅ ADD THIS: Anti-shark check
|
|
416
|
+
if (_deActivateAntiShark) {
|
|
417
|
+
if (block.timestamp >= stor_fb && block.timestamp <= stor_fc) {
|
|
418
|
+
// Check if neither sender nor recipient is whitelisted
|
|
419
|
+
if (!_isWhitelist[from] && !_isWhitelist[to]) {
|
|
420
|
+
require(amount <= _setAntiSharkAmount, "Anti-shark: transfer amount exceeds limit");
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
|
|
425
|
+
// Rest of transfer logic
|
|
426
|
+
require(from != address(0), "ERC20: transfer from the zero address");
|
|
427
|
+
require(to != address(0), "ERC20: transfer to the zero address");
|
|
428
|
+
require(_balanceOf[from] >= amount, "ERC20: transfer amount exceeds balance");
|
|
429
|
+
|
|
430
|
+
_balanceOf[from] -= amount;
|
|
431
|
+
_balanceOf[to] += amount;
|
|
432
|
+
|
|
433
|
+
emit Transfer(from, to, amount);
|
|
434
|
+
}
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## Conclusion
|
|
440
|
+
|
|
441
|
+
**VERDICT**: 🔴 **CRITICAL USER-EXPLOITABLE BUG**
|
|
442
|
+
|
|
443
|
+
UNDEAD Token has a **CRITICAL VULNERABILITY** where the anti-shark mechanism is completely non-functional. The contract stores all the anti-shark configuration but never checks it during transfers.
|
|
444
|
+
|
|
445
|
+
**Key Finding**:
|
|
446
|
+
- 🔴 **CRITICAL**: Anti-shark limit is never enforced in transfer function
|
|
447
|
+
- 🔴 **USER-EXPLOITABLE**: Any user can bypass limits by simply calling `transfer()`
|
|
448
|
+
- 🔴 **TRIVIAL**: No special access or skills required
|
|
449
|
+
- 🔴 **HIGH IMPACT**: Defeats entire purpose of anti-shark protection
|
|
450
|
+
|
|
451
|
+
**For Users**:
|
|
452
|
+
- ⚠️ **DO NOT TRUST** anti-shark protection - it doesn't work
|
|
453
|
+
- ⚠️ Large holders can dump unlimited tokens immediately
|
|
454
|
+
- ⚠️ No protection during critical early period
|
|
455
|
+
- ⚠️ High risk of price crash at launch
|
|
456
|
+
|
|
457
|
+
**For Developers**:
|
|
458
|
+
- 🔴 **CRITICAL FIX REQUIRED**: Add anti-shark check to transfer function
|
|
459
|
+
- Test the anti-shark mechanism thoroughly
|
|
460
|
+
- Verify limits are actually enforced
|
|
461
|
+
|
|
462
|
+
**Exploitability**: **TRIVIAL**
|
|
463
|
+
- Any user can exploit
|
|
464
|
+
- Just call `transfer()` with any amount
|
|
465
|
+
- No special access needed
|
|
466
|
+
- Works immediately
|
|
467
|
+
|
|
468
|
+
---
|
|
469
|
+
|
|
470
|
+
**This is a CRITICAL user-exploitable bug that completely defeats the anti-shark protection mechanism.** 🔴
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
## Summary - USER EXPLOITS ONLY
|
|
475
|
+
|
|
476
|
+
✅ **FOUND 1 CRITICAL USER-EXPLOITABLE BUG**:
|
|
477
|
+
1. Anti-shark mechanism never enforced - users can transfer unlimited amounts
|
|
478
|
+
|
|
479
|
+
❌ **NO OTHER USER-EXPLOITABLE BUGS**:
|
|
480
|
+
- Standard ERC20 functions work correctly
|
|
481
|
+
- No reentrancy vulnerabilities
|
|
482
|
+
- No integer overflow issues
|
|
483
|
+
- No logic bugs in transfers (except anti-shark)
|
|
484
|
+
|
|
485
|
+
**Admin centralization issues exist but are NOT user-exploitable.**
|