当前位置: 首页 > 知识库问答 >
问题:

JavaScript应用程序基于覆盖的模糊化

扈翰
2023-03-14

我看了一下这个老问题中提到的工具,但是那些做javascript的工具似乎没有提到任何关于覆盖率分析的内容。尽管radamsa提到了可选地将其与覆盖分析配对,但我还没有找到任何关于如何实际做到这一点的文档。

一个如何用覆盖指导模糊测试Java脚本(在浏览器中)应用程序?

共有1个答案

苏涛
2023-03-14

JavaScript引擎的模糊化引起了大量的关注,因为浏览器用户的数量大约为40亿。已经做了一些工作来查找JS引擎中的bug,包括流行的大型引擎,如v8、webkit、chakracore、gecko,或者一些小型嵌入式引擎,如jerryscript、QuickJS、jsish、mjs、MUJS。

由于AFL提供的突变机制对JS文件并不实用,如bitflip很难成为一个有效的突变,所以使用AFL查找BUG是非常困难的。由于JS是一种结构化语言,所以有几个作品使用ECMAScript语法来突变/生成JS文件(种子):

LangFuzz解析示例JS文件并将其拆分为代码片段。然后重新组合这些片段以生成测试用例。

Dharma是一个基于生成的、上下文无关的语法模糊器,基于给定的语法生成文件。

Superion在JS文法的指导下使用基于树的变异扩展AFL。

上面的工作可以很容易地通过语法检查,但在语义检查上失败。大量生成的JS种子在语义上是无效的。

DIE使用方面保持变异来保持CVE的期望属性。它还使用类型分析来生成语义有效的bug。

一些作品关注于变异中间表征。

Fuzzilli是一种基于红外层变异的覆盖引导模糊算法。IR上的突变可以保证语义的有效性,并且可以转移到JS上。

 类似资料:
  • 有一款Spring Boot 2 app就是这样的结构: 此外,模块1依赖于模块2,在pom.xml部分中指定。 谢谢你!

  • 我已经开发了azure定时器触发函数。我从功能应用程序的应用程序设置中获取计时器时间表,如下所示。 函数. json 这对于给定的静态时间表来说工作正常。但是当用户需要更改时间表时,该时间表应该能够根据另一个Web应用程序的用户要求进行更改。 我正在努力从外部应用程序动态地更改计划参数。我尝试的是部署一个ARM模板,从下面的ARM模板注入新的时间表值。 但是,这不是重写现有的appSettings

  • 我想开发一个API,使非程序员能够设置电子邮件属性,例如端口或主机。我发现我可以使用Spring Boot注释@ConfigurationProperties在类中加载属性。 我可以使用getPort检索属性,并使用setPort进行设置。 但是,使用此方法可以计算应用程序中的实际值。使用setPort或setHost时,属性文件不会更改。因此,当我重新启动应用程序时,更改会丢失。是否有办法实际更

  • null 有人知道实现这些特性的项目吗?(最好是Java:))

  • 我正在尝试在外部tomcat上运行camel应用程序。有2个应用程序。属性文件存在于我的项目中,一个在src/main/resources下,另一个在src/test/resources下。当我使用maven install命令创建war文件时,它使用应用程序。来自src/main/resources的属性文件(这是必需的),但当我在eclipse中使用tomcat启动应用程序时,它正在使用app

  • 问题内容: 有没有人有过重写JavaScript函数的经验? 哪些浏览器支持此功能? 哪些浏览器版本支持此功能? 覆盖该功能有哪些危险? 问题答案: 绝对是“受支持的”。这是您的网页,您可以使用它进行任何操作。 我已经这样做了,可以在不修改库的情况下而是通过潜入事件来跟踪分析事件。 使用代理模式: 如果需要,您也可以绕过对原始函数的调用(代理)