Cointime

扫码下载App
iOS & Android

模糊测试:令人惊叹的 L1 审计工具

媒体

作者:Oleh Malanii Bartosz Barwikowski 编译:Cointime.com 237

第一层(L1)协议是区块链系统的骨干,对共识算法、交易格式和数据结构至关重要。然而,测试 L1 协议是一项复杂而具有挑战性的任务,因为它们的组成部分错综复杂,相互依赖。在这篇文章中,我们将讨论测试 L1 协议的困难,并探讨模糊法如何成为发现和减轻区块链系统协议层安全漏洞的有效解决方案。

模糊测试概述

1、什么是模糊测试?

模糊测试是一种区块链协议和智能合约的自动测试技术。它产生极端数量的半随机输入,并将其反馈给被测系统。模糊测试的目标是通过触发系统中的意外或无效行为来发现安全漏洞。

2、L1 模糊法

模糊测试是第 1 层审计的一个了不起的工具,特别是在测试虚拟机时,因为它可以自动化许多步骤,以确保 L1 的安全性和稳定性。最重要的是,数据并不像它看起来那样随机。Fuzzer 使用代码覆盖来检查哪些输入是有效的,哪些是无效的。通过这样做,它可以发现真正有价值的见解,这些见解是人眼无法发现的。

3、智能合约的模糊处理

对于智能合约,模糊处理涉及分析 ABI 或字节码,为其功能生成随机的有效输入,用这些输入执行合约,并检查结果以识别和报告任何弱点。

模糊测试的主要挑战:建立一个 Fuzz 目标

模糊测试是一种强大的测试方法,尤其是在大规模使用时,但它需要大量的资源和时间。建立一个模糊目标是最大的挑战,因为它需要大量的手工工作:

1、对目标进行标记

2、使用特定的格式

3、把所有东西上传到云端

为了确保高度的一致性并节省我们的时间,我们用一个叫 Hacken-Fuzz 的工具自动构建目标。

Hacken-Fuzz 工具可以自动完成设置模糊目标的所有过程。它适用于 C、C+、Rust、Go、JavaScript、JVM、Swift 和 Python。Hacken-Fuzz 之所以有效,是因为它能同时运行 50 台服务器,这要归功于我们基于 OSS-Fuzz 的基础设施。

使用案例: 何时使用模糊测试是合理的

有了正确的基础设施,你可以用模糊测试做一些惊人的事情,也就是说,用它来检测那些不可能人工检测的代码错误。这些包括导致节点崩溃的关键弱点,如无限循环、缓冲区溢出、不受控制的内存分配等。找到并解决这些漏洞可以保护区块链免受广泛的协议层攻击,如远程攻击、51% 和竞赛攻击。

对于智能合约,在整数溢出/下溢、拒绝服务的可能性、tokenomics 验证、gas 相关问题、委托调用验证和重入性等方面,模糊测试可能特别有用。

在执行大型、耗时的操作或验证人工分析以识别假阳性和被忽视的问题时,模糊测试尤其有用。虽然模糊测试是一种有价值的测试工具,但不应被认为是彻底审计的全面替代。

模糊测试能解决哪些挑战,以及如何解决?

在 Hacken,我们认为模糊测试是探索 L1 协议中安全漏洞的有效方法,原因如下。

1、模拟用户行为。

模糊法可以通过生成模仿用户行为的随机输入来模拟真实世界的场景。这意味着模糊法可以测试系统对各种攻击的鲁棒性,包括那些难以预测的攻击。

2、寻找隐藏的漏洞。

Fuzzing 可以发现其他测试方法可能会错过的安全漏洞。例如,人工测试或静态分析可能无法发现某些类型的逻辑错误或采取极端输入的竞赛条件。

3、L1的可扩展性。

模糊测试可以扩展到处理 L1 协议的复杂性及其相互依赖的组件。Fuzzing 可以产生许多输入并探索各种执行路径,增加发现安全漏洞的机会。

模糊测试的实际应用:最小值的案例

Hacken 模糊测试在我们作为审计师的日常工作中证明了其价值。我将分享我们的一个客户Minima 的区块链协议审计的一些细节。Minima 是一个 Java 项目,完全从零开始为智能手机构建区块链。他们自己开发了所有东西,包括虚拟机和它的语言。我们用模糊器发现了十几个关键问题,后来经过人工验证。我们的客户修复了所有的漏洞,所以我们可以在这里安全地讨论它们。

我们使用模糊测试来发现以下关键漏洞:

1、使用常量表达式的不可达退出条件的循环,又称无限循环。

2、两个与NULL指针解除引用有关的问题。

3、堆栈缓冲区溢出,原因是智能合约的递归解析使用了堆栈的所有空间,导致虚拟机崩溃。

4、另一个堆栈缓冲区溢出是由于缺乏括号限制而导致崩溃。

5、不受控制的内存分配,在十六进制值中有位移。

6、在电源功能期间,内存分配的大小值过大。

7、在通用函数中递归替换给定脚本的参数时,资源消耗会使节点崩溃。

8、多次调用 concat 函数时,不受控制的内存分配。

9、替换函数也有类似的问题,允许字符串呈指数级增长。它用 AA 替换了 "A",所以做得足够长,就会崩溃内存。

10、在 subset 函数中出现整数溢出,因为有可能指定起始位置高于结束位置。创建一个巨大的字符串,消耗了所有的内存。。

这些都是关键错误(即危险到足以使虚拟机崩溃)。人工是无法做到的,因为只有机器可以把测试做到极致,比如连接一个占用 2GB 内存的字符串或检查无限的数字。

模糊测试的缺点

尽管模糊测试有很多优点,但它并不是一剂灵丹妙药;你需要一个全面的审计和一个有知识的开发人员来审查和验证代码错误。最重要的是,模糊器不会在一开始就发现所有的错误。以下是模糊处理的一些最紧迫的挑战:

1、你需要在发现问题后进行修复,否则模糊测试就不会发现其他问题。

模糊测试的问题是,在它发现一个关键问题后,你必须修复它,否则模糊测试会一次又一次地绊倒在同一个问题上,无法揭示代码库可能存在的所有问题。显然,我们不希望这样,所以你必须边走边修复每个检测到的项目。所以你修复了这个问题,然后再去模糊处理。你可能认为这是一个问题,但这也是一个很好的推动因素,实际上是为了解决发现的弱点。

2、对于复杂的 bug 来说是有问题的。

模糊法很难适用于需要很多步骤才能执行的 bug。例如,如果一个 bug 需要三个事务来执行,模糊法可能无法检测到它,因为产生这样的输入是很难的。

3、耗费时间。

生成许多输入并探索各种执行路径会花费很多时间,特别是对于复杂的 L1 协议。另外,我们也不知道每种类型的漏洞会花费多长时间。

4、可能会错过逻辑错误(除非是专门设计的)。

如果系统的设计不是为了检测逻辑错误,那么模糊测试可能不会发现逻辑错误。例如,如果系统没有适当的错误处理机制,模糊法可能无法检测到导致意外行为的逻辑错误。

5、有状态组件的问题。

对有状态的组件进行模糊测试需要跟踪系统的状态,这可能是一个挑战,特别是对于复杂的L1 协议。很难判断模糊器是否具备检测问题的能力。

6、对多线程应用程序来说是个问题。

最后,模糊处理很难应用于多线程应用程序,因为它需要跟踪系统的并发性,这可能是一个挑战,特别是对于复杂的 L1 协议。

结论

模糊化是区块链审计的一个了不起的工具,在测试虚拟机时特别有用,因为它可以自动化许多过程。在半随机测试中,没有一个人可以击败 fuzzer。尽管如此,你仍然需要 50-100 台以上的服务器来使其有效,当然,还需要设置目标的专业知识。

然而,不要误解我的意思——模糊测试并不能取代人工审查,只能使其更加有效。你仍然需要一个知识渊博、经验丰富、值得信赖的区块链审核员来验证模糊测试中发现的问题,检测随机输入生成所不能发现的问题,并为所有错误推荐适当的代码修复。

评论

所有评论

推荐阅读

  • 5月8日晚间要闻速递

    1. BTC跌破62000美元

  • 加密初创公司Lagrange Labs融资 1320 万美元

    Peter Thiel 的 Founders Fund 领投了加密初创公司 Lagrange Labs 一轮 1320 万美元的种子轮融资。除了 Founders Fund 之外,Lagrange 的种子轮融资还包括 Archetype Ventures、1kx、Maven11、Fenbushi Capital、Volt Capital、CMT Digital、Mantle 和 Ecosystem 的参与

  • 加密一级市场交易商Arbelos完成2800万美元融资,Dragonfly领投

    Arbelos 完成 2800 万美元融资,本轮融资由 Dragonfly 领投、FalcolnX、Circle、Paxos、Polygon 和 Deribit 参投。Arbelos Markets 将主要专注于机构参与者的衍生品和场外交易,为对冲基金和风险投资公司等公司提供交易流动性,作为期权和期货等热门产品的交易对手。

  • 跨链互操作协议Owlto Finance完成800万美元战略轮融资,Bixin Ventures等领投

    跨链互操作协议 Owlto Finance 宣布完成 800 万美元战略轮融资,本轮融资由 Bixin Ventures 和 CE Innovation Capital 联合领投,Presto、Hailstone Labs、Skyland Ventures、Blocore、SNZ Capital、BESTO、Kroma、Coinseeker.co、Stratified Capital、X21 Digital、Maxx Capital、Incubate Fund、GSR、ChainCatcher 等跟投。 本轮融资主要用于加速 AI 意图跨链产品升级、模块化跨链互操协议开发、全球化运营和市场营销、全链流动性方案 V2、资本化市场运作等。

  • 英国新银行Monzo获得1.9亿美元融资,Hedosophia和CapitalG领投

    英国新银行Monzo获得1.9亿美元融资,Hedosophia和CapitalG(Alphabet的独立成长基金)领投,最新的融资使Monzo今年的融资总额达到6.1亿美元,融资后的估值为52亿美元,Monzo首席执行官兼联合创始人TS Anil表示,计划利用这笔现金打造新产品,并加快国际扩张计划。

  • 香港证监会:公众需提防 Quantum AI 涉嫌从事虚拟资产相关欺诈行为

    香港证监会告诫公众提防 Quantum AI 涉嫌从事虚拟资产相关欺诈行为,据悉 Quantum AI 声称利用其相关人工智能技术来提供加密货币交易服务。 证监会怀疑,Quantum AI 在其网站和社交媒体上使用以人工智能制成、冒充埃隆·马斯克先生(Mr Elon Musk)的深度伪造影片及照片,借此欺骗公众,让他们以为马斯克先生 是Quantum AI 的相关技术的开发者。 香港警务处已应证监会的要求,采取行动封锁 Quantum AI 的网站并移除相关社交媒体专页。 虽然警方已采取行动,但公众应提防骗徒可能持续建立域名相似的网站及社交媒体专页。

  • SEC认为Ripple并未违反任何规则但未来仍可能对其采取类似行动

    Ripple Labs和美国证券交易委员会(SEC)在法律斗争中取得了重大进展,SEC在诉讼的补救阶段提交了最终答复。在最近对补救措施简报的回应中,SEC对Ripple的主张提出了质疑,即该区块链初创公司的行为并不鲁莽,而且XRP的法律地位不应该存在“广泛的不确定性”,尽管法院此前拒绝了这种“公平通知”辩护。 尽管自2020年发起XRP诉讼以来,Ripple并未违反任何规则,但SEC仍对Ripple未来是否可能采取类似行动保持立场。SEC认为,Ripple保证在诉讼后改变其行为并不能成为避免禁令的理由。根据SEC的说法,Ripple声称遵循法律指导并根据诉讼命令重组未来XRP销售的说法具有误导性。SEC认为Ripple误解了该命令,并且未能接受其对合规性的影响。

  • Messari发布Fantom Q1报告:市值环比增长101%,DeFi TVL环比增长59%

    Messari近日发布Fantom 2024年Q1状态报告,要点如下: ·Fantom在多个关键指标上都实现了环比增长,包括市值(+101%)、日均活跃地址(+24%)、美元计价的DeFiTVL(+59%)、稳定币市值(+39%)和日均DEX交易量(+64%); ·FTM总质押量环比增长17%,达到13亿枚,合格供应质押量占比也环比增长16%,至44.6%; ·今年3月,Fantom的DEX月度交易量在过去一年中首次超过10亿美元,3月DEX日均交易量为3790万美元,比2月(570万美元)高出近7倍,比1月(660万美元)高出6倍; ·3月25日,Fantom基金会首席执行官Michael Kong公布了Sonic初步发布计划(计划24年Q3发布),计划包括规范桥接、简化的质押系统、构建者grants、奖励计划、规范稳定币等; ·Sonic Labs孵化器项目的五名获胜者在Q1中被选出。每个项目将获得20万枚FTM,并在Sonic主网上线之前获得开发支持。

  • OpenSea上以太坊NFT日交易量跌至两年低点,较峰值跌超99%

    5月8日消息,前Proof研究员punk9059在X平台表示,目前,OpenSea每天在以太坊NFT市场上的交易量约为600枚ETH,这是自2021年5月NFT牛市开始之前的最低水平。这一数字比2022年5月的峰值下降了99.1%,当时OpenSea每天交易量达到了66,000枚ETH。

  • ETH跌破3000美元

    行情显示,ETH跌破3000美元,现报2999.41美元,日内跌幅达到2.08%,行情波动较大,请做好风险控制。