2024-10-20
一文概览DeFi生态安全全景
一文概览DeFi生态安全全景
原文作者: BlockSec
🔗 https://app.blocksec.com/explorer/security-incidents
安全对于 DeFi 协议发展至关重要。部分协议管理着数十亿美元的用户资产,安全事件会给用户带来重大损失。虽然在某些情况下,被盗资金可以(部分)追回(例如 Euler 攻击事件),但我们不能将希望完全寄托于此。每一次的攻击事件,都在削弱用户对 DeFi 的信心。
尽管业界已提出许多增强安全性的措施,但 DeFi 安全仍有很大的提升空间。从积极的一面来看,代码审计已成为社区共识,大多数协议在上线前都会进行审计,这有助于降低由智能合约漏洞导致的攻击风险。然而,单靠代码审计远远不足以解决所有安全问题。代码审计无法防止由合约升级、配置更改和外部依赖引入漏洞所导致的攻击。鉴于这些局限性,一些协议开始采用更加主动的解决方案,如运营监控和攻击检测系统。
在本文中,我们将纵览协议从上线前(Pre-Launch)、上线运营(Post-Launch)、到攻击响应(Attack Response)阶段可采取的安全举措,来了解 DeFi 安全全景。我们将详细介绍每类安全举措及其主要的供应商/产品,以及它们的优缺点。希望本文能帮助社区更好地了解 DeFi 安全现状,为创新的安全解决方案带来启发。
协议上线前可采取的安全措施,包括代码审计、形式化验证和安全测试。
代码审计服务&竞赛
代码审计是社区公认的保障协议安全的做法。在此过程中,安全公司会对已冻结的代码进行半自动化审查,即自动化扫描代码中的常见漏洞,再通过人工审查复杂漏洞,代表性的审计公司有 OpenZeppelin、ChainSecurity、BlockSec 等。
此外,还有审计竞赛平台。与直接提供审计服务的审计公司不同,这些平台公开发布审计需求,吸引社区中的安全研究人员参与审计竞赛,并将奖励分配给发现协议漏洞的参赛者。审计竞赛平台包括 Code 4 rena、SHERLOCK、Cantina、Secure 3 等,各个平台在漏洞严重级别、分配奖励和参与标准上都存在一些差异。
代码审计是协议安全的第一道防线。然而,它也存在一些局限性,这也是为什么许多由知名公司审计的协议仍旧未能避免黑客攻击。
首先,静态代码审计无法解决由协议依赖引起的安全问题,DeFi 协议的可组合性更加剧了这一点。
其次,在代码审计过程中,一些问题没有受到足够的重视。例如,精度损失是一个常见问题,可能会被审计员和协议方忽视。直到 Hundred Finance 和 Channels Finance 事件发生后,社区才充分认识到精度损失的安全影响。
最后,高质量的代码审计仍然是稀缺资源,需要具有安全、金融和计算机科学知识的跨学科人才,而目前很少有大学能够持续且大规模地提供此类人才。因此,一些协议尽管进行了审计,但提供审计服务的审计人员专业性上是不足的。
形式化验证
“形式化验证根据某种形式规范或属性,使用数学方法证明系统的正确性或不正确性。” 形式化验证可以确保 DeFi 协议的行为符合形式规范。例如由 Certora 开发的 Prover 可以对 DeFi 协议进行形式化验证。开发者提供规则(规范),Prover 将探索每一种可能的程序状态,将结果与规则进行比较,从而识别漏洞。
形式化验证的最大优势在于它能够通过数学证明管理数十亿资产的 DeFi 协议的正确性。然而,实际应用中的一些限制阻碍了其广泛采用。
首先,规范需要由开发者提供,这要求开发者对协议的预期行为有详细的文档说明,而大多数开发并非这一领域的专家。
其次,协议的频繁升级可能需要更新规范并重新评估协议,一些协议可能无法付出这么多的时间和精力。
尽管存在这些限制,我们仍然认为协议应该进行形式化验证,特别是那些尚未经过时间检验且管理大量用户资产的新协议。但是,如何增强形式化验证的可操作性并提高其采用率,仍然是当下面临的一个巨大挑战。
安全测试
安全测试通过测试用例来发现协议中存在的潜在问题。相较于通过数学方法证明协议正确性的形式化验证,安全测试一般使用具体的输入数据(而非形式化验证中的符号输入),因此效率更高,但全面性略低。
Foundry 是一个颇受欢迎的智能合约开发测试框架。开发者可以在 Foundry 中执行测试,还能够对 DeFi 协议进行差分测试、不变性测试及差异测试。其他安全测试工具还包括 Tenderly 和 Hardhat。
攻击发生后自动触发或紧急采取的安全措施,包括攻击阻断、自动响应、War Room、攻击成因分析以及攻击者资金流追踪。
在这五项响应措施中,尤其值得注意的是攻击阻断,因为项目方能够提前部署,在攻击发生前阻断攻击,将损失降至零,自动响应平台也有助于减少攻击造成的损失。
建立 War Room、进行攻击成因分析和资金流追踪是攻击发生后采取的应对措施,虽然有助于减少损失、防范未来的类似攻击,但很可能已经造成重大损失且难以追回。此外,项目声誉受损及用户信任流失可能带来深远的负面影响。风险似乎无处不在、防不胜防,但项目方并非只能被动应对,可以提前部署防范措施,这也是更为推荐的做法。
攻击阻断
攻击检测是获知黑客攻击的重要渠道,但如果要对抗黑客攻击,只有检测远远不够。因为如果没有自动化的攻击阻断能力,手动采取响应措施往往来不及。以 KyberSwap、Gamma Strategies 和 Telcoin 攻击事件为例,这些协议在攻击的数分钟甚至几小时后才采取了响应措施,黑客在这段时间内发起多笔攻击交易,盗走巨额资产。七月的 Velocore 和 Rho 攻击事件则导致 Linea 和 Scroll 全链暂停运行,引发了用户对 L2 链中心化问题的关注。
攻击阻断能够自动防范黑客攻击,这依赖于两项核心技术:提前检测和自动抢跑。提前检测指的是在交易上链之前,还在内存池阶段时,就能识别出哪些是攻击交易。自动抢跑则是在攻击交易上链之前,优先提交一笔抢跑交易暂停协议,从而阻止攻击交易的执行。这种方法在攻击实质发生之前就进行阻断,从而避免了损失。
在这一类别中,BlockSec Phalcon 是唯一拥有这些核心技术的产品。黑客发起攻击交易后,Phalcon 的攻击监测引擎可以提前检测到这笔交易,向用户推送攻击告警,同时自动抢跑暂停协议,将损失降低至 0 。该产品的攻击阻断能力已在过往的二十多次白帽救援中得到验证,共挽救了超过 2000 万美元资产。
自动响应
除了攻击阻断平台外,Phalcon、Hexagate、Hypernative 等平台也可以在发生攻击时自动响应。
订阅此类平台后,用户可以针对各类协议风险设置监控以及响应措施。如果一笔交易命中了监控规则,系统就会自动发起用户提前设置的响应措施(如暂停协议),从而降低损失。不过,部分平台不具备攻击检测引擎,系统无法直接识别攻击交易并告知用户,而是需要用户自定义一笔交易满足哪些条件下可以判定为攻击。由于攻击交易的特征非常复杂,而用户(往往是合约开发者)不一定具备足够的安全知识,这对用户来说是很有挑战性的。
War Room
当协议面临攻击时,建立 War Room 显得尤为关键。这有助于协议掌握情况、与社区及时同步信息,并有效整合资源以采取应对措施,这需要多领域专家的密切合作。
SEAL 911 旨在“在紧急情况下,帮助用户、开发者和安全研究人员直接联系到值得信赖的安全专家”。用户可以通过 SEAL 911 Telegram Bot(https://t.me/seal_911_bot)获取这个服务,在项目遭到攻击时,迅速组建 War Room 应对安全挑战。
攻击成因分析
当协议遭受攻击时,关键是要识别出问题的根源,例如智能合约内部的漏洞以及漏洞是如何被利用的。分析攻击交易需要借助一些工具,Phalcon Explorer、OpenChain 和 Tenderly 都是不错的选择。
资金流追踪
资金流追踪是指链上追踪攻击者的初始资金和攻击获利,来定位相关的地址和实体。如果这些资产流向了中心化实体(例如,中心化交易所和其他机构级实体),可以联系执法机关帮助冻结资金。
Chainalysis、TRM Labs、ARKHAM、ELLIPTIC 和 MetaSleuth 是该领域的代表性公司/产品。例如,MetaSleuth 可以自动追踪跨链资金流,并提供丰富的地址标签。ARKHAM 建立了一个社区,协议方可以在此发布调查 Bounty 激励社区成员协助追踪攻击者的资金流向。