学习100篇 Web3 安全文章多签架构|让智能合约安全超越私钥风险"

admin 2026-11-01 02:02:34 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

学习100篇 Web3 安全文章 多签架构 | 让智能合约安全超越私钥风险

原创

trailofbits
trailofbits

Ice ThirdSpace

2026年10月29日 11:30
广东

去阅读

让智能合约安全超越私钥风险

原文翻译:https://blog.trailofbits.com/2025/06/25/maturing-your-smart-contracts-beyond-private-key-risk/


“找出所有漏洞!”

这是大多数协议在部署智能合约前保障安全时的口号,也是主流方法。团队大量投入审计、竞赛、模糊测试和形式化验证,试图找出每一个漏洞。

但如果我告诉你,去年加密货币遭黑客攻击的最大原因,并不是智能合约漏洞呢?

给你一点提示:

答案是:私钥失陷!

攻击者滥用密钥材料盗取资产,这类私钥攻击是范围狭窄的智能合约审计和竞赛可能遗漏的威胁。

协议对这类攻击有多脆弱,取决于其设计,尤其是访问控制的成熟度。

本文将展示如何利用多签、时间锁、最小权限原则,以及从设计上减少私钥使用需求的方法,构建能够承受私钥失陷的协议。

私钥失陷已成为最有效的攻击方式

根据 Chainalysis 的 2024 年报告,黑客攻击所盗取资金中,高达43.8%源于密钥失陷,超过其他任何一种已确认攻击类型的五倍。

私钥失陷是一个明确的例子,说明工程师在设计新的智能合约和协议时,必须考虑这类危险威胁。

设计决定风险。然而,过去很少有区块链协议认真地将经过身份验证的智能合约访问,视为重大风险来源。

区块链安全生态的运作方式进一步加剧了这种忽视:区块链原生安全公司的审计,很少将架构层面的访问控制问题列为正式发现;竞赛平台则更倾向于代码级漏洞,并不鼓励提交此类架构问题。

这种狭窄的关注范围,与其他行业成熟的安全实践形成对比。在其他行业,权限提升和访问控制设计等架构风险,通常是安全工作早期就会处理的基础问题。

在 Trail of Bits,我们通过“代码库成熟度评估”识别架构层面的访问控制问题。

但大多数区块链协议直到软件开发生命周期的最后阶段,才寻求外部意见和审查。到了这个时候,修复系统性访问控制问题的时间和机会已经十分有限。

因此,我们需要把这项讨论提前到开发生命周期的更早阶段。本文旨在弥补这一差距,帮助开发者从第一天起,就设计出更能抵御私钥失陷的系统。

案例:超额抵押借贷协议

我们以一个假想的超额抵押借贷协议为例,说明访问控制成熟度的不同层级。

对于不熟悉借贷协议的读者,以下功能通常需要一定程度的高权限访问控制:

1.上架或下架支持的资产,包括抵押资产和可借资产。

2.设置风险参数、利率参数和预言机来源。

3.收取协议费用或储备金。

4.在紧急情况下暂停或恢复协议功能。

5.升级合约。

然而,这些访问控制机制的具体设计,会显著改变整个系统面对私钥攻击时的脆弱程度。

Level 1:高度暴露——单个 EOA 控制者

这是最不成熟、最基础的访问控制形式。

在这种架构中,单个外部拥有账户(EOA)拥有借贷协议全部管理功能的最高权限。

根据这把密钥的使用频率,以及紧急情况下需要多快使用,它可能必须保存在联网电脑上的软件钱包中。至少可以说,这并不理想。

【图片说明:一把签名密钥控制超额抵押借贷协议的全部管理功能。】

Overcollateralized Lending Protocol 超额抵押借贷协议
Emergency Pause 紧急暂停
Setting/Adjusting Risk Params 设置/调整风险参数
Collecting Protocol fees 收取协议费用
Listing/Delisting Assets 上架/下架资产
Upgrading Contracts 升级合约
Signing Key 签名密钥

成熟度 Level 1:单点失效。一个 EOA 失陷,就意味着整个协议失陷。

这类系统的失陷风险极高,而且一旦失陷,后果会立即发生,并具有灾难性。

私钥一旦被攻陷,攻击者就可以升级合约、盗取抵押资产并摧毁协议。到那时,谁也别想靠它买上兰博基尼了。

如何提升至 Level 2

缓解这一单点失效最直接的方法,是改用多签钱包,要求多个密钥持有者共同批准操作。

需要注意:这能降低系统失陷的可能性,但如果足够多的私钥被攻陷,潜在损失范围并没有改变。

Level 2:基础缓解——中心化多签

认识到单个 EOA 控制者的巨大风险后,下一步是将管理权限转移给多签钱包,通常采用 M/N 门限的 Safe 钱包或类似机制。

【图片说明:一个由三名签名人组成的多签钱包,控制协议的管理功能。】

成熟度 Level 2:中心化多签模型。虽然需要多个签名人,但仍然只有一个控制点。

与 Level 1 相比,这是明确的进步,因为攻击者仅攻陷一名签名人的密钥,已不足以接管协议。

然而,如果足够多的签名人被攻陷、相互串通,或被诱导签署恶意交易,系统仍然面临重大风险:

执行速度:一旦获得第 M 个签名,恶意操作即可立即执行,安全团队没有响应时间。

单一控制点:虽然失效风险分散到了 M 把密钥上,但控制点仍然只有一个。多签作为整体,依然拥有协议的最高权限;即使是日常低风险交易,也需要使用与协议升级相同的签名权限。

Bybit、WazirX 和 Radiant Capital 等事件,都是高度保护的单一控制点遭到利用的案例。

在这些攻击中,尽管风险已经分散到多个失效点,攻击者仍然攻陷了那个关键控制点——多签。

如何提升至 Level 3

如果你觉得 Level 2 还不够,我完全理解。

从 Level 2 走向 Level 3,才是真正迈向成熟的开始。要达到下一层级,需要引入两类控制:时间锁和最小权限原则(PoLP)。

时间锁是一种合约,可以在操作获批与执行之间设置延迟,为审核和事件响应留出时间。

最小权限原则要求在逻辑上分离角色和职责,每个角色只获得完成自身功能所必需的最低权限。

这样,即使某个控制点失陷,损失也能被限制,攻击者不会因此获得其他无关关键功能的权限。

Level 3:增强控制——时间锁与角色分离

这一层级解决了 Level 2 的两个核心弱点:

用时间锁解决操作立即执行的问题。

用最小权限原则解决控制权集中的问题。

因此,安全成熟度得到显著提升。作者列举的 Level 3 协议包括 Aave、Compound Finance 和 Lido。

【图片说明:多个多签、时间锁和独立 guardian 角色组成基于角色的访问控制体系。】

成熟度 Level 3:时间锁与角色分离,为智能合约建立纵深防御。

如果获批操作能够立即上链执行,社区,尤其是安全团队,就没有时间响应。

时间锁合约允许引入一层额外控制:取消已经批准、但尚未执行的交易。

当获批交易仍在时间锁中等待时,团队可以使用 Tenderly 等链下工具进行监控,并与预期批准的操作进行比对。

如果一项非预期请求获得签名,时间锁就能给事件响应团队留出时间,审查、取消该操作,并启动事件响应流程。

对时间锁进行正确的监控和告警至关重要。如果没有监控,这项控制就失去了价值。作者以 Beanstalk 事件为例,认为其中未被监控的一天时间锁,导致了一次本可避免的攻击。

按照最小权限原则,我们至少可以划分出四个角色,将不同风险等级的职责分开:

角色 职责与控制要求
核心系统角色 拥有最高权限,采用较高的多签门限和较长的时间锁。职责仅限于升级合约,使用频率较低,减少因其他日常操作而频繁使用高权限多签的风险
运营角色 负责日常协议运营和配置,使用中等时长的时间锁和中等多签门限,匹配其相对较低的失陷影响
暂停 guardian 紧急情况下暂停协议,不应受时间锁限制,签名门限应相对较低,以便快速响应
取消 guardian 取消时间锁中已批准但尚未执行的交易。安全团队可用它取消未经业务授权的操作;根据响应流程,可以使用低门限多签或 EOA

与 Level 2 相比,Level 3 的架构风险大幅降低。

我们从一个控制点转变为四个控制点,并通过最小权限原则降低单个控制点失陷后的影响。此时,即使多签失陷,事件响应团队也有机会阻止攻击造成损失。

不过,风险依然存在:

复杂性风险:多个角色、多签和时间锁增加了系统复杂度。如果实现不谨慎、测试不充分,就可能引入新的漏洞或错误配置。

过度依赖暂停:暂停 guardian 虽然是必要的应急机制,但不是万能解法。攻击者越来越成熟,常通过私有交易池提交攻击,避免被提前发现。随着攻击手段发展,暂停机制降低损失的效果可能减弱。

如何提升至 Level 4

虽然多数协议通常满足于 Level 3,但复杂性风险,以及紧急暂停有效性可能下降的问题,促使我们考虑更高层级的访问控制成熟度。

Level 4 是作者设想的成熟协议终极形态:通过设计,彻底移除执行强大管理操作的需求,使协议真正去中心化。

Level 4:终极形态——彻底不可变与用户自主权

Level 4 代表访问控制设计成熟度的最高层级:彻底消除管理操作的必要性。

这是协议对去中心化和信任最小化最彻底的承诺,其好处是从根本上将访问控制风险移出协议的威胁模型。

【图片说明:通过工厂合约创建用户部署的借贷池,每个池采用不可变配置。】

成熟度 Level 4:系统不可变,控制点极少,甚至不存在。

实现 Level 4,需要采用与前几个层级截然不同的设计方式。多数以 Level 4 为目标的协议,也并不是“纯粹的 Level 4”。

Uniswap 和 Liquity 是努力接近这一目标的代表:它们的正常运行不依赖管理员持续管理,但仍保留极其有限的管理权限,例如费用或激励分配。

不要将 Level 4 理念与“把控制权交给 DAO 或其他组织”混为一谈。Level 4 协议的正常运行,不需要任何形式的管理控制。

对许多使用场景而言,从 Level 3 转向 Level 4,几乎难以实现。

以中心化交易所冷钱包为例:除非整个交易所都转变为去中心化协议,否则钱包就必须保留某种管理访问能力,才能向用户转移资金。

对于完全链上的协议,Level 4 虽然可能实现,但依然十分困难。

以本文的超额抵押借贷系统为例,需要从根本上重构设计:对于每个原本依赖管理员的组件,都必须设计一种完全不需要管理的替代方案。

1.可升级性

在 Level 3 及以下层级中,智能合约可以通过升级修复漏洞或增加功能。

在 Level 4 中,合约完全不可变。增加新功能时,必须部署一整套新合约,由用户自行将资金迁移过去。

由于无法通过升级修复安全漏洞,合约必须简单、精炼,并经过极其充分的测试、验证和审查。

2.资产上架与下架

大多数超额抵押借贷协议将资产上架与下架设为管理操作,因为如果允许任何人添加抵押资产,恶意代币就可能被用于盗取其他抵押资金。

要实现 Level 4,借贷协议可以支持彼此独立的市场部署。

在这种模式下,要增加一种新资产,就必须部署并配置一个完全独立的协议实例,明确绑定该资产或资产组合。

用户自行选择与该实例交互,还是使用支持其他资产的另一个实例。

3.风险参数

风险参数通常也由管理员配置。

在 Level 4 借贷协议中,这些参数要么在新资产市场部署时永久确定,要么被永久设定为遵循某种算法规则。

由于这些设置无法随意更改,必须通过严格建模、测试和验证,充分掌握它们的行为。

设计 Level 4 协议,需要接受重大权衡:

1.无法进行紧急干预。

2.系统一旦部署,就缺乏灵活性。

3.前期需要投入大量工作,验证设计的安全正确性和经济合理性。

尽管如此,作者认为,这种设计范式可以从根本上消除管理访问控制风险。其中许多设计模式,也能改善系统其他方面的安全性。

Level 4 体现了一种纯粹的去中心化赛博朋克理念:相比管理灵活性,更优先考虑不可变性和用户自主权。

为韧性而设计,而不只是事后响应

从单个 EOA 控制者的简单粗放设计,到 Level 4 激进的不可变设计,访问控制成熟度的演进揭示了一点:

协议的设计方式,从根本上决定了它面对私钥失陷时的脆弱程度。

2024 年,被盗资金中有 43.8% 源于私钥失陷,因此不能再忽视架构层面的访问控制。

传统漏洞挖掘仍然必不可少,但这类设计决策必须在开发早期作出,才能充分发挥作用。

可以采取以下行动:

根据成熟度框架评估协议。诚实判断当前所处层级;多数项目从 Level 1 或 Level 2 起步。

为最高风险的管理功能引入时间锁。即使只有这一项改变,也能显著改善安全状况。同时必须充分监控,确保非预期交易进入队列时能够及时响应。

梳理协议中的高权限函数。按照最小权限原则,将它们分配到逻辑清晰的不同角色。

考虑哪些组件适合采用不可变设计。即使整体系统仍需要管理权限,部分组件也可能从 Level 4 的设计模式中受益。

Trail of Bits 倡导这种整体性的安全视角。因此,我们提供面向开发生命周期早期项目的设计审查和设计阶段咨询。

这些服务让团队能够尽早获得专业建议,主动处理基础架构问题,并与开发后期侧重实现漏洞的传统代码审计形成互补。

最终,构建安全的去中心化系统,不仅需要寻找漏洞,还需要从第一天起,就将运营韧性纳入设计。

理解成熟度模型,并有意识地选择能够减少信任、限制失陷影响的设计模式,才能构建出既有创新性,又能抵御去中心化世界不断演变威胁的协议。

学习100篇 Web3 安全文章多签架构|让智能合约安全超越私钥风险" 网络安全文章

学习100篇 Web3 安全文章多签架构|让智能合约安全超越私钥风险"

本文提出智能合约访问控制成熟度模型,分四级应对私钥失陷风险。2024年黑客盗取资金中43.8%源于密钥失陷。从单EOA控制、中心化多签、时间锁与角色分离,到彻底不可变设计,逐级提升安全性。建议评估协议层级、引入时间锁并监控、按最小权限原则划分角色,从设计早期构建运营韧性。
Backuply存在SQL注入漏洞(CVE-2026-93953)" 网络安全文章

Backuply存在SQL注入漏洞(CVE-2026-93953)"

WordPress插件Backuply存在SQL注入漏洞(CVE-2026-93953),影响1.5.8及之前所有版本。攻击者可利用BiographicalInfo字段通过恢复操作触发二阶SQL注入,以完整数据库权限执行任意SQL,将默认用户角色改为管理员并启用注册,导致权限提升和站点接管。漏洞评级高危,已在野利用,官方已发布修复补丁,建议用户立即升级至最新版本。
WPConsent<=1.1.9-通过SimpleHTMLDOMParser噪声键恢复(mXSS)经由评论内容的未授权存储型跨站脚本漏洞(CVE-2026-97640)" 网络安全文章

WPConsent<=1.1.9-通过SimpleHTMLDOMParser噪声键恢复(mXSS)经由评论内容的未授权存储型跨站脚本漏洞(CVE-2026-97640)"

WPConsent插件1.1.9及之前版本存在存储型XSS漏洞,编号CVE-2026-97640,经SimpleHTMLDOMParser噪声键恢复机制触发,攻击者可注入任意脚本,需启用ScriptBlocking且依赖两条协同评论。处置优先级高,官方已发布补丁,建议立即升级,临时方案包括关闭ScriptBlocking、WAF拦截特征串及移除调试参数。
评论:0   参与:  0