ARTICLE DETAIL

资讯详情

深耕网站SEO优化与搜索引擎排名提升的一线实战洞察。

一次溢出让代币几秒归零?深度复盘 awesome-buggy-erc20-tokens 收录的 BEC 与 SMT 崩盘案例

一次溢出让代币几秒归零?深度复盘 awesome-buggy-erc20-tokens 收录的 BEC 与 SMT 崩盘案例 一次溢出让代币几秒归零深度复盘 awesome-buggy-erc20-tokens 收录的 BEC 与 SMT 崩盘案例【免费下载链接】awesome-buggy-erc20-tokensA Collection of Vulnerabilities in ERC20 Smart Contracts With Tokens Affected项目地址: https://gitcode.com/gh_mirrors/aw/awesome-buggy-erc20-tokensawesome-buggy-erc20-tokens 是一个专门收录以太坊 ERC20 代币智能合约漏洞的开源项目汇总了 29 类已知问题、4400 多份问题合约及其受影响代币是新手理解 ERC20 代币安全与整数溢出漏洞的完整参考清单。本文将以 2018 年真实崩盘的 BEC美链与 SMTSmartMesh两大事件为主线深度复盘一次整数溢出如何几秒内让代币归零。从上图可以看到2018 年前后以太坊主网上的 ERC20 代币合约进入爆发式创建期每天新增数百份合约。代码抄来抄去、参考模板不严谨正是漏洞大面积蔓延的土壤。先搞懂整数溢出为什么能让代币凭空增发普通编程语言以及 Solidity 0.8 之前的版本中无符号整数做加减乘除时不会报错而是环形回绕超出最大值后从 0 重新开始低于 0 后绕回最大值附近。用通俗的话说校验被绕过合约想检查余额是否足够但加法溢出后10 一个天文数字反而变成了一个很小的数检查形同虚设凭空印币绕过上限后攻击者可以给自己转出、增发远超总发行量的代币砸盘归零攻击者把印出来的天量代币瞬间砸向交易所价格几秒内趋近于 0。这两个环节缺一不可先有溢出漏洞再有交易所流通性才能完成一次完整的崩盘。BEC美链事件复盘batchTransfer 批量转账溢出2018 年 4 月 22 日美链 BEC 被黑客利用其合约中batchTransfer()批量转账函数的溢出漏洞攻击函数先计算接收人数 × 单笔金额作为总额去校验余额但攻击者构造超大参数使乘法溢出校验值变成一个很小的数顺利通过随后实际循环转账却按单笔金额累加——结果一次性转出了远超攻击者余额的天量代币并被瞬间抛售BEC 价格几乎归零。该项目将此问题编号为A1. batchTransfer-overflowCVE-2018-10299并扫描出至少 10 份存在同样问题的合约。受影响代币地址记录在 csv/batchTransfer-overflow.o.csv 中例如代币合约地址总供应量BEC0xC5d1...793D7,000,000,000AMMBR (AMR)0x96c8...5178e5eB 等2,000,000,000修复思路只有一条所有运算改用 SafeMath 之类带边界检查的安全数学库溢出即回滚交易。SMTSmartMesh事件复盘代理转账函数连环漏洞仅仅 3 天后2018 年 4 月 25 日SMT 爆出性质几乎相同的整数溢出漏洞黑客制造并抛售了天文数字规模的代币SMT 价格同样崩盘。值得注意的是SMT 的合约0x55F9...e081实际上同时命中了该项目收录的三类问题堪称漏洞集合体A3. verify-invalid-by-overflowtransferProxy()中余额是否足够支付手续费加转账额的校验因加法溢出可被一个极大转账值绕过A12. transferProxy-keccak256签名验证用ecrecover()恢复地址当参数传错时返回 0x0 地址而攻击者只需把转出地址也填成 0x0 即可通过校验——任何人可代理转出该地址余额A13. approveProxy-keccak256同样的 0x0 绕过手法可让任何人拿到 0x0 地址的转账授权。这三份问题地址分别记录在 csv/verify-invalid-by-overflow.o.csv、csv/transferProxy-keccak256.o.csv、csv/approveProxy-keccak256.o.csv。BEC 与 SMT 相隔 3 天接连崩盘说明这不是孤立事故而是同一批复制粘贴式合约代码的批量风险暴露。项目里还有哪些同类风险可自查awesome-buggy-erc20-tokens 将问题分为三大类共 29 种完整说明见 ERC20_token_issue_list_CN.mdA 类·代码实现漏洞25 种除溢出系A1~A9外还有校验逻辑写反、构造函数命名错误导致任何人可重置 owner、approve增加余额校验导致 DEX 无法工作、伪造烧币事件等B 类·不规范问题7 种如transfer/approve无返回值、缺少name/symbol/decimals接口、遗漏Approval事件会直接造成 Solidity 0.4.22 之后的 DApp 兼容性问题C 类·权限管理问题1 种如中心账户可任意划转他人余额的后门设计。项目提供的核心数据文件方便不同角色各取所需bad_tokens.all.csv全部问题代币总表4400 条记录含漏洞类别、代币名、交易所、供应量bad_tokens.top.csv市值排名靠前的问题代币投资者可优先排查raw/、csv/、json/ 三个目录按漏洞类型存放受影响合约地址的原始/CSV/JSON 三种格式由 gen_list_from_raw.py 脚本自动生成issues.json漏洞代号A1~C1与名称的映射表。给新手投资者的 3 条避坑建议查表先行买入任何 ERC20 代币前用合约地址在bad_tokens.all.csv中搜索命中任何 A 类漏洞都意味着归零风险看漏洞类型溢出系A1~A9与权限系A14、A17、C1属高危B 类不规范问题虽不直接丢币但可能导致 DEX 交易失败、显示错乱警惕同款代码一个代币爆雷后同模板部署的其他合约大概率同病——这正是该项目持续更新各漏洞地址清单的意义所在。智能合约一次部署、永久运行而 BEC 与 SMT 用真实的归零曲线证明了一行缺失的溢出检查代价是整个社区的信任。希望这份漏洞清单能帮你把风险挡在下单之前。【免费下载链接】awesome-buggy-erc20-tokensA Collection of Vulnerabilities in ERC20 Smart Contracts With Tokens Affected项目地址: https://gitcode.com/gh_mirrors/aw/awesome-buggy-erc20-tokens创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表