尽管 2023 年大部分时间对于 DeFi 协议来说是一个熊市,但由于协议漏洞,该生态系统仍在遭受严重的黑客攻击。值得注意的是,Euler Finance 黑客攻击造成了近 2 亿美元的巨额损失。与此同时,DeFi 安全事件出现了新的趋势,例如由编译器引起的漏洞以及广泛使用的标准之间的不兼容性。为了应对这些威胁,社区提出了多种解决方案,包括监控和威胁情报。尽管其中一些措施已被证明是有效的,但我们认为这些努力是临时性的。社区仍然缺乏系统性的方法和指导来帮助保护 DeFi 协议。
在本篇博客中,我们将首先通过代表性案例介绍 DeFi 协议安全的新趋势,然后阐述当前的解决方案及其局限性。最后,我们将提出 BlockSec 关于如何保护 DeFi 协议的观点。
0x0. DeFi 协议安全新趋势
趋势一:知名协议遭到攻击
2023 年,一些知名且信誉良好的协议遭到攻击,包括 Curve、Balancer 和 KyberSwap。下表展示了这些知名协议的上线日期及其遭受攻击的时间。需要注意的是,被利用的漏洞可能是在协议初始上线后的更新中引入的。因此,表中提供的持续时间是近似的,旨在提供一个大致的时间范围。
| 协议 | 上线时间 | 安全事件时间 | 持续时间 |
|---|---|---|---|
| kyberSwap | 2017 | 2023 年 11 月 | 约 6 年 |
| Curve | 2020 | 2023 年 7 月 | 约 3 年 |
| Balancer | 2020 | 2023 年 8 月 | 约 3 年 |
除了上述协议,Aave V2 在收到社区关于漏洞的报告后于 11 月份被紧急暂停。尽管该协议未被攻击,但它仍然引起了对知名协议安全性的担忧。
这些协议已经过多次审计,内部实施了多项安全措施。下表列出了每个协议的审计公司。需要注意的是,审计公司可能只审计了协议中的部分智能合约。表中提到的审计公司不一定与其审计了具体存在漏洞的智能合约相对应。本表的目的是展示这些协议在安全方面投入了大量的资源。
| 协议 | 审计公司 | 链接 |
|---|---|---|
| kyberSwap | ChainSecurity, Sherlock, Hacken | Audits - KyberSwap Docs |
| Curve | TrailOfBits, MixBytes, Quantstamp, ChainSecurity | Audits - Curve Docs |
| Balancer | OpenZeppelin, TrailOfBits, Certora, ABDK | Security | Balancer |
幸运的是,受害者通过各自协议实施的计划获得了损失赔偿。例如,Kyber Network 宣布将通过 KyberSwap Treasury 赔偿受影响的用户。同样,Curve 社区投票通过了一项提议,向 LP 赔偿其经济损失。这些措施是恢复 DeFi 社区信心的步骤,尽管代价高昂。
趋势二:新型攻击向量出现
涉及编译器错误和第三方库不兼容的攻击向量确实出现在 DeFi 领域。例如,Curve 安全事件的根本原因被确定为 Vyper 编译器特定版本的错误。此外,一些协议遭受的攻击源于两种广泛采用的标准之间的不兼容性:ERC2771 和 Multicall,当它们在流行的第三方开发库(如 thirdweb)中实现时。这些复杂的技术挑战凸显了彻底的安全实践和安全措施的持续演进对于防范新的和不可预见的漏洞的重要性。
编译器错误
1983 年,Ken Thompson 在他的图灵奖演讲“关于信任的思考”中描述了修改 C 编译器以在程序中插入后门的步骤,这可能导致意外结果。演讲中的观点受到了社区的广泛欢迎。然而,实际中恶意编译器的真实案例很少(除了臭名昭著的 XcodeGhost 安全事件)。即使我们将安全模型从恶意编译器放宽到良性但意外的编译器行为,导致严重经济损失的公开案例仍然很少。
Vyper 编译器错误导致的 Curve 安全事件是一个公开的案例,造成了约 7000 万美元的损失(其中一些已归还,实际损失约为 2300 万美元)。Vyper 编译器版本 0.2.15、0.2.16 和 0.3.0 中存在错误,这些错误将导致重入锁失效。这意味着攻击者可以利用重入漏洞进行黑客攻击,如果编译器生成了正确的字节码,这种情况本不应发生——因为开发人员已经添加了代码来防止重入。

攻击交易:0x2e7dc8b2fb7e25fd00ed9565dcc0ad4546363171d5e00f196d48103983ae477c
通用标准的不兼容性
DeFi 的可组合性允许不同的智能合约和标准连接并创建强大的应用程序。然而,这会带来潜在的兼容性问题。例如,当每个智能合约单独运行时都正常,组合流行标准可能会引入新的安全漏洞。
一种此类不兼容性问题涉及 ERC-2771 和 Multicall 标准。ERC-2771 定义了一个通过受信任的转发器接收元交易的接口,而 Multicall 是一种在一个交易中批量处理多个函数调用的机制。当来自受信任转发器的调用从 calldata 中检索实际调用地址时,攻击者就可以操纵它,从而出现问题。尽管每个标准单独运行时都完美无缺,但它们的组合使用可能会破坏某些假设并导致意想不到的问题。有关更多详细信息,请参阅OpenZeppelin 的博客文章。
请注意,ERC-2771 和 Multicall 标准都实现了 OpenZeppelin 和 thirdweb 等流行开发库。开发人员通常会信任这些知名的代码库,并可能将它们排除在代码审计之外。即使协议本身没有固有的漏洞,这种做法也可能引入新的安全漏洞。
趋势三:旧漏洞产生新的安全影响
精度损失是指计算过程中精度和准确性的降低,通常是由结果的小数位数少于预期引起的。虽然静态分析器可以轻松检测到精度损失问题,但仅仅存在它们并不一定意味着安全漏洞。只有当精度损失可能导致严重后果时,才会被认为是漏洞。然而,评估精度损失的影响通常很困难,因为它需要对协议的语义和代码的具体上下文有深入的理解。
几起攻击都针对了其他领先协议(如 Compound v2 和 Aave v2)的分叉协议,这些协议可能容易受到已知的精度问题的影响。具体来说,涉及 Hundred Finance 和 Channels Finance(它们是 Compound v2 的分叉)的事件是由于市场初始化不当以及精度损失问题引起的。这些问题允许攻击者因四舍五入错误而以较少的代币数量赎回抵押品。
攻击交易:0x3f7de75566289224c5e95a35ee8717ddd6928500227a05c1d83838844c60491d
0x1. 当前解决方案
诚然,知名 DeFi 协议在安全措施方面投入巨大,并经过多轮安全审计。尽管如此,考虑到这些协议管理的巨额用户资产,强调协议安全的关键性是完全合理的。除了代码审计,还有其他提出的解决方案,如威胁监控。让我们深入探讨这些解决方案的当前状态及其局限性。
代码审计
本文定义的代码审计确实是 DeFi 协议安全评估中的一个关键过程,通常在协议上线前进行。它包含了一系列技术,包括手动代码审查、静态分析、动态模糊测试和形式验证。此外,该过程可以由一家(或几家)审计公司进行,或通过社区驱动的方式进行。然而,代码审计存在必须承认的局限性。
-
首先,代码审计主要发生在协议部署之前。一旦协议上线,审计过程通常就结束了,并且无法通过最初的代码审计持续评估持续的安全。这意味着上线后出现的任何漏洞或问题可能无法通过最初的代码审计检测到。
-
其次,代码审计通常难以识别需要复杂交互和特定状态才能利用的细微漏洞。DeFi 协议的可组合性虽然促进了灵活性和集成性,但它极大地扩展了程序空间,并给人工审查员和静态分析器带来了严峻的挑战,它们难以探索全部程序状态。即使动态模糊测试可能有所帮助,但它也受到交易和状态依赖性的限制。缺乏能够检测失败的 DeFi 协议感知模糊测试 Oracle 是该领域的一个重大差距,在行业和学术界仍然是一个开放的研究问题。
-
第三,合格的代码审计员短缺,由于人才库有限,这个问题无法迅速解决。代码审计是一项跨学科的任务,需要网络安全、金融和数学知识。目前只有少数大学提供该专业领域的教育,导致高质量代码审计成本高昂且服务等待时间长。因此,为了维持其业务时间表,协议可能会在未进行代码审计的情况下上线。
-
第四,用户很难评估代码审计的质量。尽管用户是协议安全中最有利害关系者,因为他们将资产存放在其中,但大多数用户缺乏评估代码审计彻底性的能力。这可能导致审计仅为表面工作,最终损害协议和用户资产的安全性。
总之,虽然代码审计是保护协议的宝贵工具,但其固有的局限性意味着它不能成为唯一的安全解决方案。
威胁监控
威胁监控的基本思想是监控和检测可疑行为。这确实提高了安全性,但需要解决以下问题才能有效。
-
首先,威胁监控系统的准确性至关重要。它们必须通过最大限度地减少误报和漏报来取得平衡。高误报率可能导致虚假警报,用户或安全团队对此类警告麻木,从而可能忽略真正的威胁。
-
其次,当前威胁监控系统在检测到可疑交易后,通常需要手动确认才能采取行动。这很大程度上是由于上述高误报率的问题。手动干预的被动性质是有问题的,因为在快节奏的区块链和 DeFi 协议环境中,攻击会迅速耗尽资源,通常在手动响应实施之前。因此,如果威胁监控系统无法提供及时的自动操作来防止或缓解攻击,其价值将大大降低。
-
此外,威胁监控应该是持久的,并且能够适应新出现的威胁。
0x2. BlockSec 的观点
我们认为协议安全在协议生命周期的不同阶段需要多重防御,包括高质量的代码审计、上线前的安全测试、攻击检测和阻止,以及上线后的安全事件响应。我们还想强调社区中一些被忽视的观点。
-
首先,我们认为任何小的代码或配置升级都需要进行彻底的安全测试。这种测试应该在协议的实际状态下进行,而不是在用户数据的虚假状态下进行。如前所述,协议状态对于定位复杂协议中的漏洞至关重要。
-
其次,除了手动干预,还需要一个自动响应攻击的系统。这需要一个准确及时的攻击检测系统,误报率极低,漏报率接近于零。 例如,如果部署了自动响应,数百万用户的资产就可以得到保存。
-
第三,应建立适当的安全事件响应程序,并需要能够提供全面安全服务的安全合作伙伴。例如,当发生漏洞利用时,合作伙伴可以协助创建作战室、推荐采取的行动、帮助审查和审计安全补丁、跟踪资金流等。yearn finance 文章是如何处理漏洞利用的一个很好的资源。
BlockSec 提供全栈安全服务
基于以上见解,BlockSec 为协议提供全栈安全服务。
- 高质量的代码审计服务。BlockSec 为 DeFi 协议提供严格的代码审计服务。通过利用基于创新学术研究的静态分析工具、动态模糊测试和差异化测试框架,我们的代码审计涵盖了协议和底层的 EVM 执行引擎。此外,静态分析工具 HookScan 得到了Uniswap Lab 的支持,用于检测 Uniswap V4 hooks 中的漏洞。
- Phalcon:攻击检测和阻止系统。凭借经过实战检验的技术,我们阻止了 20 多次攻击,挽救了约 1400 万美元,BlockSec Phalcon 可以帮助协议主动监控攻击合约和交易(即使在黑客发起攻击交易之前)。凭借近 99.99% 精确的攻击检测引擎以及用户自定义策略,BlockSec Phalcon 平衡了误报和漏报,启用了自动防御机制。
- 安全事件响应。BlockSec 始终是识别 DeFi 黑客攻击根本原因和漏洞方面最快的(如果不是第一个)安全供应商。我们可以帮助协议审查安全补丁(Telcoin),提供白币救援(例如 AnySwap、TransitSwap、Paraspace、Loot),跟踪黑客资金流,并查明 Hopeland 攻击者 的身份。
0x3. 结论
2023 年,我们发现 DeFi 协议安全出现了新趋势,许多知名协议遭到攻击。我们知道,在技术上确保协议安全是一项复杂且持续的挑战。仅仅采用代码审计或监控系统已经不够了。我们需要一个全栈解决方案,将这些要素结合起来,并在协议的整个生命周期中发挥作用。
总而言之,BlockSec 在 DeFi 协议安全方面的整体方法,结合了最先进的审计技术、自动攻击防御工具和响应迅速的事件管理,使其成为寻求加强其安全措施并在 2024 年应对 DeFi 领域不断演变的威胁时保护用户资产的协议的领先合作伙伴。



