自选
我的自选
查看全部
市值 价格 24h%
  • 全部
  • 产业
  • Web 3.0
  • DAO
  • DeFi
  • 符文
  • 空投再质押
  • 以太坊
  • Meme
  • 比特币L2
  • 以太坊L2
  • 研报
  • 头条
  • 投资

免责声明:内容不构成买卖依据,投资有风险,入市需谨慎!

《区块链安全前沿:专访Trail of Bits创始人兼CEO Dan Guido》

2018-04-27 09:00:00
收藏

很多时候,我们对安全性做出了错误的假设

我们的信用卡保护涵盖欺诈性收费,而 FDIC 保护我们的银行账户。当整个金融体系主要由于次级抵押贷款行业而崩溃时,我们以为我们会再次好起来,政府救助了银行。我们永远不应该将我们的安全视为理所当然,在区块链技术方面尤其如此。区块链项目仍处于早期阶段,因此验证加密钱包、交易所和项目背后的编码是否安全非常重要。没有哪个行业领导者比 Trail of Bits创始人兼首席执行官 Dan Guido 更了解这一点。Dan Guido 对 The Merkleis 的独家采访为加密社区提供了一个主动解决我们对安全性的假设的机会。

The Merkle:您能给我们简要介绍一下 Trail of Bits 的历史及其项目范围吗?

Dan Guido:Trail of Bits 已经存在了将近七年。我和我的合作伙伴 Alex Sotirov 一起创立了这家公司。我们都是安全研究人员,从 15 岁起就一直在从事这项工作。我们没有任何风险投资;我们从头开始建立了这家公司。我们的工作涉及许多行业,包括科技、金融和国防。我们审计高可靠性金融应用程序代码、低级代码和加密系统。我们为 Lockheed Martin 公司开发飞机,为 Facebook 开发安全运营软件,为 DARPA 开发安全研究。自从区块链作为一项新技术出现以来,我们已经能够将所有这些经验应用到这个新领域。

The Merkle:是什么让 Trail of Bits 特别有资格进行区块链技术的安全工程和评估?

Guido:我们是一家软件安全公司,这意味着我们一直在研究编译器、二进制分析、编程语言,并试图发现软件安全漏洞,有时甚至不看源代码。我们知道要编写哪些工具以及要构建哪些流程。我们可以分辨出好的和坏的代码是什么样的,因为我们以前都见过;这是我们花了一辈子时间的东西。大约两年前,我们专注于将我们构建的工具 [用于测试其他行业的软件和代码] 移植到区块链技术,尤其是以太坊虚拟机 (EVM)。现在,我们主要为该领域的客户提供三项服务:智能合约审计、资产托管设计指导和区块链设计。对于智能合约审计,我们得到了一个 DApp(通常用 Solidity 编写),并应用我们独特的工具和知识来帮助发现隐藏的风险。我们编写新的软件测试用例并提供指导,以帮助项目保持安全,即使在我们的参与结束后也是如此。我们还关注托管系统,因为它们是为 Gemini 等交易所、ICO 和 Web3 基金会等组织设计的。对于这些项目,我们正在设计和审查访问和存储资金的系统。最后,我们还帮助进行区块链设计。在一个值得注意的案例中,我们与 RSK 区块链合作,该区块链将智能合约放入比特币中,并帮助审查他们的合约运行时环境。我们拥有理论和应用密码学家,他们可以对区块链设计选择进行真正的评估,这是许多其他公司无法做到的。

The Merkle:您正在从事哪些区块链项目?

Guido:具体到区块链公司,Trail of Bits 已经与 LivePeer、Golem、MakerDAO 和许多其他我们无法披露的公司合作。代码审计并不新鲜,但智能合约的快速增长催生了对测试的迫切需求。从臭名昭著的黑客攻击到失败的交易,再到有进取心的黑客窃取加密货币,很明显,这个行业需要严格的测试来证明应用程序按承诺工作并保持安全。我们开始时只有一名专注于区块链的工程师,出于兴趣而从事这项工作。今天我们有 10 个。即使有这么多安全工程师,Trail of Bits 仍然必须对新客户有选择性,不幸的是,我们拒绝了很多人。我们选择构建基础技术、承担风险或向我们提出有趣智力挑战的客户。

The Merkle:请介绍一下您在以太坊上通过模糊测试所做的工作,特别是您在 3 月初发布的 EVM Smart Fuzzer Echidna。在您的博客上,您说:“这是有史以来第一个针对智能合约的模糊测试程序,具有抽象状态机建模和自动最小测试用例生成等强大功能。这意味着什么?

Guido:模糊测试程序试图违反有关代码将如何作的假设。在本例中,我们将生成示例输入以查找 Ethereum 智能合约中的意外问题。Echidna 对棘手的输入很聪明,可以以非常高的吞吐量生成数百万个测试用例来对智能合约进行压力测试。程序的潜在输入可能很大,因此一个好的模糊测试程序必须既快速又聪明地发现哪些潜在输入比其他输入更有效地破坏程序。针鼹可以做这两件事。如果您正在使用典型的编译代码(如 C++),那么您正在寻找崩溃。但是,在 Solidity 或 EVM 字节码中,您并不知道坏东西到底是什么样子。这可能是钱包耗尽或访问他人的数据。Echidna 有一种富有表现力的语言,可让您自定义在这些情况下它要查找的属性。

The Merkle:所以,从本质上讲,它试图让必须永远是真实的事情变成虚假的?

Guido:是的,Echidna 会在工作时跟踪它测试的代码量。当它的测试接近 100% 时,它几乎尝试了任何人可以对程序执行的任何作。它疯狂地四处乱窜,试图找到方法来做你不想做的事情,测试它是否会让你的应用程序无法正常工作。这种测试可以高度保证您的程序不会做一些意想不到的事情,比如失去所有的以太币。Echidna 最好在添加新功能后使用。为它编写测试用例,Echidna 将尽最大努力破解代码。

The Merkle:当像 Golem 这样的人去找你进行智能合约审计时,你会怎么做?

Guido:作为起点,我们询问产品的使用、架构、实现和测试。然后,我们询问他们的噩梦场景。我们将使用该基础来搜索它们可能成为现实的场景。我们每周都会与工程师会面,审查我们发现的内容,讨论可能的修复方法,并确保我们审查的问题是正确的。这个过程通常需要 2 到 8 周。最后,我们写一份审计报告,列出我们所有的高级问题以及我们发现的具体缺陷。例如,他们编写代码的方式或代码库的某些部分是否存在应稍后检查的系统性问题?最重要的是他们修复了识别的代码。在最后的汇报中,我们希望他们拥有充分解决所有问题的工具和知识。

The Merkle:为什么这些审计如此重要?

Guido:使用这项技术时失败的风险和后果很高。区块链技术是非常无情的。交易是不可逆的,参与者是伪匿名的,这使得黑客很容易窃取加密货币而不受惩罚。每个新应用程序也有其自己的一组业务风险。例如,如果您依赖于稳定币不改变价值,但有人可以按需纵其价格比率,那么这是一个安全漏洞,可能会让某人赚到数百万美元。我们必须深入了解我们合作的每个项目,以发现这些特定于应用程序的缺陷。

The Merkle:是的,最近对 MyEtherWallet 的网络钓鱼攻击再次提醒我们,黑客有能力在这个领域窃取资金。您建议采取哪些步骤来安全地开发智能合约?

Guido:许多开发人员急于编写 Solidity,因为它看起来像 JavaScript,这使得它变得简单和熟悉。在开始之前,我建议您仔细阅读 Solidity 语言文档和我们的“Not So Smart Contracts”参考,以从其他人的错误中学习。这门语言和整个领域都是一项正在进行的工作,因此了解其基础是值得的。在编写代码时,请使用可用的最佳工具来确保每一行都正确无误:使用最新的 Solidity 编译器并查看警告,编写高覆盖率单元测试,使用 Echidna 对代码进行模糊测试,并使用我们的另一个工具 Manticore 以符号方式执行它,以验证它是否正常工作。如果您真的在编写高风险代码,您应该与专家交谈。即使您已经完成了所有正确的步骤,您也需要专业人士,考虑到存在的风险。这些仍处于早期阶段,大多数开发工具都没有得到完善。我们在工具上投入了大量资金,以帮助每个人都能更轻松地做到这一点。

The Merkle:听起来,尽管它很受欢迎,但在 Solidity 中编码存在一些严重的问题。您能解释一下吗?

Guido:Solidity 重新引入了我们从其他编程语言中消除的 bug 类。即使是 C、C++、Go、Rust 和 Swift 等语言也已经消除了数十个问题,而 Solidity 正在重新引入这些问题。当糟糕的 Solidity 代码在 EVM 中运行时,每个人也会付出经济成本;在智能合约上运行低效的代码需要花费真金白银(以 Gas 为单位)。我真的很期待迁移到 WASM(Web Assembly Stacked Virtual Machine)。如果 WASM 取代 EVM,它将允许社区在 LLVM(低级虚拟机)上构建工具。这将是一个巨大的好处,因为 LLVM 是一个更加成熟的编译器工具链,支持以太坊也可以使用的多种语言、优化和分析。关于 Solidity 语言本身的寿命,我认为在以太坊的早期阶段,[使用] 像 Solidity 这样为易于采用而构建的语言有一个明显的好处。然而,既然我们已经看到了什么是可能的,那么是时候考虑一种更安全、更高效、更可靠的方法来构建智能合约了。

展开阅读全文
更多新闻