开源软件已经成为众多现代软件产品的构建基础。多年以来,开发人员越来越依赖可重复使用的开源组件开发其应用程序。在上述背景下,保证开源代码组件拥有优秀的安全性和可靠性已经成为一项核心要求,因为其中存在的任何缺陷都有可能给最终构建软件带来严重威胁。

谷歌高度关注开源生态系统安全性,并于近期与其它行业合作伙伴共同建立开源安全基金会。作为一项自动测试技术,模糊测试(Fuzing)能够向目标程序馈送意外输入,借此查找其中漏洞。在谷歌,我们一直大规模使用模糊测试以发现数以万计的安全漏洞与稳定性错误。今年夏季,作为谷歌开源实习计划的组成部分,我们招聘了50位实习生以协助改善开源生态系统中的模糊测试能力。

模糊测试实习生们主要负责集成新项目,并对OSS-Fuzz中的现有项目加以改进。OSS-Fuzz是我们为开源社区提供的持续模糊测试服务(涵盖350多个项目,22700个漏洞并拥有高达89%的修复率)。凭借相关努力,我们已经在nginx、postgresq、usrsctp以及openexr等多个得到广泛应用的开源库中建立起持续模糊测试体系。

另一组实习生则致力于提高Linux内核的安全水平。作为谷歌打造的内核模糊工具,syzkaller在对各种操作系统进行内核漏洞检测方面发挥着重要作用。实习生们的任务是向syzkaller添加新的描述(包括ip通道、io_uring以及bpf_lsm)、完善接口描述语言并提高内核故障注入功能,借此进一步拓展模糊测试的适用范围。

部分实习生还选择为Android、Chrome等数十亿互联网用户日常使用的开源成果编写模糊测试器。在Android方面,实习生们已经在多个全新领域贡献了一系列新的模糊测试工具-网络协议(例如pppd与dns)、音频编解码器(例如monoblend、g722与android框架)。而在Chrome方面,实习生们改进了DOM、IPC、媒体、扩展等功能层面的现有blackbox模糊器,并给Mojo带来基于libprotobuf的全新模糊器。

最后一批实习生主要研究此前尚未得到充分探索的模糊测试议题,包括模糊测试基准、基于机器学习的模糊测试、差分模糊测试以及简化bazel规则等。

在实习期间,我们的实习生共上报150多个安全漏洞与750个功能bug。鉴于此次尝试取得的巨大成功,我们计划今后每年定期举办模糊测试实习,在协助保护开源生态系统的同时为这些即将投身于开源社区的贡献者介绍模糊测试的重要意义。

原文链接:

https://security.googleblog.com/2020/10/fuzzing-internships-for-open-source.html

声明:本文来自互联网安全内参,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。