在今年三月成功拦截了对 ParaSpace 的黑客攻击后,专注于拦截黑客攻击的安全公司 BlockSec,知名度也被打响了。

BlockSec 最初是一个学术项目,在浙江大学从事区块链安全研究的周亚金(Andy)教授起初没想去创业,只是从纯学术研究的角度去探索区块链世界里的安全问题和解决方案。然而,在经过了两三年深入的研究后,Andy 教授对这个领域的理解越发深入,他开始意识到,区块链领域中仍然存在许多尚未解决的实际安全问题。于是,Andy 决定扩展研究的应用范围,致力于开发真正能服务于用户的产品和技术。就这样,BlockSec 在这个想法的推动下诞生了。

这一周,随着以太坊 EthCC 在巴黎的启动,加密行业的盛会气氛被热烈点燃。作为 BlockSec 的创始人兼 CEO,Andy 受邀在法国巴黎举行的 2023 年度 DeFi 安全峰会上发表了演讲。在演讲中,Andy 介绍了 BlockSec 推出的主动防御系统 Phalcon Block 是如何工作的,以及其中的核心技术攻击拦截的基本原理。BlockBeats 整理翻译的全文如下:

我叫 Andy,是 BlockSec 的首席执行官。今天我要谈论的是通过主动防范威胁来保护网络的方式。

BlockSec 成立于 2021 年,得到了一些顶级投资者和客户的支持。我们有几款产品供社区使用,比如 Phalcon,我认为大多数安全研究人员已经使用我们的 Phalcon Explorer 来可视化交易。我们还有 MetaDock、MetaSleuth,这些都免费提供给社区。

为什么 Web3 的安全性如此重要呢?即使在熊市的周期中,由于 DeFi 黑客攻击和 DeFi 诈骗造成的损失也在不断增加。我们每天都收到受害者的邮件,他们说他们遭到了攻击,失去了所有的钱,希望我们能帮助他们。这些不仅仅是一堆数字,它们代表的是那些在遭受攻击后面临破产的个人。我们必须帮助他们。

为什么现在 DeFi 黑客攻击如此常见呢?我认为有几个原因。一个原因是我们有攻击者,他们有经济动机去进行 DeFi 黑客攻击。通过进行 DeFi 黑客攻击,他们可以得到大量的钱。但是我们没有足够的安全合格的开发人员。一些开发人员更关注协议的功能性,既缺少足够的安全培训,也没有上过区块链安全课程,我们在社区和大学中欠缺太多的课程。而且,一些黑客攻击是由国家级组织进行的。在这个话题上我们不需要过多谈论,因此大多数人都明白。

只有代码审计的协议安全性远远不够

当谈到协议的安全性时,大多数人会想到代码审计。代码审计确实是解决 DeFi 协议中安全问题的最常见方式。我们认为代码审计有帮助,但代码审计远远不够。合格的审计服务既昂贵,也耗时。你需要等待两个月或三个月,甚至半年才能被一家顶级审计公司审计。所以一些协议没有足够的时间等待,而且我们也没有足够的合格审计员。如果一家审计公司只是发出审计证书,这个证书最终将不再被社区信任。由于这些原因,协议只能在缺乏一些更好的威胁预防测试和攻击预防解决方案的情况下上线。他们只能在没有任何安全措施的情况下上线。

因此,我们需要有一个更主动的方法。更主动的方法意味着协议需要知道他们的协议当前发生了什么。他们不能只是把他们的协议放在网上,然后去睡觉。他们需要知道当前发生了什么,谁在与协议交互。然后当发生一些不好的事情时,协议需要知道如何自动响应这样的攻击交易。

为什么主动的方法在 Web3 中更重要呢?为什么在 Web2 中没有,但 Web3 却需要?因为 Web3 引入了更多的攻击向量,而区块链的开放性使得攻击比在 Web2 中更容易。每个人都可以在区块链上查看智能合约。大多数区块链上的智能合约都是开源的,所以好人和坏人都可以看到同样的源代码。他们可以在源代码中找到漏洞。如果有漏洞,他们就可以攻击这个漏洞来获得巨额利润。此外,因为区块链是匿名的,所以很难检查攻击者的资金流动。当一个攻击者对 DeFi 协议发动攻击时,我们总是看到协议问谁能帮我们联系 Binance,谁能帮我们联系一些交易平台。因为追踪攻击者的资金流动非常非常困难。

闪电贷也让攻击者发动攻击变得更容易。在 Web2 中,如果你发现一个漏洞,为了发动这次攻击,你需要有 200 万美元,但大多数人没有这么多钱来发动攻击。但在区块链中存在闪电贷,你可以从闪电贷服务中借到大量的钱,然后发动攻击并把钱再还给闪电贷。而且一些私人交易服务,也可以被滥用来发动攻击。我们已经看到有很多攻击,通过滥用 flashbot 服务来阻止攻击交易在内存池中被观察到。

Web3 的这些独特属性,导致 Web3 空间中的攻击者对协议造成了更多的损害,对用户造成了更多的损害。同时追踪 Web3 中的攻击者变得更加困难。

Phalcon Block 是如何工作的?

基于这些原因,BlockSec 从去年 2 月以来就开发了一个原型系统,思考如何解决代码审计之外的这些问题。我们是否可以采取更主动的解决方案来防御 DeFi 黑客攻击?在这些思考下,BlockSec 开发了一个叫做 Phalcon Block 的系统。

Phalcon Block 的基本思想是监听内存池中的交易。我们监听区块链上的交易,我们也监听被回滚的交易。为什么我们需要监听被回滚的交易呢?那是因为攻击者可能会犯错误,攻击交易可能会被回滚。如果我们能够捕获这样的被回滚的攻击交易,我们可以自动做出一些反应。在那之后,我们可以通过重放攻击交易和复制攻击合约的关键攻击逻辑来重建攻击逻辑,然后通过一些 flashbot 或者给予更高的 Gas 费用等方式发出救援交易,以确保我们的救援交易可以比攻击交易更快或者可以在攻击交易后面的区块链上。通过这样做,我们甚至可以阻止攻击者的交易。因为我们更快,我们在区块中的攻击交易的头部。

这个机制或者这个系统的关键部分是如何自动重构攻击交易和攻击合约。我认为基本的理念是,思考一下攻击交易和攻击智能合约中最重要的是什么——最重要的是这个智能合约中的攻击逻辑,以及攻击者。他们会对这个攻击智能合约的调用者进行一些认证,因为他们不希望他们的攻击智能合约被其他人抓住。因此你需要自动绕过所有这些检查。然后我们在内存池中替换这个攻击交易,可以得到一条基础块的链或者说这个攻击交易的踪迹。在这个基本块的链中,我们可以替换 JUMPI 指令。我们将冻结的 JUMPI 指令调用到 JUMP 指令中,从而跳转到攻击逻辑,而不是因攻击合约认证失败而还原的基本块。

因此,我们提出了一个基本的思考模式和方法论。然而,在实践中并非如此简单。仅仅替换指令在我们的案例中是不起作用的,因为我们面临着一系列技术挑战。最主要的一点是,我们需要解决如何处理智能合约中基本块的重用问题。编译器常常利用基本块的重用来生成更小的代码,这是减少代码体积的常见做法。所以假设我们有两个不同的跳转目标,RA1 和 RA0。这时我们需要新的跳转目标,因此需要建立一个映射关系,即这个旧的跳转目标与新的跳转目标之间的映射关系。为此,我们使用了跳板来建立映射关系。

在这个过程中,我们借鉴了二进制代码重写的思路,这种技术已经使用和发展了两个多世纪,甚至可能更长。因此,我们借鉴了这个理念,并将其应用到字节码重写的技术中。

Phalcon Block 过去的战绩

通过运用我们的系统,我们已经成功阻止了几次协议的攻击交易,并挽回了大量的资金流动性损失。例如,我们今年为 ParaSpace 挽回了 500 万美元的损失,去年为 Saddle Finance 挽回了 380 万美元的损失等例子。所以接下来,我将谈论一些代表性的案例,阐述我们是如何阻止这些交易的。

以 ParaSpace 为例,它在今年 3 月遭受攻击,但攻击者犯下了几个错误。他们并未准备足够的 Gas 来执行攻击,因此攻击交易被回滚了。就像我之前提到的,我们会密切「监听」区块链上被回滚的交易。因此,即使交易被回滚,BlockSec 还是能够发现这是一次攻击。然后我们自动合成了一个类似的攻击合约,用我们自己的地址替换了利润地址。发出的这些交易在区块链上被执行后,BlockSec 就成功为 ParaSpace 挽回了五百万美元的损失。

另一个例子是 Platypus,它在今年 2 月被攻击。由于智能合约存在漏洞,攻击者找到了攻击 Platypus 这个 DeFi 协议的入口。但攻击者犯了一个错误,没有在被攻击的智能合约中设置提取资金的逻辑。因此,黑客们面临一个问题:如何从被攻击的合约中提取剩余的 240 万美元?

而 BlockSec 具备一套内部系统,可以自动反汇编被攻击的合约,我们能够通过一些启发式方法对 AttackSmart 合约进行深入分析,揭示了这个合约的一些有趣特性。首先,这个合约的闪电贷回调是开放的;其次,USDC 已经批准了 Platypus pool 合约。此时我们能具体做些什么呢?我们升级了 pool 合约,并利用被攻击合约批准的特权提取被攻击合约中剩余的 USDC。我们把这个批准的概念分享给了协议,协议成功地从被攻击的合约中提取出了 240 万美元。

还有一个例子是 Transit Swap。Transit Swap 曾被一个 MEV bot 攻击。我们发现,MEV bot 的地址是由一个存在漏洞的 Profanity 工具生成的。因为这个工具的漏洞,我们可以计算出 MEV bot 的私钥,并提取出资金以退还给协议。

如何提高这个系统的效能呢?我认为我们有一些思考。首先要快速响应,迅速获知情况并立即采取行动。其次,准确性也至关重要。我们不能引入太多的误报。就像我们昨天讨论的,如果你的监控工具向客户报告了过多的警报,产品的使用性就会大打折扣。因此我们应该系统化地运作,而非仅仅是追踪攻击者。BlockSec 拥有一些工具,可以分析和反汇编合约,同时使用启发式方法对字节码进行深入的分析。BlockSec 采取所有这些措施的初衷,是为了构建一个完善的系统,打造一个高效的产品。

我们看到了攻击者和安全研究员之间的竞赛,也看到了一些攻击者使用混淆和运行时措施来进行防御。基于这些,我们构建了一个名为 Phalcon Block 的系统。如果你对此感兴趣,可以加入我们的 Waitlist,获取 Falcon Block 系统的最新信息。我们在 Twitter 上也有一个教学小组。如果你对此感兴趣,欢迎关注我们。

以下为问答环节:

问:BlockSec 进行了许多反攻击行动,暂且就称之为反攻击行动吧。在这个过程中,BlockSec 如何保护自己免受法律责任和法律纠纷呢?

BlockSec 创始人 Andy:这是一个非常好的问题。BlockSec 非常重视安全伦理,我们只在看到攻击交易发生后,才执行反攻击或阻止攻击交易,我们不会在没有前提时执行这些攻击交易。因此我认为,BlockSec 保护用户采取的行动方式是主动型的。如果我们不采取行动,那么更狡猾的人可能会把所有的钱都拿走。

问:这可能是对前一个问题的后续提问,如果有人发现了一个还没有被利用的漏洞,并且也没有攻击交易发生,你们就合法地像白帽黑客那样行动,保存用户的资金?

BlockSec 创始人 Andy:让我重新表述一下,我们并没有黑用户的资金。我们只是自动重构攻击者的合约,将资金移动到另一个钱包。我们会将所有这些资金退还给协议和用户。虽然对于伦理问题而言是有争议的,但是如果我们只是出于保护用户的心态去做这些事情,我认为我们是正义的一方。

问:很明显你们在做正确的事情,你们有任何实际的法律保护措施吗?你们有律师坐在那里检查吗?

BlockSec 创始人 Andy:目前我们实际上没有,但我们会考虑。