WhatsApp 的工程团队将其媒体处理库从 C++ 重写为 Rust,将代码规模从 16 万行减少至 9 万行,同时引入了内存安全保护机制。该库运行在数十亿台设备上,包括 Android 手机、iPhone、桌面设备、智能手表以及网页浏览器,这使其成为迄今为止规模最大的客户端 Rust 代码部署之一。
这一工作可以追溯到 2015 年的 Stagefright 漏洞事件。当时人们发现攻击者可以将恶意软件隐藏在看似正常的图片或视频文件中。这些恶意文件利用了 Android 媒体库中的漏洞,而像 WhatsApp 这样的应用无法直接修补底层操作系统。那时,WhatsApp 使用一个名为 “wamedia” 的 C++ 库,在发送前对 MP4 文件进行合规性检查。公司意识到,这段代码处理的是来自潜在恶意来源的非可信数据,因此非常适合使用内存安全语言进行重写。

Meta 工程博客 – 安全与隐私专栏
尽管 Meta 此次部署在规模上前所未有,但其策略并非没有先例。Mozilla 的首席工程师 Andrew Lilley Brinker 在 Bluesky 上提到:
很多人知道 Mozilla 在 Rust 早期发展阶段提供了大量资助,但可能不知道,Firefox 第一个上线的 Rust 组件其实是 2016 年的一个 MP4 解析器!
这同样是对 Stagefright 时代所揭示问题的回应——即当 C++ 媒体处理代码在解析非可信二进制数据时,存在固有的安全风险。
WhatsApp 并没有采用渐进式替换方式,而是同时构建了完整的 Rust 版本与原 C++ 版本并行运行。团队通过差分模糊测试以及大量集成测试,验证两个版本之间的兼容性,然后才完成迁移。WhatsApp 软件工程师 Daniel Sommermann 和 Baojun Wang 表示,这种策略不仅带来了性能提升,还降低了内存使用量。
不过,二进制文件大小成为一个现实问题。博客文章提到,Rust 标准库最初增加了文件体积,但并未详细说明解决方案。在 Hacker News 的讨论中,WhatsApp 工程师 Daniel Sommermann 解释道:
“我们在构建系统优化方面投入了大量工作,随着时间推移逐步将体积压缩下来。虽然一开始确实接受了大约 200 KiB 的标准库体积开销。”团队将构建系统从 Gradle、CMake 和 Cargo 迁移到 Buck2。Sommermann 表示,Buck2 “在缩小体积方面帮助巨大,比如改进了 LTO(链接时优化)并使用了最新的 clang 工具链优化。”
该媒体库已经不仅仅用于基础格式校验。WhatsApp 将这一扩展系统命名为 “Kaleidoscope”。它会检测可疑模式,例如:嵌入文件或脚本的 PDF、文件扩展名与实际内容不匹配的文件、伪装成图片的可执行文件等。一旦发现风险内容,系统会在用户界面中发出警告。这些检测无法拦截所有攻击,但能够阻挡许多常见的利用技术。
Meta 表示,这是他们所知规模最大的 Rust 库面向终端用户设备的部署。每个月,这段代码都会通过 WhatsApp、Messenger 和 Instagram 推送到数十亿台设备,包括手机、笔记本电脑、桌面设备、智能手表和各种操作系统上的浏览器。
在 Hacker News 的讨论中,还有人探讨了技术细节。例如,用户 Cong-or 指出二进制体积的重要性:
在服务器环境中,Rust 标准库带来的开销通常不算什么,但当你要向数十亿台移动设备发布软件时,每一个 KB 都至关重要。很高兴看到他们投入资源优化构建工具,而不是简单接受体积膨胀。
另一位用户 storystarling 则强调测试难度:
这种重写工作最难的部分通常不是 Rust 实现本身,而是要保持与旧版解析器在行为上的‘bug 级兼容’。
WhatsApp 的安全策略分为三条路径:尽可能减少攻击面;对仍然使用的 C 和 C++ 代码加强保护(如控制流完整性与强化内存分配器);对于新代码优先使用内存安全语言。使用 C/C++ 的开发者需要接受专门的安全培训,其代码会经过自动化分析工具审查,公司对发现的问题设有严格的修复期限。
Meta 的安全团队正在推动公司内部更多团队采用 Rust,并预计未来几年采用速度将加快。这一趋势也反映了整个行业的发展方向。谷歌在 2025 年 11 月的安全博客中表示,Android 中 Rust 代码的引入,使内存安全漏洞占比从 2019 年的 76% 降至 2025 年底的不足 20%,公司将这一变化直接归因于用 Rust 替代新代码中的 C 和 C++。Chrome 已经在字体渲染和图像解码模块中使用 Rust 库,而 Microsoft 自 2023 年起也开始用 Rust 重写部分 Windows 组件。
原文链接:
https://www.infoq.com/news/2026/02/whatsapp-rust-media-malware/





