d doeda-zogt.xyz
doeda-zogt.xyz · 话题 · Solidity安全图文教程

Solidity安全图文教程:把抽象漏洞模式画成可记忆的脑图

本文用六张脑图把Solidity核心安全漏洞模式可视化呈现,包括重入、整数溢出、签名重放、价格预言机操纵,适合[[Binance]]生态开发者快速复习。

1165 关注 · 23 2026-05-24T17:19:21.421498+00:00

回答共 1 条

默认排序 ▾
d
doeda-zogt.xyz 主编
Solidity安全图文教程 领域深度内容
优秀回答者
Solidity安全图文教程 - Solidity安全图文教程:把抽象漏洞模式画成可记忆的脑图

Solidity安全图文教程:把抽象漏洞模式画成可记忆的脑图

光读文字描述很难真正记住漏洞模式,把它们画成图就能在脑里形成长期记忆。本文用六张脑图把 Solidity 安全的核心攻击模式可视化呈现,帮助你建立一套结构化的安全直觉。

一、重入攻击脑图

第一张图三个方块:受害合约、攻击合约、ETH 余额。流程箭头:攻击合约 call withdraw → 受害合约转账 → 攻击合约的 receive 再次 call withdraw → 受害合约还没扣账,继续转账。

画完这张图,所有重入变种(同函数、跨函数、跨合约、只读)都能一眼识别。在 Binance Smart Chain 上多起千万美元事件,事后看就是这张图。

二、整数溢出脑图

第二张图用一根数轴表示 uint256 的取值范围。0 到 2^256-1 是一个环,溢出意味着数轴绕回起点。把转账金额、利率计算、份额转换在数轴上画出来,溢出风险一目了然。

0.8 之后默认 checked 算术,但 unchecked block 仍然是常见埋雷点。涉及 USDT 余额变更的代码,每一处算术都要在脑图上核对一次。

三、签名重放脑图

第三张图描绘一份签名在三个维度的传播:同合约(不同 nonce)、跨合约(同链不同地址)、跨链(不同 chainId)。每个维度需要不同的防护手段。

这张图能让你瞬间发现协议是否漏掉某一层防护:少了 nonce 就有同合约重放、少了 domainSeparator 就有跨合约重放、没把 chainId 编码就有跨链重放。

四、价格预言机脑图

第四张图把「现价」「TWAP」「Chainlink 喂价」「闪电贷攻击者」放在同一坐标系。攻击者在 t 时刻借入巨量 ETH,把 DEX 现价拉到极端,然后在同一笔交易内对受害协议发起借贷或清算。

这张图让你立刻看清「直接读取现价」的风险,并理解为什么主流协议都使用 TWAP 或 Chainlink。每次设计新协议时都要画一遍。

五、Proxy 升级脑图

第五张图画 admin、proxy、implementation 三个方块,再用粗箭头表示 delegatecall 流。任何破坏 storage 布局的升级都意味着「错位 storage」,可能导致用户份额错算、admin 权限丢失等灾难。

BTC 跨链桥的多起重大事件都因 proxy 升级 storage collision 引发。把这张图打印贴在升级值班室墙上,能避免不少粗心错误。

六、治理攻击脑图

第六张图描绘提案 → 投票 → 时间锁 → 执行的流水线。攻击者通过闪电贷买入代币 → 立即投票 → 立刻通过 → 立即执行。如果没有时间锁,攻击在一笔交易内就完成了。

防护方法:时间锁、vote-locking、提案最低投票期、紧急委员会否决权。每一道关卡都对应图上一个节点。

结语

这六张图不需要画得多漂亮,重要的是把它们刻进大脑。下次写代码或读代码时,主动调出对应的图比对,你的安全直觉会快速逼近顶尖审计师水平。

116 赞同
发布于 2026-05-24T06:12:22.901386+00:00 · 更新于 2026-05-24T17:19:21.421498+00:00