智能合约安全实验室
三件工具是连起来用的:在漏洞库里弄懂「为什么这样写会出事」→ 用扫描器在手上的源码里找同类写法 → 按清单把剩下的、工具查不出的部分逐项过一遍。单独用任何一个都会留下盲区,合起来才是一套完整的检查动作。
漏洞条目 10审计检查项 33扫描规则 18其中严重级漏洞 6
常见漏洞库
10 类每一类都是三段式:脆弱代码 → 攻击链复现 → 修复版本
按「利用后果」而不是「出现频率」排序:6 类会造成资金全部损失。其中有 3 类在源码语法上完全正常,静态扫描一条也抓不到。
只讲原理的漏洞文章读完了还是不会写安全代码,只给一段坏代码又不知道该怎么改——两段放一起才形成闭环。
打开 →审计检查清单
33 项分 10 组,每一项都标注静态扫描的覆盖程度
14 项致命、6 项工具可自动检查、21 项工具完全查不出。勾选状态只存在你的浏览器里,勾完可以导出成 Markdown 报告。
清单最容易变成摆设:几十个勾选框全勾完、产出一份漂亮报告、然后什么都没查出来。所以这里把「工具查不出来的项」单独标出来。
打开 →Rug Pull 扫描器
18 条规则粘贴源码,检查 mint 权限 / 黑名单 / 税率可改 / 蜜罐条件等危险写法
每条命中都给源码证据(文件 + 行号 + 代码片段)与「这条规则看不到什么」的说明;未命中的规则也全部列出来,让你知道这次到底排除了什么。
命中了不等于有恶意,没命中也不等于安全。真正掏空协议的逻辑漏洞在这套扫描里是一条都看不见的。
打开 →这个板块的立场:不给你绿灯
安全工具最常见的问题是「给人虚假的安心感」:扫一遍没报错,用户就以为没问题, 于是把更多钱投进去。所以这里的每个结论都刻意写成线索而不是定性:
- 扫描器命中一条规则,说的是「出现了这种写法」,而不是「这个项目要跑路」。 正规项目也会命中——有增发权限、可升级、用了内联汇编,全都正常。
- 扫描器没命中任何规则,说的是「没出现有共识的危险写法」, 而不是「安全」。历史上损失最大的几类漏洞,代码语法完全正常。
- 审计清单全勾完,说的是「这些该问的问题都问过了」, 而不是「这个合约没问题」。清单本身不是合规文件。
这些工具的价值在于把该看的点一个不漏地铺开,而不是替你做判断。
动手试一试
下面 1 个练习在浏览器里真跑:输入是常量与参数,不需要连钱包、不发交易、不读你的账户。数字自己改,结论自己验。
安全 · 这一段要让你看懂:授权(approve)是链上最常见的风险来源:它不转账,只是把动用你资产的权限交给别人。学会看 calldata,你就能在签名前判断「这一笔会打开多大的权限」。 先看这一章 →
▶
试一试 · 手动解码一段 approve,看清你在授权什么
可直接改代码 · 在浏览器沙箱里真跑playground.jsJavaScript
运行环境:iframe 沙箱(无 cookie 权限)。只支持纯 JS 片段,不支持 import / require;需要模块请用下方的完整示例复制到项目里。
检查点(跑完后逐条核对)
- 识别出选择器 0x095ea7b3 对应 approve
- 额度为全 f 时判定为「无限授权」
- 结论:授权不是转账,但风险更大 —— 授权前先看额度