破碎型
BrokenType 是一组工具,旨在测试字体光栅化软件的稳健性和安全性,特别是容易出现内存损坏问题的代码库(用 C/C++ 和类似语言编写)。它由以下组件组成:
- TrueType 程序生成器- 用于生成随机但有效的 TrueType 程序的 Python 脚本。
- TTF/OTF 变异器- 用 C++ 编写的半“智能”二进制字体文件变异器。
- Windows GDI 的 TTF/OTF 加载程序- 用于使用 Windows GDI / Uniscribe 加载和测试自定义字体的实用程序。
- DirectWrite 的 TTF/OTF 加载程序- 用于使用 Microsoft DirectWrite API 加载和测试自定义字体的实用程序。
- Windows FontSub.dll 的 TTF 加载程序- 用于使用字体子设置库加载和测试自定义字体的实用程序。
- Linux PE loader for FontSub.dll - 适用于 Linux 的最小 PE 加载程序,专为模糊 Windows 子集而定制。
- PDF 字体嵌入器- 用于生成嵌入指定字体并显示其所有字形的 PDF 文档的 Python 脚本。
这些实用程序的描述和使用说明可以在其相应的自述文件中找到。
这些程序和脚本在 2015 年至 2019 年期间成功发现并报告了 Windows 内核( win32k.sys
和atmfd.dll
驱动程序)中存在的字体光栅化代码中的 20 个漏洞、用户模式 Microsoft Uniscribe 库中的 19 个安全漏洞、以及FontSub.dll
库中的 9 个错误和 DirectWrite 中的几个问题。以下 Google 零项目博客文章讨论了模糊测试工作:
- Windows 内核字体模糊测试一年 #1:结果(2016 年 6 月)
- Windows 内核字体模糊测试一年 #2:技术(2016 年 7 月)
- Windows Uniscribe 模糊测试注意事项(2017 年 4 月)
以及 2015 年 9 月在伦敦举行的 44CON 会议上发表的“逆向工程和利用字体光栅化器”演讲。该工具发现的两个最值得注意的问题是 CVE-2015-2426 和 CVE-2015-2455 - OTF 错误与 Hacking Team 泄漏中发现的漏洞发生冲突,以及 TTF 错误与 KeenTeam 的 pwn2own 2015 漏洞发生冲突。
免责声明
这不是 Google 官方产品。