Shima Capital CTO:反思 Curve 事件,为何我们需要 Runtime Proctection?

Carl Hua热度: 13735

如何保护我们的软件免遭失败呢?

原文作者:Carl Hua, Shima Capital 合伙人、CTO

原文来源:twitter

编译:ChainCatcher

在最近的 Curve 可重入漏洞利用之后,我回顾了我在 JPL NASA 的经历,在那里我学到了开发具备 reliable(可靠)和 resilient(弹性/韧性)软件的关键原则。对于加密行业,这些见解现在比以往任何时候都更加重要,理由如下:

归根结底,人们只真正关注两种类型的软件:可以杀死你的软件和可以让你赔钱的软件。

任何航天机器的关键软件里,大部分预算 ( 80% +) 并未分配给开发本身,而是分配给集成和测试。如果软件出现故障,飞行器就会从天而降——战斗机、无人机、航天器等。

航天软件中的大多数代码(如果被归类为关键模块)都遵守极其严格的测试/开发标准,例如 DO-178 B A 级。不仅需要测试每一行代码,而且如果有嵌套逻辑,则每个逻辑条件都是也经过专门测试。

在 JPL NASA,编写先进的航天软件的理念不是写出最漂亮、干净的代码,而是编写出容易执行单元测试的代码。为什么?很简单:当你将一艘航天器送入太空时,你只有一次机会,没有人愿意在失败的概率较大的情况下冒险。这与区块链的逻辑相同,因为不可变的代码是它们的重要特性,我们也只有一次机会在每笔交易中正确使用我们的资金,所以我们为什么不更认真地对待开发 dApp 这个过程呢?

尽管有严格的开发、测试和代码审计流程,但这些手段的显然不足以缓解所有错误和攻击,因为事实上通过测试和审计消除所有运行时错误几乎是不可能的。那么我们如何保护我们的软件免遭失败呢?

运行时保护(Runtime Protection)

运行时保护是一种安全技术,可保护软件应用程序在运行时免受恶意攻击。它的原理是在代码实际运行时进行实时检测,分析程序的实际行为以保护程序免受恶意数据和攻击的影响。

高可靠性软件的运行时保护需要花费大量的投入和设计,因为它们是确保软件不会进入未知状态或故障的最后一道防线。这不仅仅是个论点,而是几十年来经过验证的实践。

今天在 Web3 中,我认为 DeFi 应用程序需要同样的高可靠性,并且应该考虑同样的方法。然而,由于其潜在的限制,EVM 并不是为处理运行时保护等复杂任务而设计的。那么,我们如何提供运行时保护呢?

一种方式是通过 Aspect 编程,Aspects 由 Artela 区块链网络设计的,它能够在任何智能合约交易的生命周期内切换执行上下文,以对程序的实时状态进行高级检查。Artela 通过 Aspect 和兼容 EVM 的方式,提供运行时保护的独特设计,它有机会成为加密智能合约安全的未来基础。

Artela 在下面的文章中公布了 Aspects 在防止 Curve 重入攻击中的具体用法,希望一起交流!

《编译器漏洞无解?Runtime Protection 实现 DeFi 链上风控保护》

声明:本文为入驻“MarsBit 专栏”作者作品,不代表MarsBit官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
免责声明:本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况,及遵守所在国家和地区的相关法律法规。