【问题标题】:Why Fuzz images?为什么要模糊图像?
【发布时间】:2023-03-08 13:16:01
【问题描述】:

我正在阅读有关模糊测试的信息。我有一些关于模糊测试的基本问题。我搜索但找不到任何好的解释。

  1. 为什么图像文件在模糊测试中很流行和常见?使用图片文件有什么好处?
  2. 为什么 png 文件在 fuzz 中很流行和常见?
  3. 为什么 Libpng 在模糊测试方面很受欢迎和普遍?
  4. 对于初学者来说最好用 libpng 模糊 png 图像吗?为什么?

如果有人能回答,那对我很有帮助。 提前谢谢你。

【问题讨论】:

    标签: png libpng fuzzing fuzzer fuzz-testing


    【解决方案1】:
    1. 你模糊的不是图像文件,而是解析这些文件的软件。通常 开发人员不编写代码来解析图像,而是使用第三方 libpng 之类的库。作为开发人员,您无需进行第三次模糊测试 派对库,只有你项目的代码。作为证券 工程师,您可以对其进行模糊测试。

      设置这样一个开源库的模糊测试很容易 - 你可以构建它 静态检测,创建一个调用 它并使用易于设置的模糊器(如 afl)对其进行模糊测试。这和 事实上,此类库被广泛使用,因此这些库中的错误可能 对很多应用程序有很大的影响,使它们成为一个很好的目标 用于模糊测试。

      但图像文件并不是唯一被广泛使用并具有 流行的图书馆来处理它们。大多数模糊器不知道输入 测试二进制文件的结构。他们主要使用输入突变 位/字节级别的技术 - 更改某些位/字节的值 输入,将其提供给测试的应用程序并观察它 行为。当输入高度结构化时,模糊器无法 深入代码测试。例如测试浏览器馈送 html 文件,需要一个模糊器来创建具有 正确的词汇和句法结构。通常的代码 词法/句法处理是基于语言自动生成的 语法。通过更改 html 中的位/字节,您很可能会变坏 会被这样的自动生成代码拒绝的关键字, 因此主要测试这段代码而不是更深入。图像文件 通常不是高度结构化的并且更容易深入模糊,因此 可以用更好的覆盖率进行模糊测试。

      模糊小输入也比大输入更快 - 更少 位要改变。创建一个小图像文件很容易 将小图像作为种子,而不是例如 html 文件。

    2. 我不知道 png 文件是否比其他二进制媒体文件更适合进行模糊测试,但它们的结构可以包含多个不同类型的标头/块,这会导致代码中出现更多不同的处理路径,从而使其更有可能有错误。

    3. 正如我所说,它是开源的、广泛使用的、易于设置并且可以快速进行模糊测试 - 运行小型应用程序比浏览器快得多。

    4. 我不确定是否有“最佳”标准,但它很简单,因此对初学者有好处。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-12-17
      • 1970-01-01
      • 2013-10-19
      • 2019-10-23
      • 2013-12-13
      • 2015-08-03
      • 1970-01-01
      相关资源
      最近更新 更多