主要观点:
- Chrome 从 FreeType 迁移到 Skrifa,Skrifa 用 Rust 编写,可让 Chrome 字体处理更安全、迭代更快。
- FreeType 存在诸多安全问题,如使用不安全语言、项目特定问题、依赖问题等,虽经模糊测试仍有问题漏检,替换为 Rust 可避免多类漏洞。
- Skrifa 是 Chrome 图形库 Skia 的安全替换库,已逐步向用户推出,未来还将用于操作系统字体。
- Skrifa 注重安全性,避免自身不安全代码,借助 bytemuck 处理字节 reinterpretation,同时重视正确性,通过 fauntlet 工具对比输出,进行大量像素比较和模糊测试。
关键信息:
- 发布时间:2025 年 3 月 19 日
- Skrifa 作者:Dominik Röttsches、Rod Sheeter、Chad Brokaw
- Skrifa 基于 Rust,用于替代 FreeType
- FreeType 存在多种安全问题及模糊测试的局限性
- Chrome 迁移过程:2024 年 8 月在 Chrome 128 中为少数字体格式启用 Fontations,2025 年 2 月在 Chrome 133 中用于所有 web 字体等
- Skrifa 注重安全性,避免自身不安全代码,借助 bytemuck,重视正确性,通过 fauntlet 对比,进行模糊测试且未发现安全关键漏洞
重要细节:
- FreeType 用于计算字体指标和加载提示轮廓,在 Chrome 多个系统中使用,存在大量用户暴露风险
- 安全问题类别包括使用不安全语言(如手动内存管理、 unchecked 数组访问、整数溢出、无效类型转换等)、项目特定问题(宏掩盖类型、新代码添漏洞、缺乏测试等)、依赖问题(依赖库存在问题)
- 字体文件复杂,包含多种信息,模糊测试有局限性,如难以达到良好代码覆盖、数据同步难等
- Skia 依赖 FreeType,Skrifa 是其安全替换库,Chrome 团队开发新 Skia 字体后端并逐步推出
- Skrifa 组件设计为不可变,有 700 多个单元测试,通过 fauntlet 工具对比输出,在 Chromium 集成前进行大量像素比较,自 2024 年 6 月持续模糊测试发现 39 个非安全关键漏洞
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。