Atheris,Python代码测试工具包

谷歌揭幕 最近发布 Atheris项目,这是 一套开源工具 专业的 用于对Python代码进行模糊测试 和用C / C ++编写的CPython扩展。

萨尔瓦多PROYECTO 使用基于libFuzzer的引擎 并且可以与Address Sanitizer和Undefined Behavior Sanitizer工具一起使用,以检测其他错误。 该代码在Apache 2.0许可下打开。

关于Google Atheris

用Google Atheris的话来说,它是一个工具包,可用于自动查找Python代码和本机扩展中的错误。 Atheris是一个“覆盖率驱动”的模糊器,这意味着Atheris将在观看节目的同时反复尝试各种输入,并尝试寻找有趣的路径。

支持Python 2.7和Python 3.3+的代码审查,但要获得完整的指导性覆盖,建议使用Python 3.8和3.9分支,它们现在支持按操作码进行操作码统计。

正在进行中, Atheris列出输入数据的可能组合并生成报告 所有检测到的故障和未检测到的异常。

例如,当检查Atheris中的YAML解析库时,发现某些YAML构造(例如指定“ -_”而不是整数值或使用列表代替键)会引发意外的异常,而不是YAMLErrors标准错误。

模糊测试是发现编程错误的众所周知的技术。 这些可检测的错误中有许多都具有严重的安全隐患。 使用此技术时,Google已发现成千上万个安全漏洞和其他错误。 传统上在诸如C或C ++之类的本地语言中使用模糊测试,但是去年我们创建了一个新的Python模糊测试引擎。 今天,我们发布了开源的Atheris模糊引擎。

雅典娜 也可以用来识别行为差异 针对相同任务的库。 例如,对执行国际化域名解码任务的Python软件包“ idna”和库“ libidn2”的摘要检查发现,它们并不总是产生相同的结果。

Atheris的最佳用途之一是用于差分扩散器。 这些是模糊测试,目的是寻找打算做同一件事的两个库的行为不同。 与Atheris捆绑在一起的示例模糊器之一正是这样做的,目的是将Python的“ idna”软件包与C的“ libidn2”软件包进行比较。

特别是,如果域使用Unicode序列,则“ idna”和“ libidn2”会将国际化域名转换为其他主机。

通常,Atheris在纯Python代码中很有用,只要它能够表达什么是“正确的”行为,或者至少表达出哪些行为绝对是不正确的。 这可能与评估库输出准确性的模糊器中的自定义代码一样复杂,也可能与检查是否未引发意外异常一样简单。

重要的是要考虑到 模糊测试生成输入数据的各种随机组合的流, 接近实际数据(例如带有随机标记参数的html页面,标题异常的文件或图像等),并修复过程中可能出现的故障。

如果任何序列导致异常或与预期的响应不匹配,则此行为很可能表明存在错误或漏洞。

最后,如上所述 Atheris适用于2.7和3.3+版本的Python代码, 尽管Google强烈建议使用3.8+和为CPython编写的本机扩展。

Windows尚未受支持的操作系统之中,因此该引擎目前仅对Linux和Mac OS X用户感兴趣。

要在这些平台上使用它,开发人员必须安装最新版本的Clang编译器前端。

如果您想了解更多,您可以在 以下链接。


成为第一个发表评论

发表您的评论

您的电子邮件地址将不会被发表。 必填字段标有 *

*

*

  1. 负责数据:MiguelÁngelGatón
  2. 数据用途:控制垃圾邮件,注释管理。
  3. 合法性:您的同意
  4. 数据通讯:除非有法律义务,否则不会将数据传达给第三方。
  5. 数据存储:Occentus Networks(EU)托管的数据库
  6. 权利:您可以随时限制,恢复和删除您的信息。