awesome-buggy-erc20-tokens 完全入门指南:一站看懂 32 类 ERC20 合约漏洞与上千个问题代币
awesome-buggy-erc20-tokens 完全入门指南:一站看懂 32 类 ERC20 合约漏洞与上千个问题代币
【免费下载链接】awesome-buggy-erc20-tokensA Collection of Vulnerabilities in ERC20 Smart Contracts With Tokens Affected项目地址: https://gitcode.com/gh_mirrors/aw/awesome-buggy-erc20-tokens
本文带你快速入门awesome-buggy-erc20-tokens:一份收集32 类 ERC20 智能合约漏洞与上千个问题代币的安全清单,适合零基础新手、合约开发者和代币投资者阅读。
上图是以太坊主网 ERC20 合约每日创建数量的趋势:2018 年 3 月前后每天新建合约峰值超过 600 个。合约量越大,出错的概率就越高——这正是本项目存在的意义。
为什么需要这份 ERC20 漏洞清单?
ERC20 是以太坊上最主流的代币标准,但大量代币合约在开发时复制、抄改他人代码,引入了真实漏洞或不规范实现,已多次酿成惨案:
- 2018 年 4 月,美链(BEC)因整数溢出被黑客打出天量代币砸盘,价格几乎归零;
- 2018 年 4 月,SMT 爆出同类溢出漏洞,代币崩盘;
- 2018 年 5 月,EDU 合约逻辑缺陷使用户余额可被任意转出,同类问题波及至少 81 个合约;
- 2018 年 6 月,一批 ERC20 整数溢出漏洞(CVE-2018-11687 等)被披露,扫描发现800 多个合约受影响。
这些案例在 README_CN.md 中均有详细复盘。
32 类 ERC20 合约漏洞速览表
全部漏洞按A 代码漏洞 / B 不规范 / C 权限管理三大类编号(编号映射见 issues.json):
A 类:代码实现漏洞(A1–A25)
| 编号 | 漏洞名称 | 一句话解释 |
|---|---|---|
| A1 | batchTransfer-overflow | 批量转账金额乘法溢出,余额校验被绕过 |
| A2 | totalsupply-overflow | 总供应量计算溢出,数值"绕圈"变小 |
| A3 | verify-invalid-by-overflow | 溢出使校验条件恒真,检查形同虚设 |
| A4 | owner-control-sell-price-for-overflow | 溢出被利用,Owner 可任意操纵卖价 |
| A5 | owner-overweight-token-by-overflow | 溢出导致 Owner 代币占比失控 |
| A6 | owner-decrease-balance-by-mint-by-overflow | 增发时溢出,反而能"扣减"他人余额 |
| A7 | excess-allocation-by-overflow | 溢出导致超额分配代币 |
| A8 | excess-mint-token-by-overflow | 溢出可无限增发代币(SMT 同款) |
| A9 | excess-buy-token-by-overflow | 溢出导致低价多买代币 |
| A10 | verify-reverse-in-transferFrom | transferFrom 校验条件写反,任何人都能转你的币 |
| A11 | pauseTransfer-anyone | 任何人可调用暂停转账 |
| A12 | transferProxy-keccak256 | 转账代理签名使用弱哈希 |
| A13 | approveProxy-keccak256 | 授权代理签名使用弱哈希 |
| A14 | constructor-case-insensitive | 构造函数大小写不规范,可能被外部调用 |
| A15 | custom-fallback-bypass-ds-auth | 自定义 fallback 绕过 DS 鉴权 |
| A16 | custom-call-abuse | 自定义 call 函数被滥用执行任意操作 |
| A17 | setowner-anyone | 任何人可把合约 Owner 改成自己 |
| A18 | allowAnyone | "任何人"级别的放行漏洞 |
| A19 | approve-with-balance-verify | approve 冗余余额校验,破坏 DEX 协议 |
| A20 | re-approve | 可重复授权覆盖,产生授权风险 |
| A21 | check-effect-inconsistency | 校验逻辑与实际效果不一致 |
| A22 | constructor-mistyping | 构造函数笔误,一个字母导致功能错乱 |
| A23 | fake-burn | "假销毁":余额不清零,代币反复流通 |
| A24 | getToken-anyone | 任何人可调用 getToken 取走代币 |
| A25 | constructor-naming-error | 构造函数命名错误,未真正生效 |
B 类:不规范问题(B1–B7)
| 编号 | 漏洞名称 | 一句话解释 |
|---|---|---|
| B1 | transfer-no-return | transfer 无返回值,编译器 0.4.22 后与 DEX 不兼容 |
| B2 | approve-no-return | approve 无返回值,同样引发兼容性问题 |
| B3 | transferFrom-no-return | transferFrom 无返回值 |
| B4 | no-decimals | 缺少 decimals() 接口 |
| B5 | no-name | 缺少 name() 接口 |
| B6 | no-symbol | 缺少 symbol() 接口 |
| B7 | no-Approval | 缺少 Approval 事件,DApp 无法监听授权 |
C 类:权限管理问题(C1)
| 编号 | 漏洞名称 | 一句话解释 |
|---|---|---|
| C1 | centralAccount-transfer-anyone | 中央账户可转移任何人的代币余额 |
完整的漏洞原理讲解、错误示例与推荐写法,都在 ERC20_token_issue_list_CN.md 中逐条展开,每类漏洞还附有受影响的原始地址列表(如 raw/fake-burn.txt)。
上千个问题代币数据文件怎么用?
项目根目录的四个汇总数据文件是查询入口:
- 全量总表:bad_tokens.all.csv / bad_tokens.all.json——收录4400+ 条问题代币记录,含合约地址、问题编号(如
[A2][B1][B7]表示一个合约同时命中多类问题)、代币名称、上所交易所、总量等字段; - 头部代币榜:bad_tokens.top.csv / bad_tokens.top.json——市值排名靠前的风险代币,投资者可优先核查;
- 基础字典:token_dict.json 与 token_detail_dict.json——收录 CoinMarketCap 上榜代币的地址与详情。
30 秒上手查询:在 CSV 中搜你要核查的合约地址,category列的[A2][B1]之类标签直接对照上表即可知道它命中了哪些风险。
数据是如何生成的:脚本与目录结构
整个项目是一个"原始数据 → 脚本 → 汇总报表"的小工具链:
- raw/ 目录:每类漏洞一个文本文件,逐行存放受影响的合约地址;
- gen_list_from_raw.py:从 raw 目录生成各类别
csv/*.o.csv、json/*.o.json及根目录的 bad_tokens 汇总文件(依赖web3库); - gen_token_detail_dict.py:生成代币详细信息字典;
- issues.json:漏洞名称 ↔ 编号(A1–C1)的映射表。
也就是说,当你发现新的漏洞类别时,只需补充 raw 数据与 issues 映射,跑一遍脚本即可全库更新,这也是项目长期可持续维护的原因。
新手避坑清单:开发与投资的 6 条安全建议
合约开发者:
- 所有算术运算使用 SafeMath 等安全库,杜绝整数溢出(A 类漏洞的重灾区);
- 标准函数保持规范返回值与事件:
transfer/approve/transferFrom返回bool,触发Transfer与Approval事件; - 提供
name() / symbol() / decimals()查询接口,命名大小写与规范一致; - 收紧 Owner 权限:暂停转账、修改 Owner、增发、改价等操作必须严格鉴权(对应 A11/A17/C1);
- 不要盲目复制网上模板代码——本项目中绝大多数漏洞源于"抄改他人代码"。
代币投资者:
- 买入前用 bad_tokens.all.csv 查询合约地址,头部风险代币直接看 bad_tokens.top.csv;发现列表遗漏欢迎提交更正。
写在最后:持续更新的 ERC20 安全资源
awesome-buggy-erc20-tokens 是一份持续维护的安全资源:漏洞清单随新披露滚动更新(更新记录见 ERC20_token_issue_list_CN.md 顶部),数据文件由脚本保证一致性。
把它当作你的"避雷手册"——开发前查一遍,投资前查一遍,能帮你省下无数次踩坑的成本。🛡️
【免费下载链接】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),仅供参考
