JavaScript Fuzzing (模糊测试):如何利用 Grammar Fuzzing 或 Coverage-Guided Fuzzing 发现 JavaScript 引擎的漏洞?

JavaScript 引擎漏洞挖掘:Fuzzing 的艺术 各位靓仔靓女,老少爷们,欢迎来到今天的 JavaScript 引擎漏洞挖掘讲座!今天我们要聊聊如何用一些“不正经”的手段,来发现 JavaScript 引擎里那些藏得深深的 bug。 别害怕,我说的“不正经”指的是 Fuzzing (模糊测试)。这是一种让程序自己找 bug 的黑科技,简单来说,就是给程序喂各种各样的“奇怪”输入,看看它会不会崩溃、卡死或者做出一些“不正常”的行为。 今天,我们重点关注两种 Fuzzing 技术:Grammar Fuzzing 和 Coverage-Guided Fuzzing。它们就像两把不同的宝剑,可以帮助我们砍掉 JavaScript 引擎里的各种“妖魔鬼怪”。 一、Grammar Fuzzing:按剧本演出的“捣蛋鬼” 想象一下,你想测试一个编译器。如果随机生成一堆二进制数据喂给它,那效果肯定不好,因为编译器压根就看不懂。这时候,Grammar Fuzzing 就派上用场了。 Grammar Fuzzing 的核心思想是:按照目标语言的语法规则,生成有效的、但又可能包含各种边界情况的输入 …