当前位置: 首页 > news >正文

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)

编号漏洞名称一句话解释
A1batchTransfer-overflow批量转账金额乘法溢出,余额校验被绕过
A2totalsupply-overflow总供应量计算溢出,数值"绕圈"变小
A3verify-invalid-by-overflow溢出使校验条件恒真,检查形同虚设
A4owner-control-sell-price-for-overflow溢出被利用,Owner 可任意操纵卖价
A5owner-overweight-token-by-overflow溢出导致 Owner 代币占比失控
A6owner-decrease-balance-by-mint-by-overflow增发时溢出,反而能"扣减"他人余额
A7excess-allocation-by-overflow溢出导致超额分配代币
A8excess-mint-token-by-overflow溢出可无限增发代币(SMT 同款)
A9excess-buy-token-by-overflow溢出导致低价多买代币
A10verify-reverse-in-transferFromtransferFrom 校验条件写反,任何人都能转你的币
A11pauseTransfer-anyone任何人可调用暂停转账
A12transferProxy-keccak256转账代理签名使用弱哈希
A13approveProxy-keccak256授权代理签名使用弱哈希
A14constructor-case-insensitive构造函数大小写不规范,可能被外部调用
A15custom-fallback-bypass-ds-auth自定义 fallback 绕过 DS 鉴权
A16custom-call-abuse自定义 call 函数被滥用执行任意操作
A17setowner-anyone任何人可把合约 Owner 改成自己
A18allowAnyone"任何人"级别的放行漏洞
A19approve-with-balance-verifyapprove 冗余余额校验,破坏 DEX 协议
A20re-approve可重复授权覆盖,产生授权风险
A21check-effect-inconsistency校验逻辑与实际效果不一致
A22constructor-mistyping构造函数笔误,一个字母导致功能错乱
A23fake-burn"假销毁":余额不清零,代币反复流通
A24getToken-anyone任何人可调用 getToken 取走代币
A25constructor-naming-error构造函数命名错误,未真正生效

B 类:不规范问题(B1–B7)

编号漏洞名称一句话解释
B1transfer-no-returntransfer 无返回值,编译器 0.4.22 后与 DEX 不兼容
B2approve-no-returnapprove 无返回值,同样引发兼容性问题
B3transferFrom-no-returntransferFrom 无返回值
B4no-decimals缺少 decimals() 接口
B5no-name缺少 name() 接口
B6no-symbol缺少 symbol() 接口
B7no-Approval缺少 Approval 事件,DApp 无法监听授权

C 类:权限管理问题(C1)

编号漏洞名称一句话解释
C1centralAccount-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.csvjson/*.o.json及根目录的 bad_tokens 汇总文件(依赖web3库);
  • gen_token_detail_dict.py:生成代币详细信息字典;
  • issues.json:漏洞名称 ↔ 编号(A1–C1)的映射表。

也就是说,当你发现新的漏洞类别时,只需补充 raw 数据与 issues 映射,跑一遍脚本即可全库更新,这也是项目长期可持续维护的原因。

新手避坑清单:开发与投资的 6 条安全建议

合约开发者:

  1. 所有算术运算使用 SafeMath 等安全库,杜绝整数溢出(A 类漏洞的重灾区);
  2. 标准函数保持规范返回值与事件:transfer/approve/transferFrom返回bool,触发TransferApproval事件;
  3. 提供name() / symbol() / decimals()查询接口,命名大小写与规范一致;
  4. 收紧 Owner 权限:暂停转账、修改 Owner、增发、改价等操作必须严格鉴权(对应 A11/A17/C1);
  5. 不要盲目复制网上模板代码——本项目中绝大多数漏洞源于"抄改他人代码"。

代币投资者:

  1. 买入前用 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),仅供参考

http://www.cnnetsun.cn/news/4197665.html

相关文章:

  • SwiftOpenAI Response API实战:比Chat Completions更强大的新一代API
  • 暗黑破坏神2角色存档编辑器 Diablo Edit2:免费保姆级教程,从编译到改档全流程
  • 法律AI应用实战:构建安全可靠的合同审查辅助系统
  • nvim-lspconfig Vue 语言服务器完整配置指南:vue_ls 与 vtsls 双服务器 3 场景实战
  • Hedge-Bench:金融智能体的硬核推理基准与实战构建指南
  • go-patterns责任链与中介者模式实战:解耦请求处理与组件通信的2个技巧
  • Lumi原理剖析:Python内省机制如何让函数自动映射为API参数?
  • Chatbox 启动教程:3 分钟搞定 npm 配置与桌面端运行
  • 3步搞定手柄键盘映射:AntiMicroX快速上手指南
  • 从树叶分类到特征工程:经典数学建模案例中的图像识别实战
  • SpaceFM|给 Linux 桌面装上一套多面板文件引擎
  • Arnis 实操教程:把真实城市搬进 Minecraft
  • Llama 3 权重下载完整指南:官方脚本与 Hugging Face 双渠道实操
  • QModMaster:免费完整的Modbus调试工具,新手5分钟连上第一台设备
  • MetricFu源码解析:Generator模板方法模式如何优雅驱动12种指标生成
  • Prism Launcher 离线启动器:十分钟完成 Minecraft 免登录离线启动配置
  • 选对一键生成论文工具告别焦虑夜!高赞工具实测 + 选择避坑
  • C++模板默认参数:提升库易用性与API设计的核心技术
  • 毕业论文选题毫无头绪,有哪些 好用的AI论文平台推荐?
  • 随机信号参数建模实战:AR/MA/ARMA模型原理、算法与应用
  • 群晖第三方包安全设计剖析:homebridge-syno-spk受限Shell与独立用户权限机制详解
  • 深入PyWebCopy配置系统:ConfigHandler与get_config的10个关键参数详解
  • IDM 激活脚本使用指南:免费激活或永久冻结 30 天试用,三步跑通
  • 3步实现《第五人格》免扫码登录:idv-login 完整使用指南
  • 模糊综合评价方法:从原理到实战,处理模糊决策的数学工具
  • DeepSeek多模态视觉理解模型上线
  • 从数学建模到工业优化:数据驱动下的催化剂组合与反应条件智能寻优
  • 基于改进MOEA/D的双目标模糊柔性作业车间调度优化
  • 计算机毕业设计之会议预约系统设计与实现
  • AI Agent 面试题 362:如何设计Agent的工具依赖管理和冲突解决?