尽管2023年大部分时间DeFi协议都处于熊市,但由于协议漏洞,该生态系统仍遭受严重黑客攻击。值得注意的是,Euler Finance黑客事件造成了近2亿美元的重大损失。与此同时,DeFi安全事件出现新趋势,例如编译器造成的漏洞以及广泛使用的标准之间的不兼容性。为应对这些威胁,社区提出了多种解决方案,包括监控和威胁情报。虽然其中一些措施已被证明有效,但我们认为这些努力是零散的。社区仍然缺乏一个系统性的方法和指导来帮助保护DeFi协议。
在本篇博文中,我们将首先通过代表性案例展示DeFi协议安全的新趋势,然后阐述当前的解决方案及其局限性。最后,我们将提出BlockSec关于如何保护DeFi协议的观点。
0x0. DeFi协议安全新趋势
趋势一:声誉良好的协议遭到攻击
2023年,一些成熟且声誉良好的协议遭到入侵,包括Curve、Balancer和KyberSwap。下表展示了这些声誉良好协议的启动日期以及它们被攻击的时间。需要注意的是,被利用的漏洞可能是在协议初始发布后进行的更新中引入的。因此,表中提供的时间长度是近似的,旨在提供一个大致的时间范围。
除了上述协议外,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财库补偿受影响用户。同样,Curve社区投票通过了一项提案,以偿还LP的财务损失。这些措施是恢复DeFi社区信心的步骤,尽管付出了相当大的代价。
趋势二:出现新型攻击向量
编译器错误和不兼容的第三方库相关的攻击向量确实出现在DeFi领域。例如,Curve安全事件的根本原因被确定为某些版本的Vyper编译器存在错误。此外,一些协议遭受了攻击,这些攻击源于两种广泛采用的标准之间的不兼容性:ERC2771和Multicall,当它们在流行的第三方开发库(如thirdweb)中实现时。这些复杂的技术挑战突显了彻底的安全实践以及安全措施的持续演进对于防范新的和不可预见的漏洞的重要性。
编译器错误
1983年,Ken Thompson在一次图灵奖演讲中发表了题为“Reflections on Trusting Trust”的演讲。他在演讲中描述了修改C编译器以在程序中植入后门的步骤,这可能导致意外结果。演讲中传达的思想受到社区的广泛欢迎。然而,实际中恶意编译器的实际案例非常罕见(除了著名的XcodeGhost安全事件)。即使我们将安全模型从恶意编译器放宽到良性但意外的编译器行为,导致严重经济损失的公开案例仍然很少。
Vyper编译器错误导致的Curve安全事件是一个公开的案例,造成了约7000万美元的损失(其中一部分已归还,实际损失约为2300万美元)。Vyper编译器版本0.2.15、0.2.16和0.3.0存在使重入锁失效的错误。这意味着攻击者可以利用重入来执行黑客攻击,如果编译器生成正确的字节码,就不会发生这种情况——因为开发人员已经添加了防止重入的代码。

攻击交易:0x2e7dc8b2fb7e25fd00ed9565dcc0ad4546363171d5e00f196d48103983ae477c
常见标准的不兼容性
DeFi的可组合性允许不同的智能合约和标准连接并创建强大的应用程序。然而,这会带来潜在的兼容性问题。例如,当每个智能合约单独运行时都能顺利工作时,组合流行标准可能会引入新的安全漏洞。
一个此类不兼容性问题的例子涉及ERC-2771和Multicall标准。ERC-2771定义了一个通过受信任的转发器接收元交易的接口,而Multicall是在单笔交易中批处理多个函数调用的机制。当从受信任的转发器转发的调用从调用数据中检索实际调用地址时,问题就会出现,而调用数据可能会被攻击者操纵。尽管每个标准单独运行时都能完美工作,但它们的组合使用可能会破坏某些假设并导致意外问题。有关更多详细信息,请参阅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钩子中的漏洞。
- Phalcon:攻击检测和拦截系统。凭借经过实战检验的技术,拦截了20多起攻击,挽救了约1400万美元的资金,BlockSec Phalcon可以帮助协议主动监控攻击合约和交易(甚至在黑客发起攻击交易之前)。凭借近99.99%精度的攻击检测引擎加上用户自定义策略,BlockSec Phalcon在误报和漏报之间取得平衡,实现了自动防御机制。
- 安全事件响应。BlockSec在识别DeFi黑客攻击的根本原因和漏洞方面,始终是(如果不是第一个的话)最快的安全供应商。我们可以帮助协议审查安全补丁(Telcoin)、提供白名单资金救援(例如,AnySwap、TransitSwap、Paraspace、Loot)、跟踪黑客资金流,并查明Hopeland攻击者的身份。
0x3. 结论
2023年,我们发现DeFi协议安全出现新趋势,许多声誉良好的协议遭到攻击。我们知道,在技术上确保协议安全是一个复杂且持续的挑战。仅仅采用代码审计或监控系统已经不够了。我们需要一个全栈解决方案,将这些要素结合起来,并贯穿协议的整个生命周期。
总之,BlockSec在DeFi协议安全方面的整体方法,结合了尖端的审计技术、自动攻击防御工具和响应迅速的事件管理,使其成为寻求加强其安全措施并在2024年DeFi领域不断演变的威胁面前保护用户资产的协议的领先合作伙伴。



