许多 DeFi 攻击并不是单笔交易。攻击者会部署合约、进行测试、借入资金、推动价格,最后才掏空目标,有时历时数分钟甚至数小时。每一步都会在公开的区块链上留下痕迹。运行时监控,就是足够快地读懂这些痕迹,以便及时采取行动。
如何运作
监控系统会观察区块链,通常还包括等待打包的交易队列,寻找与攻击相关的模式。典型信号包括:
- 新部署的合约以不寻常的顺序调用协议函数
- 大额闪电贷之后紧跟着推动预言机价格的交易
- 金库份额价格或资金池余额的突然变化
- 事先未公告的管理操作,例如所有权转移或合约升级
- 资金流向与过往攻击相关的地址
检测通常分两个阶段。快速过滤器根据已知攻击模式为每笔新交易或新合约打分,可疑的那些会针对链的当前状态进行模拟,看看它们实际会做什么:哪些余额变化、哪些价格变动、资金最终流向何处。正是模拟让系统能够区分一笔规模大但正常的交易,与一次攻击的开局动作。
信号触发时,系统会向团队发出警报。在某些配置中,它还可以触发自动响应:暂停合约、阻止某个函数,或在攻击完成之前把资金转移到攻击者够不着的地方。
一个简单示例
攻击者部署了一个合约,通过闪电贷借入一大笔资金,在流动性稀薄的流动性池中兑换以扭曲价格,并准备以该价格为依据借款。监控系统模拟了这个新合约,识别出其中的模式,在真实交易上链之前将其标记为高风险。协议的守护者暂停了借款功能,攻击失败,团队随即展开调查。如果没有监控,最初的迹象可能就是一个被掏空的金库。
监控与审计、赏金的区别
智能合约审计在部署之前或之后不久检查代码,漏洞赏金邀请研究人员持续检查代码。运行时监控观察的则是行为。它可以发现利用无人想到要审查的代码发起的攻击,例如与新上线协议的交互;它还覆盖代码审查永远看不到的运营事件,例如可疑的管理操作。
风险与局限
监控无法阻止它来不及看到的东西。有些攻击在单笔交易内完成,只留下交易被打包进区块之前的短暂窗口,而私有交易通道甚至能把这个窗口也隐藏起来。自动响应需要精心设计:太容易触发的暂停会干扰正常用户,触发太慢的则毫无用处。如果背后的密钥保护不善,暂停的权力本身也是一种风险。监控系统的好坏取决于它的模型,新型攻击可能与任何已知模式都不匹配。这就是为什么监控要与审计、赏金和储备金证明协同工作,而不是取代它们。
Tori Finance 如何运用这一概念
Tori Finance 使用 Hypernative 的运行时监控,观察其智能合约的链上活动。这在 Sherlock 和 Nethermind 的智能合约审计之外,增加了一层实时防护。Tori 还运行自己的内部漏洞赏金计划。
常见问题
DeFi 攻击能被实时阻止吗?
有时可以。如果攻击需要好几个步骤,或者攻击交易在被打包进区块之前可见,监控就能发出警报,自动响应可以暂停被攻击的函数。在单笔隐藏交易中完成的攻击,则难以阻止得多。
审计和监控有什么区别?
审计在部署之前或之后不久审查代码。监控观察代码上线之后发生的事,包括审计永远看不到的交互和管理操作。
监控系统会关注哪些情况?
不寻常的模式:新合约试探协议、推动价格的大额闪电贷、余额或份额价格的突然变化、未公告的升级,以及资金流向与过往攻击相关的地址。
参考来源
- Hypernativewww.hypernative.io
- ethereum.org: Smart contract securityethereum.org
由 Tori Finance 团队撰写。不构成投资建议。收益会有波动,资金存在风险。