访问控制漏洞:权限错置与签名滥用
2026/8/24大约 2 分钟
Web3 区块链系列 · 阶段 6 · 安全攻防 · 第 35/57 篇 · 🚧 占位待学
上一篇:《重入攻击:从 The DAO 到今天的变体》
下一篇:《算术漏洞与预言机操纵》
学习大纲:《Web3 区块链学习总纲》
状态:待学习。 本文为占位文档:知识点清单、实验与验收标准已就绪,正文待按「先学习、先实验、再撰写」补全。
对应总纲单元:阶段 6 · 单元 6.3
一、本文要解决的问题
「谁都能调的 mint」「校验签名不查 nonce」——权限类漏洞常年霸榜。Solidity 没有登录与中间件,权限全部要自己写对。
二、知识点清单
- 权限模型:onlyOwner 的单点风险 → 角色制 RBAC(OZ AccessControl)
- 漏加修饰器的高发位置:initialize / mint / setXXX / 提款
- 中心化风险识别:owner 能 rug 的合约长什么样
- 签名滥用:重放攻击(缺 nonce / chainId / 域分离)
- 签名延展性(s 值翻转生成第二个合法签名)
- EIP-712 结构化签名(了解,为钱包交互埋钩子)
三、动手实验(学习时必须真跑)
- 给自己阶段 3~5 的合约做权限矩阵审查(函数 × 角色),列修复清单
- 复现一次签名重放:同一签名在另一条链 / 另一笔交易中再次生效
四、验收标准(全部通过才进入下一篇)
五、写作提示(补正文时遵守)
- 开篇问题驱动;结构走「是什么 → 为什么 → 怎么做 → 背景知识」
- 所有代码、命令、输出必须先在本机跑通再写入,不得杜撰
- 版本口径以总纲环境清单为准(以太坊 Fusaka / Solidity 0.8.36 / Foundry v1.0 / OpenZeppelin Contracts 5.x)
- 涉及版本敏感结论时标注出处与时间
本篇完成后,把文首导航块的「🚧 占位待学」去掉,并在总纲处打卡。