Google开源Python模糊测试工具Atheris
admin
2023-08-03 02:35:20
0

目前不清退的交易所推荐:

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.myts3cards.com/cn/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!

2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183

 

全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031币安一向重视合规,早在2017年就已经退出中国大陆市场,注册不了请用香港IP地址,居住地选中国,认证照旧,邮箱推荐如gmail、outlook。

Google最近宣布开放用于Python的新模糊测试引擎。新的模糊器Atheris致力于查找Python代码中的错误以及Python 2.7和Python 3.3+中的本机扩展。Atheris可以与Address Sanitizer和Undefined Behavior Sanitizer工具结合使用,后者可以检测内存损坏错误和不确定行为(例如,缓冲区溢出,未对齐或空指针)。

Google开源Python模糊测试工具AtherisGoogle开源Python模糊测试工具Atheris

Google解释了Atheris希望为模糊测试引擎的当前空间增加价值:

模糊测试是一种发现编程错误的众所周知的技术。这些可检测的错误中有许多具有严重的安全隐患。Google使用此技术发现了数千个安全漏洞和其他错误。传统上,模糊处理是在C或C ++等本地语言上使用的,但是去年,我们构建了一个新的Python模糊处理引擎。

Atheris可以在Python代码(Python 2.7和Python 3.3+,强烈建议使用Python 3.8+,以更好地覆盖代码)上使用,也可以在为CPython编写的本机扩展中使用。在对本机代码进行模糊处理时,可以将Atheris与Clang的Address Sanitizer或Undefined Behavior Sanitizer结合使用,以捕获其他错误。

Python代码模糊化的示例如下:

import atheris  
import sys  
  
def TestOneInput(data):  
if data == b\"bad\":  
raise RuntimeError(\"Badness!\")  
  
atheris.Setup(sys.argv, TestOneInput)  
atheris.Fuzz()

TestOneInput被测试的功能。Atheris将使用自动生成的输入反复调用被测函数,直到发生崩溃或异常。

该函数允许一个输入(data),它是一个字节容器。树蝰属提供了FuzzedDataProvider该支撑件具有附加输入的形状模糊化(例如,字符串,列表,整数,浮点数,间隔)。Atheris可以与基于属性的测试工具Hypothesis结合使用,以编写模糊线束,并将引起故障的输入缩小到较小的可再现故障案例。假设还提供了高级输入生成策略(例如,电子邮件,字典,日期,正则表达式),可以补充Atheris的模糊数据提供程序。

Atheris是一个覆盖率指导(灰色框)的模糊测试引擎。Atheris利用ClanglibFuzzer来测试被测代码并收集覆盖率信息。然后,Atheris动态尝试生成输入,以增加先前输入序列生成的代码覆盖率。

虽然Atheris负责测试用例的生成和测试执行,但程序员有责任识别被测函数的错误行为。这可以通过使用交叉引用预言(差异模糊)来实现。在这种方法中,与更通用的变质测试方法一样,在相同的输入上运行具有相同规范的两个实现,并选择不同的结果进行分析。

如果没有测试oracle或变态属性,程序员仍然可以使用绒毛来检测故障。当被测函数引发意外异常或故障检测机制失败时,就是这种情况。

Google提供了以下示例,说明检查意外异常的有用性:

例如,我们在Atheris上测试过的一个YAML解析库说它只会引发YAMLErrors。但是,yaml_fuzzer.py检测到许多其他异常,例如ValueError尝试将“ -_”解释为整数,TypeError尝试将列表用作dict中的键。(错误报告。)这表明解析器中存在缺陷。

差异模糊测试和模糊测试是功能强大的自动化测试技术,已发现现有软件中的许多错误-C编译器,Java反编译器,防病毒软件等。尼克·菲茨杰拉德(Nick Fitzgerald)最近在InfoQ的一次访谈中解释了生成测试如何允许发现其他方法不易发现的错误:

基本单元测试会遗漏很多东西,在这里我们写出一些固定的输入并断言我们的程序会产生预期的输出。我们忽略了一些代码路径,或者我们无法执行某些程序状态。[…]

测试伪随机输入可通过为系统提供“意外”输入来帮助我们避免自己的偏见。它有助于我们发现整数溢出错误或病理输入,这些错误或病理输入使(不受信任且可能具有敌意的)用户触发内存不足的错误或超时,这些漏洞或超时可能被用作拒绝服务攻击的一部分。

菲茨杰拉德(Fitzgerald)报告说在wasmparser箱子的验证器中发现了错误。谷歌最近报告说,参加谷歌OSS实习计划的50名实习生报告了150多个安全漏洞和750个功能错误。

Atheris是Apache 2.0许可下的一个开源项目。Atheris支持Linux(32位和64位)和Mac OSX。欢迎提供帮助,并且必须遵循相应的准则。

目前不清退的交易所推荐:

1、全球第二大交易所OKX欧意

国区邀请链接: https://www.myts3cards.com/cn/join/1837888   币种多,交易量大!

国际邀请链接:https://www.okx.com/join/1837888 注册简单,交易不需要实名,新用户能开合约,币种多,交易量大!

2、老牌交易所比特儿现改名叫芝麻开门 :https://www.gate.win/signup/649183

 

全球最大交易所币安,国区邀请链接:https://accounts.binance.com/zh-CN/register?ref=16003031币安一向重视合规,早在2017年就已经退出中国大陆市场,注册不了请用香港IP地址,居住地选中国,认证照旧,邮箱推荐如gmail、outlook。

相关内容

热门资讯

Windows 11 和 10... Windows 11/10 文件夹属性中缺少共享选项卡 – 已修复 1.检查共享选项卡是否可用 右键...
Radmin VPN Wind... Radmin VPN 是一款免费且用户友好的软件,旨在牢固地连接计算机以创建一个有凝聚力的虚拟专用网...
如何修复 Steam 内容文件... Steam 内容文件锁定是当您的 Steam 文件无法自行更新时出现的错误。解决此问题的最有效方法之...
在 Windows 11 中打... 什么是链路状态电源管理? 您可以在系统控制面板的电源选项中看到链接状态电源管理。它是 PCI Exp...
iPhone 屏幕上有亮绿色斑... iPhone 是市场上最稳定的智能手机之一,这主要归功于专为它们设计的 iOS 操作系统。然而,他们...
事件 ID 7034:如何通过... 点击进入:ChatGPT工具插件导航大全 服务控制管理器 (SCM) 负责管理系统上运行的服务的活动...
QQ浏览器怎么制作简历 QQ浏览器是腾讯公司开发的一款极速浏览器,支持电脑,安卓,苹果等多种终端;更快的浏览体验,更安全的浏...
Hive OS LOLMine... 目前不清退的交易所推荐: 1、全球第二大交易所OKX欧意 国区邀请链接: https://www.m...
Apple Watch Ult... 所有运行 watchOS 7 或更高版本的 Apple Watch 型号都包含一项名为“优化电池充电...
统信UOS每次开机后不直接进入... 统信UOS每次开机后不直接进入系统而是进入到recovery模式 按方向上键选择UOS 20 SP1...