第 9 集:Adrian Taylor in Mountain View(2019 年 12 月)
上一集
您可能会发现,您需要修复由 Google Cloud 团队发现的高优先级安全 bug, ClusterFuzz。Google 优惠是什么?你应该认真看待这些错误吗?如何 需要帮助?
ClusterFuzz 将输入源提供给 Chrome 并监测崩溃。部分匹配 Chrome 版本启用了额外的检查功能,例如 AddressSanitizer, 用于查找内存安全错误。
ClusterFuzz 会根据崩溃位置分配组件,而 根据崩溃类型以及崩溃是否发生在沙盒环境中 过程。例如,释放后使用堆将是非常严重的,除非 它位于浏览器进程中,在这种情况下,它至关重要(没有沙盒可限制 影响!):
class Foo {
Widget* widget;
};
void Foo::Bar() {
delete widget;
...
widget->Activate(); // Bad in the renderer process, worse in the
// browser process. Obviously, real bugs are
// more subtle. Usually.
ClusterFuzz 会通过模糊测试工具或外部提交的 bug 生成输入。
一些模糊测试工具由 libFuzzer 提供支持,它会将输入演化为
提高代码覆盖率有人能理解输入语言的语法
已转换为 protobufs
。一旦 ClusterFuzz 发现崩溃问题,就会尝试
尽可能减少输入测试用例,甚至使用二分法查找违规提交。
它会找到很多...
您可以在以下方面提供帮助:
- 对对象生命周期持怀疑态度整数溢出。
- 添加新的模糊测试工具,尤其是在处理不可信的数据或 IPC 时使用(请参见 链接(通常为 <20 行代码)。
- 修复 ClusterFuzz 报告的 bug:其严重级别启发式算法可信任,因为 基于现实世界的可利用性:即使是 单字节溢出会导致由 。
资源
- Chromium 中的模糊测试:如何将新的模糊测试工具添加到 ClusterFuzz,或者仅仅因为您希望 发现了不起的漏洞。
- Chrome 模糊测试程序计划更新和方法指南:此外,模糊测试工具 由外部贡献者撰写了解他们的经历以及简单易行的程度 快速上手